\r\n {icon !== undefined ? : null}\r\n {message} \r\n \r\n }\r\n classes={{\r\n root: classes.root + \" \" + classes[color],\r\n message: classes.message,\r\n action: classNames({ [classes.actionRTL]: rtlActive })\r\n }}\r\n action={action}\r\n />\r\n );\r\n}\r\n\r\nSnackbarContent.propTypes = {\r\n message: PropTypes.node.isRequired,\r\n color: PropTypes.oneOf([\"info\", \"success\", \"warning\", \"danger\", \"primary\"]),\r\n close: PropTypes.bool,\r\n icon: PropTypes.object,\r\n rtlActive: PropTypes.bool\r\n};\r\n","export const numberFormat = number => {\r\n let format = ''\r\n if(number){\r\n format = number.toString();\r\n }\r\n\r\n if(format.length > 9){\r\n let l1 = format.slice(-2);\r\n let l2 = format.slice(-4,-2);\r\n let l3 = format.slice(-7,-4);\r\n let l4 = format.slice(-10,-7);\r\n format = \"0 (\" +l4 + \") \"+ l3 + \" \" + l2 +\" \"+ l1;\r\n }\r\n return format\r\n}","export const numberMaskedFormat = number => {\r\n let format = ''\r\n if(number){\r\n format = number.toString();\r\n }\r\n\r\n if(format.length > 9){\r\n let l1 = format.slice(-2);\r\n let l2 = format.slice(-4,-2);\r\n let l3 = format.slice(-7,-5);\r\n let l4 = format.slice(-10,-7);\r\n format = \"0 (\" + l4+ \") \"+ l3 + \"* ** \"+ l1;\r\n }\r\n return format\r\n}","import React, { useEffect, useState, useRef } from 'react'\r\nimport * as twofaServices from '../../_services/twofa'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Box from '@material-ui/core/Box';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport { numberFormat } from 'formats/number';\r\nimport { numberMaskedFormat } from 'formats/number-masked';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n codeInput: {\r\n width: 50,\r\n marginTop: 30,\r\n marginBottom: 30\r\n },\r\n resize: {\r\n fontSize: 20,\r\n textAlign: \"center\",\r\n },\r\n indicator: {\r\n height: 300,\r\n display: 'flex',\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n },\r\n phoneInput: {\r\n width: '70%',\r\n marginLeft: \"15%\",\r\n marginTop: 30,\r\n marginBottom: 30\r\n }\r\n}));\r\n\r\nconst TwofaDialog = props => {\r\n const [Retry, SetRetry] = useState(0)\r\n const [_type, _setType] = useState(0)\r\n const [Otp1, SetOtp1] = useState('')\r\n const [Otp2, SetOtp2] = useState('')\r\n const [Otp3, SetOtp3] = useState('')\r\n const [Otp4, SetOtp4] = useState('')\r\n const [alert, setAlert] = useState('')\r\n const [currentCount, setCount] = useState(0);\r\n const [Msisdn, SetMsisdn] = useState('')\r\n const [people, setPeople] = useState([])\r\n const { open, user, action, userData, canceltwofa, purpose, purposeServiceType } = props\r\n const [referenceCode, setReferenceCode] = useState('')\r\n const classes = useStyles();\r\n\r\n const { sessionId, contextSessionId } = user\r\n\r\n const ref1 = useRef(1)\r\n const ref2 = useRef(2)\r\n const ref3 = useRef(3)\r\n const ref4 = useRef(4)\r\n\r\n const timer = () => setCount(currentCount - 1);\r\n\r\n useEffect(\r\n () => {\r\n if (currentCount <= 0) {\r\n return;\r\n }\r\n const id = setInterval(timer, 1000);\r\n return () => clearInterval(id);\r\n },\r\n [currentCount]\r\n );\r\n\r\n const OtpSms = (q) => {\r\n const data = {\r\n sessionId, contextSessionId, Retry,\r\n ...q\r\n }\r\n _setType(0)\r\n twofaServices.twoFactorAuthOtpSms(data)\r\n .then(res => {\r\n if (res) {\r\n if (res.status && res.status !== 200) {\r\n setAlert('OTP SMS\\'i gönderilirken bir hata oluştu. > ' + (res.status ? ' HTTP Kod: ' + res.status : '') + (res.message ? ', HTTPMesaj: ' + res.message : ''))\r\n }\r\n else {\r\n if (res.data && res.data.result) {\r\n if (res.data.result.resultCode === 0) {\r\n if (res.data.actionResultInfo) {\r\n if (!res.data.actionResultInfo.result || res.data.actionResultInfo.result.resultCode === 0) {\r\n _setType(1)\r\n setCount(90)\r\n setReferenceCode(res.data.actionResultInfo.userInfo.otpSmsParams.referenceCode)\r\n }\r\n else {\r\n setAlert('OTP SMS\\'i gönderilirken bir hata oluştu. > ' + (res.data.actionResultInfo.result.resultCode ? ' Kod: ' + res.data.actionResultInfo.result.resultCode.toString() : '') + (res.data.actionResultInfo.result.resultDescription ? ', Mesaj: ' + res.data.actionResultInfo.result.resultDescription : ''))\r\n }\r\n }\r\n }\r\n else {\r\n setAlert('OTP SMS\\'i gönderilirken bir hata oluştu. > ' + (res.data.resultCode ? ' Kod: ' + res.data.resultCode : '') + (res.data.resultUserFriendlyDescription ? ', Mesaj: ' + res.data.resultUserFriendlyDescription : (res.data.resultDescription ? ', Mesaj: ' + res.data.resultDescription : '')))\r\n }\r\n }\r\n else {\r\n setAlert('OTP SMS\\'i gönderilirken bir hata oluştu. > Dönen yanıtta veri boş.')\r\n }\r\n }\r\n }\r\n else {\r\n setAlert('OTP SMS\\'i gönderilirken bir hata oluştu. > Yanıt boş.')\r\n }\r\n })\r\n .catch(err => {\r\n setAlert('OTP SMS\\'i gönderilirken bir hata oluştu. Internet bağlantınızı kontrol ediniz.' + (err && err.message ? ' Hata: ' + err.message : ''))\r\n })\r\n }\r\n\r\n const resultDesicion = (data) => {\r\n switch (data.actionName) {\r\n case 'OtpSms':\r\n OtpSms({})\r\n break\r\n case \"AuthorizedPhoneSelect\":\r\n setPeople(data.userInfo ? data.userInfo.authorizedPersons : \"\")\r\n _setType(3)\r\n break\r\n case \"AuthorizedPhoneEnter\":\r\n _setType(2)\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (sessionId && contextSessionId && open) {\r\n const data = { sessionId, contextSessionId, purpose: purpose || 'Login', purposeServiceType }\r\n _setType(0)\r\n twofaServices.twoFactorAuthStart(data)\r\n .then(res => {\r\n if (res) {\r\n if (res.status && res.status !== 200) {\r\n setAlert('Doğrulama başlatılırken bir hata oluştu. > ' + (res.status ? ' HTTP Kod: ' + res.status : '') + (res.message ? ', HTTP Mesaj: ' + res.message : ''))\r\n }\r\n else {\r\n if (res.data && res.data.result) {\r\n if (res.data.result.resultCode === 0) {\r\n if (res.data.actionResultInfo) {\r\n if (!res.data.actionResultInfo.result || res.data.actionResultInfo.result.resultCode === 0) {\r\n resultDesicion(res.data.actionResultInfo)\r\n }\r\n else {\r\n setAlert(res.data.actionResultInfo.result.resultCode.toString() + ' - ' + res.data.actionResultInfo.result.resultDescription)\r\n }\r\n }\r\n }\r\n else {\r\n setAlert('Doğrulama başlatılırken bir hata oluştu. > ' + (res.data.result.resultCode ? ' Kod: ' + res.data.result.resultCode : '') + (res.data.result.resultUserFriendlyDescription ? ', Mesaj: ' + res.data.result.resultUserFriendlyDescription : (res.data.result.resultDescription ? ', Mesaj: ' + res.data.result.resultDescription : '')))\r\n }\r\n }\r\n else {\r\n setAlert('Doğrulama başlatılırken bir hata oluştu. > Dönen yanıtta veri boş.')\r\n }\r\n }\r\n }\r\n else {\r\n setAlert('Doğrulama başlatılırken bir hata oluştu. > Yanıt boş.')\r\n }\r\n })\r\n .catch(err => setAlert('Doğrulama başlatılırken bir hata oluştu. Internet bağlantınızı kontrol ediniz.' + (err && err.message ? ' Hata: ' + err.message : '')))\r\n }\r\n }, [sessionId, contextSessionId, open])\r\n\r\n const toggle = () => {\r\n\r\n }\r\n\r\n const handleReadyToOtp = () => {\r\n if (Msisdn.length === 10) {\r\n const data = { sessionId, contextSessionId, Msisdn }\r\n _setType(0)\r\n twofaServices.twoFactorAuthEnterPhone(data)\r\n .then(res => {\r\n if (res) {\r\n if (res.status && res.status !== 200) {\r\n setAlert('Girilen numara üzerinden doğrulama yapılırken bir hata oluştu. > ' + (res.status ? ' HTTP Kod: ' + res.status : '') + (res.message ? ', HTTP Mesaj: ' + res.message : ''))\r\n }\r\n else {\r\n if (res.data && res.data.result) {\r\n if (res.data.result.resultCode === 0) {\r\n if (res.data.actionResultInfo) {\r\n if (!res.data.actionResultInfo.result || res.data.actionResultInfo.result.resultCode === 0) {\r\n OtpSms({ Msisdn })\r\n }\r\n else {\r\n setAlert(res.data.actionResultInfo.result.resultCode.toString() + ' - ' + res.data.actionResultInfo.result.resultDescription)\r\n }\r\n }\r\n }\r\n else {\r\n setAlert('Girilen numara üzerinden doğrulama yapılırken bir hata oluştu. > ' + (res.data.resultCode ? ' Kod: ' + res.data.resultCode : '') + (res.data.resultUserFriendlyDescription ? ', Mesaj: ' + res.data.resultUserFriendlyDescription : (res.data.resultDescription ? ', Mesaj: ' + res.data.resultDescription : '')))\r\n }\r\n }\r\n else {\r\n setAlert('Girilen numara üzerinden doğrulama yapılırken bir hata oluştu. > Dönen yanıtta veri boş.')\r\n }\r\n }\r\n }\r\n else {\r\n setAlert('Girilen numara üzerinden doğrulama yapılırken bir hata oluştu. > Yanıt boş.')\r\n }\r\n })\r\n .catch(err => setAlert('Girilen numara üzerinden doğrulama yapılırken bir hata oluştu. Internet bağlantınızı kontrol ediniz.' + (err && err.message ? ' Hata: ' + err.message : '')))\r\n } else {\r\n setAlert('Lütfen girdiğiniz telefon numarasını kontrol ediniz. 10 haneli, 5XXXXXXXXX formatında yurt içi numarası giriniz.')\r\n }\r\n\r\n }\r\n\r\n const handleOtpKeyDown = (e) => {\r\n if (e.keyCode === 13) {\r\n handleSubmit()\r\n }\r\n }\r\n\r\n const handleSubmit = () => {\r\n const data = {\r\n sessionId, contextSessionId,\r\n Otp1,\r\n Otp2,\r\n Otp3,\r\n Otp4\r\n }\r\n _setType(0)\r\n twofaServices.twoFactorAuthOtpSmsSubmit(data)\r\n .then(res => {\r\n if (res) {\r\n if (res.status && res.status !== 200) {\r\n setAlert('Doğrulama yapılırken bir hata oluştu. > ' + (res.status ? ' HTTP Kod: ' + res.status : '') + (res.message ? ', HTTP Mesaj: ' + res.message : ''))\r\n }\r\n else {\r\n if (res.data && res.data.result) {\r\n if (res.data.result.resultCode === 0) {\r\n if (res.data.actionResultInfo) {\r\n if (res.data.actionResultInfo.result && res.data.actionResultInfo.result.resultCode === 0) {\r\n SetRetry(0)\r\n _setType(0)\r\n SetOtp1('')\r\n SetOtp2('')\r\n SetOtp3('')\r\n SetOtp4('')\r\n setAlert('')\r\n setCount(0);\r\n SetMsisdn('')\r\n setPeople([])\r\n setReferenceCode('')\r\n action(userData)\r\n } else {\r\n SetOtp1('')\r\n SetOtp2('')\r\n SetOtp3('')\r\n SetOtp4('')\r\n setAlert(res.data.actionResultInfo.result.resultCode.toString() + ' - ' + res.data.actionResultInfo.result.resultDescription)\r\n }\r\n }\r\n }\r\n else {\r\n setAlert('Doğrulama yapılırken bir hata oluştu. > ' + (res.data.resultCode ? ' Kod: ' + res.data.resultCode : '') + (res.data.resultUserFriendlyDescription ? ', Mesaj: ' + res.data.resultUserFriendlyDescription : (res.data.resultDescription ? ', Mesaj: ' + res.data.resultDescription : '')))\r\n }\r\n }\r\n else {\r\n setAlert('Doğrulama yapılırken bir hata oluştu. > Dönen yanıtta veri boş.')\r\n }\r\n }\r\n }\r\n else {\r\n setAlert('Doğrulama yapılırken bir hata oluştu. > Yanıt boş.')\r\n }\r\n })\r\n .catch(err => {\r\n _setType(1)\r\n setAlert('Doğrulama yapılırken bir hata oluştu. Internet bağlantınızı kontrol ediniz.' + (err && err.message ? ' Hata: ' + err.message : ''))\r\n })\r\n }\r\n\r\n const fixAuth = pos => {\r\n switch (pos) {\r\n case 0:\r\n return 'Hesap Yetkilisi'\r\n case 1:\r\n return 'Kullanıcı Yetkilisi'\r\n case 2:\r\n return 'Kullanıcı Grubu Yöneticisi'\r\n default:\r\n return 'Bilinmiyor'\r\n }\r\n }\r\n\r\n const personOptions = (people) => {\r\n return (people.map(person => {\r\n return (\r\n \r\n {numberMaskedFormat(person.mobilePhoneNumber || '')} - {person.nameSurname} - {fixAuth(person.entityLevel)}\r\n \r\n )\r\n }))\r\n }\r\n\r\n return (\r\n \r\n İki Adımlı Doğrulama {purpose} \r\n \r\n \r\n {_type === 0 &&\r\n \r\n \r\n \r\n \r\n {alert !== '' &&\r\n \r\n }\r\n \r\n }\r\n {_type === 1 &&\r\n \r\n \r\n Tek Kullanımlık Şifre\r\n \r\n \r\n {Msisdn ? `${numberMaskedFormat(Msisdn)} numarasına` : 'Telefonunuza'} {referenceCode === '' ? '' : `${referenceCode} referans koduyla`} gelen tek kullanımlık şifrenizi giriniz.\r\n \r\n {alert !== '' &&\r\n \r\n }\r\n \r\n \r\n \r\n {\r\n SetOtp1('')\r\n SetOtp2('')\r\n SetOtp3('')\r\n SetOtp4('')\r\n }\r\n } fullWidth value={Otp1} onChange={e => {\r\n setAlert('')\r\n ref2.current.focus()\r\n SetOtp1(e.target.value)\r\n }}\r\n InputProps={{\r\n classes: {\r\n input: classes.resize,\r\n },\r\n }}\r\n />\r\n \r\n \r\n {\r\n SetOtp2('')\r\n SetOtp3('')\r\n SetOtp4('')\r\n }\r\n } fullWidth value={Otp2} onChange={e => {\r\n ref3.current.focus()\r\n SetOtp2(e.target.value)\r\n }}\r\n InputProps={{\r\n classes: {\r\n input: classes.resize,\r\n },\r\n }}\r\n />\r\n \r\n \r\n {\r\n SetOtp3('')\r\n SetOtp4('')\r\n }\r\n } fullWidth value={Otp3} onChange={e => {\r\n ref4.current.focus()\r\n SetOtp3(e.target.value)\r\n }}\r\n InputProps={{\r\n classes: {\r\n input: classes.resize,\r\n },\r\n }}\r\n />\r\n \r\n \r\n {\r\n SetOtp4('')\r\n }\r\n } fullWidth value={Otp4} onChange={e => e.target.value.length > 0 ? SetOtp4(e.target.value[e.target.value.length - 1]) : SetOtp4('')}\r\n InputProps={{\r\n classes: {\r\n input: classes.resize,\r\n },\r\n onKeyDown: handleOtpKeyDown\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n canceltwofa()\r\n SetRetry(0)\r\n _setType(0)\r\n SetOtp1('')\r\n SetOtp2('')\r\n SetOtp3('')\r\n SetOtp4('')\r\n setAlert('')\r\n setCount(0);\r\n SetMsisdn('')\r\n setPeople([])\r\n setReferenceCode('')\r\n }}> Vazgeç \r\n \r\n {currentCount === 0\r\n ? \r\n {\r\n SetRetry(Retry + 1)\r\n OtpSms({ Retry: Retry + 1 })\r\n }}> Tekrar Gönder \r\n \r\n : \r\n Gönder \r\n \r\n }\r\n \r\n \r\n }\r\n {_type === 2 &&\r\n \r\n \r\n Yetkili GSM Numarası\r\n \r\n \r\n Lütfen doğrulama yapmak için yetkili GSM numarası giriniz.\r\n \r\n {alert !== '' &&\r\n \r\n }\r\n \r\n \r\n\r\n \r\n \r\n SetMsisdn(e.target.value)}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n {\r\n canceltwofa()\r\n SetRetry(0)\r\n _setType(0)\r\n SetOtp1('')\r\n SetOtp2('')\r\n SetOtp3('')\r\n SetOtp4('')\r\n setAlert('')\r\n setCount(0);\r\n SetMsisdn('')\r\n setPeople([])\r\n setReferenceCode('')\r\n }}> Vazgeç \r\n \r\n \r\n Gönder \r\n \r\n \r\n \r\n }\r\n {_type === 3 &&\r\n \r\n \r\n Yetkili GSM Numarası\r\n \r\n \r\n Lütfen doğrulama yapmak için yetkili GSM numarası giriniz.\r\n \r\n {alert !== '' &&\r\n \r\n }\r\n \r\n \r\n\r\n \r\n \r\n SetMsisdn(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Kişi Seçiniz. \r\n {personOptions(people)}\r\n \r\n \r\n \r\n\r\n \r\n \r\n {\r\n canceltwofa()\r\n SetRetry(0)\r\n _setType(0)\r\n SetOtp1('')\r\n SetOtp2('')\r\n SetOtp3('')\r\n SetOtp4('')\r\n setAlert('')\r\n setCount(0);\r\n SetMsisdn('')\r\n setPeople([])\r\n setReferenceCode('')\r\n }}> Vazgeç \r\n \r\n \r\n Gönder \r\n \r\n \r\n \r\n }\r\n \r\n \r\n\r\n \r\n \r\n \r\n {/* \r\n Devam Et\r\n */}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default TwofaDialog","import { domain } from './domain'\r\nimport axios from 'axios'\r\n\r\nexport const twoFactorAuthStart = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/Authentication/TwoFactorAuthStart', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const twoFactorAuthOtpSms = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/Authentication/TwoFactorAuthOtpSms', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const twoFactorAuthOtpSmsSubmit = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/Authentication/TwoFactorAuthOtpSmsSubmit', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\n\r\nexport const twoFactorAuthEnterPhone = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/Authentication/TwoFactorAuthEnterPhone', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}","import {\r\n whiteColor,\r\n roseBoxShadow,\r\n defaultFont,\r\n blackColor,\r\n grayColor,\r\n hexToRgb,\r\n codec\r\n} from \"assets/jss/material-dashboard-react.js\";\r\n\r\nconst dropdownStyle = theme => ({\r\n buttonLink: {\r\n [theme.breakpoints.down(\"md\")]: {\r\n display: \"flex\",\r\n marginLeft: \"30px\",\r\n width: \"auto\"\r\n }\r\n },\r\n links: {\r\n width: \"20px\",\r\n height: \"20px\",\r\n zIndex: \"4\",\r\n [theme.breakpoints.down(\"md\")]: {\r\n display: \"block\",\r\n width: \"30px\",\r\n height: \"30px\",\r\n color: grayColor[9],\r\n marginRight: \"15px\"\r\n }\r\n },\r\n linkText: {\r\n zIndex: \"4\",\r\n ...defaultFont,\r\n fontSize: \"14px\"\r\n },\r\n popperClose: {\r\n pointerEvents: \"none\"\r\n },\r\n popperResponsive: {\r\n [theme.breakpoints.down(\"md\")]: {\r\n zIndex: \"1640\",\r\n position: \"static\",\r\n float: \"none\",\r\n width: \"auto\",\r\n marginTop: \"0\",\r\n backgroundColor: \"transparent\",\r\n border: \"0\",\r\n WebkitBoxShadow: \"none\",\r\n boxShadow: \"none\",\r\n color: \"black\"\r\n }\r\n },\r\n popperNav: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n position: \"static !important\",\r\n left: \"unset !important\",\r\n top: \"unset !important\",\r\n transform: \"none !important\",\r\n willChange: \"unset !important\",\r\n \"& > div\": {\r\n boxShadow: \"none !important\",\r\n marginLeft: \"0rem\",\r\n marginRight: \"0rem\",\r\n transition: \"none !important\",\r\n marginTop: \"0px !important\",\r\n marginBottom: \"0px !important\",\r\n padding: \"0px !important\",\r\n backgroundColor: \"transparent !important\",\r\n \"& ul li\": {\r\n color: whiteColor + \" !important\",\r\n margin: \"10px 15px 0!important\",\r\n padding: \"10px 15px !important\",\r\n \"&:hover\": {\r\n backgroundColor: \"hsla(0,0%,78%,.2)\",\r\n boxShadow: \"none\"\r\n }\r\n }\r\n }\r\n }\r\n },\r\n dropdown: {\r\n borderRadius: \"3px\",\r\n border: \"0\",\r\n boxShadow: \"0 2px 5px 0 rgba(\" + hexToRgb(blackColor) + \", 0.26)\",\r\n top: \"100%\",\r\n zIndex: \"1000\",\r\n minWidth: \"160px\",\r\n padding: \"5px 0\",\r\n margin: \"2px 0 0\",\r\n fontSize: \"14px\",\r\n textAlign: \"left\",\r\n listStyle: \"none\",\r\n backgroundColor: whiteColor,\r\n WebkitBackgroundClip: \"padding-box\",\r\n backgroundClip: \"padding-box\"\r\n },\r\n dropdownItem: {\r\n ...defaultFont,\r\n fontSize: \"13px\",\r\n padding: \"10px 20px\",\r\n margin: \"0 5px\",\r\n borderRadius: \"2px\",\r\n WebkitTransition: \"all 150ms linear\",\r\n MozTransition: \"all 150ms linear\",\r\n OTransition: \"all 150ms linear\",\r\n MsTransition: \"all 150ms linear\",\r\n transition: \"all 150ms linear\",\r\n display: \"block\",\r\n clear: \"both\",\r\n fontWeight: \"400\",\r\n lineHeight: \"1.42857143\",\r\n color: grayColor[8],\r\n whiteSpace: \"nowrap\",\r\n height: \"unset\",\r\n minHeight: \"unset\",\r\n \"&:hover\": {\r\n backgroundColor: codec,\r\n color: whiteColor,\r\n ...roseBoxShadow\r\n }\r\n }\r\n});\r\n\r\nexport default dropdownStyle;\r\n","import {\r\n defaultFont,\r\n dangerColor,\r\n whiteColor\r\n} from \"assets/jss/material-dashboard-react.js\";\r\n\r\nimport dropdownStyle from \"assets/jss/material-dashboard-react/dropdownStyle.js\";\r\n\r\nconst headerLinksStyle = theme => ({\r\n ...dropdownStyle(theme),\r\n search: {\r\n \"& > div\": {\r\n marginTop: \"0\"\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n margin: \"10px 15px !important\",\r\n float: \"none !important\",\r\n paddingTop: \"1px\",\r\n paddingBottom: \"1px\",\r\n padding: \"0!important\",\r\n width: \"60%\",\r\n marginTop: \"40px\",\r\n \"& input\": {\r\n color: whiteColor\r\n }\r\n }\r\n },\r\n linkText: {\r\n zIndex: \"4\",\r\n ...defaultFont,\r\n fontSize: \"14px\",\r\n margin: \"0px\"\r\n },\r\n buttonLink: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"flex\",\r\n margin: \"10px 15px 0\",\r\n width: \"-webkit-fill-available\",\r\n \"& svg\": {\r\n width: \"24px\",\r\n height: \"30px\",\r\n marginRight: \"15px\",\r\n marginLeft: \"-15px\"\r\n },\r\n \"& .fab,& .fas,& .far,& .fal,& .material-icons\": {\r\n fontSize: \"24px\",\r\n lineHeight: \"30px\",\r\n width: \"24px\",\r\n height: \"30px\",\r\n marginRight: \"15px\",\r\n marginLeft: \"-15px\"\r\n },\r\n \"& > span\": {\r\n justifyContent: \"flex-start\",\r\n width: \"100%\"\r\n }\r\n }\r\n },\r\n searchButton: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n top: \"-50px !important\",\r\n marginRight: \"22px\",\r\n float: \"right\"\r\n }\r\n },\r\n margin: {\r\n zIndex: \"4\",\r\n margin: \"0\"\r\n },\r\n searchIcon: {\r\n width: \"17px\",\r\n zIndex: \"4\"\r\n },\r\n notifications: {\r\n zIndex: \"4\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n position: \"absolute\",\r\n top: \"2px\",\r\n border: \"1px solid \" + whiteColor,\r\n right: \"4px\",\r\n fontSize: \"9px\",\r\n background: dangerColor[0],\r\n color: whiteColor,\r\n minWidth: \"16px\",\r\n height: \"16px\",\r\n borderRadius: \"10px\",\r\n textAlign: \"center\",\r\n lineHeight: \"16px\",\r\n verticalAlign: \"middle\",\r\n display: \"block\"\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n ...defaultFont,\r\n fontSize: \"14px\",\r\n marginRight: \"8px\"\r\n }\r\n },\r\n manager: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\"\r\n },\r\n display: \"inline-block\"\r\n },\r\n searchWrapper: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"-webkit-fill-available\",\r\n margin: \"10px 15px 0\"\r\n },\r\n display: \"inline-block\"\r\n }\r\n});\r\n\r\nexport default headerLinksStyle;\r\n","import React, { useState } from 'react'\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\nimport { connect } from 'react-redux'\r\nimport { canceltwofasms, activateTwofa } from '../../_actions/twofa'\r\nimport { changePassword } from '../../_services/user'\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport TwofaDialog from \"components/Twofa/TwofaDialog.js\";\r\nimport Swal from 'sweetalert2'\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\n\r\nimport VisibilityIcon from '@material-ui/icons/Visibility';\r\nimport VisibilityOffIcon from '@material-ui/icons/VisibilityOff';\r\nimport styles from \"assets/jss/material-dashboard-react/components/headerLinksStyle.js\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst ChangePasswordDialog = props => {\r\n const [ twofaSuccess, setTwofaSuccess ] = useState(false)\r\n const [ OldPassword, SetOldPassword ] = useState('')\r\n const [ NewPasswordRepeat, SetNewPasswordRepeat ] = useState('')\r\n const [ NewPassword, SetNewPassword ] = useState('')\r\n const [ alert, setAlert ] = useState('')\r\n const [ visible, setVisible ] = useState(false)\r\n const classes = useStyles();\r\n\r\n const { open, toggle, sessionId, contextSessionId, dispatch } = props\r\n\r\n const lowerCaseRegex = new RegExp(\"^(?=.*[a-z])\");\r\n const upperCaseRegex = new RegExp(\"^(?=.*[A-Z])\");\r\n const numberRegex = new RegExp(\"^(?=.*[0-9])\");\r\n const specialCharRegex = new RegExp(\"^(?=.*[:,.?!@#\\$%&\\*_+=-])\");\r\n\r\n const success = () => {\r\n dispatch(canceltwofasms())\r\n setAlert('')\r\n const data = {\r\n sessionId, contextSessionId,\r\n OldPassword, NewPassword\r\n }\r\n setTwofaSuccess(true)\r\n changePassword(data)\r\n .then(res => {\r\n if(res.data.resultCode === 0){\r\n toggle()\r\n SetOldPassword('')\r\n SetNewPassword('')\r\n SetNewPasswordRepeat('')\r\n setTwofaSuccess(false)\r\n Swal.fire({\r\n icon : \"success\",\r\n title: \"Şifreniz değiştirildi. Artık giriş yaparken yeni şifrenizi kullanabilirsiniz.\"\r\n })\r\n }else{\r\n setAlert(res.data.resultDescription)\r\n }\r\n }) \r\n .catch(err => setAlert('Bir hata oluştu! Internet bağlantınızı kontrol ediniz.' + (err && err.message ? ' Hata: ' + err.message : '')))\r\n }\r\n\r\n const handleSubmit = () => {\r\n let test = true\r\n if(NewPassword.length < 8 || NewPassword.length > 15){\r\n test = false\r\n setAlert('Yeni şifreniz en az 8 en fazla 15 karakterden oluşmalıdır.')\r\n return\r\n }\r\n if(!lowerCaseRegex.test(NewPassword)){\r\n test = false\r\n setAlert('Yeni şifreniz a-z gibi bir küçük harf içermelidir.')\r\n return\r\n }\r\n if(!upperCaseRegex.test(NewPassword)){\r\n test = false\r\n setAlert('Yeni şifreniz A-Z gibi bir büyük harf içermelidir.')\r\n return\r\n }\r\n if(!numberRegex.test(NewPassword)){\r\n test = false\r\n setAlert('Yeni şifreniz 0-9 gibi bir rakam içermelidir.')\r\n return\r\n }\r\n if(!specialCharRegex.test(NewPassword)){\r\n test = false\r\n setAlert('Yeni şifreniz \":,.?!@#$%&*_=-\" gibi bir özel karakter içermelidir.')\r\n return\r\n }\r\n if(OldPassword.length === ''){\r\n test = false\r\n setAlert('Mevcut şifrenizi giriniz.')\r\n return\r\n }\r\n if(OldPassword === NewPassword){\r\n test = false\r\n setAlert('Eski şifrenizle yeni şifreniz aynı olamaz. Lütfen yeni şifrenizi eskisinden farklı olacak şekilde giriniz.')\r\n return \r\n }\r\n if(test){\r\n if(twofaSuccess){\r\n success()\r\n }else{\r\n dispatch(activateTwofa())\r\n }\r\n }\r\n }\r\n\r\n const handleVisibility = () => {\r\n setVisible(!visible)\r\n }\r\n\r\n return(\r\n { \r\n setTwofaSuccess(false)\r\n SetOldPassword('')\r\n SetNewPasswordRepeat('')\r\n SetNewPassword('')\r\n setAlert('')\r\n toggle()\r\n }} aria-labelledby=\"form-dialog-title\">\r\n Şifre Değiştir \r\n \r\n { alert !== '' &&\r\n \r\n }\r\n SetOldPassword(e.target.value),\r\n endAdornment: (\r\n \r\n \r\n \r\n { visible\r\n ? \r\n : \r\n }\r\n \r\n \r\n \r\n )\r\n }}\r\n />\r\n {\r\n SetNewPassword(e.target.value)\r\n if((e.target.value !== NewPasswordRepeat) && (NewPasswordRepeat !== '')){\r\n setAlert('Yeni şifre ve tekrarı uyuşmuyor.')\r\n }else{\r\n setAlert('')\r\n }\r\n },\r\n endAdornment: (\r\n \r\n \r\n \r\n { visible\r\n ? \r\n : \r\n } \r\n \r\n \r\n \r\n )\r\n }}\r\n />\r\n {\r\n SetNewPasswordRepeat(e.target.value)\r\n if(e.target.value !== NewPassword){\r\n setAlert('Yeni şifre ve tekrarı uyuşmuyor.')\r\n }else{\r\n setAlert('')\r\n }\r\n },\r\n endAdornment: (\r\n \r\n \r\n \r\n { visible\r\n ? \r\n : \r\n }\r\n \r\n \r\n \r\n )\r\n }}\r\n />\r\n \r\n \r\n { \r\n setTwofaSuccess(false)\r\n SetOldPassword('')\r\n SetNewPasswordRepeat('')\r\n SetNewPassword('')\r\n setAlert('')\r\n toggle()\r\n }} color=\"danger\">\r\n Vazgeç\r\n \r\n \r\n DEĞİŞTİR\r\n \r\n \r\n success()}\r\n canceltwofa = { () => dispatch(canceltwofasms())}\r\n userData = {props.userReducer.user}\r\n purpose = 'PasswordChange'\r\n />\r\n \r\n )\r\n}\r\n\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer, twofaReducer } = state\r\n const { user } = userReducer\r\n return { twofaReducer, userReducer, user }\r\n}\r\n\r\nexport default connect(mapStateToProps)(ChangePasswordDialog)","import { domain } from './domain'\r\nimport axios from 'axios'\r\n\r\nexport const updateLimit = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/CustomerService/UpdateLimit', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\n// @material-ui/icons\r\nimport Clear from \"@material-ui/icons/Clear\";\r\nimport Check from \"@material-ui/icons/Check\";\r\n// core components\r\nimport styles from \"assets/jss/material-dashboard-react/components/customInputStyle.js\";\r\nimport { TextField } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function CustomTextField(props) {\r\n const classes = useStyles();\r\n const {\r\n formControlProps,\r\n id,\r\n labelProps,\r\n inputProps,\r\n error,\r\n success\r\n } = props;\r\n\r\n const labelClasses = classNames({\r\n [\" \" + classes.labelRootError]: error,\r\n [\" \" + classes.labelRootSuccess]: success && !error\r\n });\r\n const underlineClasses = classNames({\r\n [classes.underlineError]: error,\r\n [classes.underlineSuccess]: success && !error,\r\n [classes.underline]: true\r\n });\r\n const marginTop = classNames({\r\n [classes.marginTop]: true\r\n });\r\n return (\r\n \r\n \r\n {error ? (\r\n \r\n ) : success ? (\r\n \r\n ) : null}\r\n \r\n );\r\n}\r\n\r\nCustomTextField.propTypes = {\r\n labelProps: PropTypes.object,\r\n id: PropTypes.string,\r\n inputProps: PropTypes.object,\r\n formControlProps: PropTypes.object,\r\n error: PropTypes.bool,\r\n success: PropTypes.bool\r\n};\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport InputLabel from \"@material-ui/core/InputLabel\";\r\n// @material-ui/icons\r\nimport Clear from \"@material-ui/icons/Clear\";\r\nimport Check from \"@material-ui/icons/Check\";\r\n// core components\r\nimport styles from \"assets/jss/material-dashboard-react/components/customInputStyle.js\";\r\nimport NumberFormat from \"react-number-format\";\r\nimport { TextField } from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function CustomNumberFormat(props) {\r\n const classes = useStyles();\r\n const {\r\n formControlProps,\r\n labelText,\r\n id,\r\n labelProps,\r\n inputProps,\r\n error,\r\n success\r\n } = props;\r\n\r\n const labelClasses = classNames({\r\n [\" \" + classes.labelRootError]: error,\r\n [\" \" + classes.labelRootSuccess]: success && !error\r\n });\r\n const underlineClasses = classNames({\r\n [classes.underlineError]: error,\r\n [classes.underlineSuccess]: success && !error,\r\n [classes.underline]: true\r\n });\r\n const marginTop = classNames({\r\n [classes.marginTop]: labelText === undefined\r\n });\r\n return (\r\n \r\n {labelText !== undefined ? (\r\n \r\n {labelText}\r\n \r\n ) : null}\r\n \r\n {error ? (\r\n \r\n ) : success ? (\r\n \r\n ) : null}\r\n \r\n );\r\n}\r\n\r\nCustomNumberFormat.propTypes = {\r\n labelText: PropTypes.node,\r\n labelProps: PropTypes.object,\r\n id: PropTypes.string,\r\n inputProps: PropTypes.object,\r\n formControlProps: PropTypes.object,\r\n error: PropTypes.bool,\r\n success: PropTypes.bool\r\n};\r\n","import React, { useState } from 'react'\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\nimport { connect } from 'react-redux'\r\nimport { canceltwofasms, activateTwofa } from '../../_actions/twofa'\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport TwofaDialog from \"components/Twofa/TwofaDialog.js\";\r\nimport Swal from 'sweetalert2'\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\n\r\nimport VisibilityIcon from '@material-ui/icons/Visibility';\r\nimport VisibilityOffIcon from '@material-ui/icons/VisibilityOff';\r\nimport styles from \"assets/jss/material-dashboard-react/components/headerLinksStyle.js\";\r\nimport { updateLimit } from '_services/customer';\r\nimport { TextField } from '@material-ui/core';\r\nimport CustomTextField from 'components/CustomTextField/CustomTextField';\r\nimport CustomNumberFormat from 'components/CustomNumberFormat/CustomNumberFormat';\r\nimport NumberFormat from 'react-number-format';\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst SendingLimitsDialog = props => {\r\n const {user} = props\r\n const [ twofaSuccess, setTwofaSuccess ] = useState(false)\r\n const [ accountMonthlyLimit, SetAccountMonthlyLimit ] = useState(user.user.customerInfo.limit.monthlyLimit)\r\n const [ accountDailyLimit, SetAccountDailyLimit ] = useState(user.user.customerInfo.limit.dailyLimit)\r\n const [ userMonthlyLimit, SetUserMonthlyLimit ] = useState(user.user.userInfo.limit.monthlyLimit)\r\n const [ userDailyLimit, SetUserDailyLimit ] = useState(user.user.userInfo.limit.dailyLimit)\r\n const [ alert, setAlert ] = useState('')\r\n const classes = useStyles();\r\n\r\n const { open, toggle, sessionId, contextSessionId, dispatch } = props\r\n\r\n const lowerCaseRegex = new RegExp(\"^(?=.*[a-z])\");\r\n const upperCaseRegex = new RegExp(\"^(?=.*[A-Z])\");\r\n const numberRegex = new RegExp(\"^(?=.*[0-9])\");\r\n const specialCharRegex = new RegExp(\"^(?=.*[:,.?!@#\\$%&\\*_+=-])\");\r\n\r\n const success = () => {\r\n dispatch(canceltwofasms())\r\n setAlert('')\r\n const data = {\r\n sessionId, contextSessionId,\r\n MonthlyLimit: accountMonthlyLimit, DailyLimit: accountDailyLimit,\r\n EntityType: 'Account'\r\n }\r\n setTwofaSuccess(true)\r\n updateLimit(data)\r\n .then(res => {\r\n if(res.data.resultCode === 0){\r\n user.user.customerInfo.limit.monthlyLimit = accountMonthlyLimit\r\n user.user.customerInfo.limit.dailyLimit = accountDailyLimit\r\n const data = {\r\n sessionId, contextSessionId,\r\n MonthlyLimit: userMonthlyLimit, DailyLimit: userDailyLimit,\r\n EntityType: 'User'\r\n }\r\n updateLimit(data)\r\n .then(res => {\r\n if(res.data.resultCode === 0){\r\n toggle()\r\n user.user.userInfo.limit.monthlyLimit = userMonthlyLimit\r\n user.user.userInfo.limit.dailyLimit = userDailyLimit\r\n setTwofaSuccess(false)\r\n Swal.fire({\r\n icon : \"success\",\r\n title: \"Hesap ve kullanıcınız için SMS gönderim limitleri güncellendi.\"\r\n })\r\n }\r\n })\r\n }else{\r\n setAlert(res.data.resultDescription)\r\n }\r\n }) \r\n .catch(err => setAlert('Bir hata oluştu! Internet bağlantınızı kontrol ediniz.' + (err && err.message ? ' Hata: ' + err.message : '')))\r\n }\r\n\r\n const handleSubmit = () => {\r\n let test = true\r\n \r\n if(test){\r\n if(twofaSuccess){\r\n success()\r\n }else{\r\n dispatch(activateTwofa())\r\n }\r\n }\r\n }\r\n\r\n return(\r\n { \r\n setTwofaSuccess(false)\r\n SetAccountMonthlyLimit(user.user.customerInfo.limit.monthlyLimit)\r\n SetAccountDailyLimit(user.user.customerInfo.limit.dailyLimit)\r\n SetUserMonthlyLimit(user.user.userInfo.limit.monthlyLimit)\r\n SetUserDailyLimit(user.user.userInfo.limit.dailyLimit)\r\n setAlert('')\r\n toggle()\r\n }} aria-labelledby=\"form-dialog-title\">\r\n Hesap/Kullanıcı Günlük ve Aylık SMS Limiti Ayarları \r\n \r\n { alert !== '' &&\r\n \r\n }\r\n {\r\n const { formattedValue, value } = values;\r\n var valueInt = parseInt(value);\r\n SetAccountMonthlyLimit(valueInt);\r\n },\r\n helperText: 'Mevcut kullanım: ' + user.user.customerInfo.limit.spentMonthlyLimit\r\n }}\r\n />\r\n {\r\n const { formattedValue, value } = values;\r\n var valueInt = parseInt(value);\r\n SetAccountDailyLimit(valueInt);\r\n },\r\n helperText: 'Mevcut kullanım: ' + user.user.customerInfo.limit.spentDailyLimit\r\n }}\r\n />\r\n {\r\n const { formattedValue, value } = values;\r\n var valueInt = parseInt(value);\r\n SetUserMonthlyLimit(valueInt);\r\n },\r\n helperText: 'Mevcut kullanım: ' + user.user.userInfo.limit.spentMonthlyLimit\r\n }}\r\n />\r\n {\r\n const { formattedValue, value } = values;\r\n var valueInt = parseInt(value);\r\n SetUserDailyLimit(valueInt);\r\n },\r\n helperText: 'Mevcut kullanım: ' + user.user.userInfo.limit.spentDailyLimit\r\n }}\r\n />\r\n \r\n \r\n { \r\n setTwofaSuccess(false)\r\n SetAccountMonthlyLimit(user.user.customerInfo.limit.monthlyLimit)\r\n SetAccountDailyLimit(user.user.customerInfo.limit.dailyLimit)\r\n SetUserMonthlyLimit(user.user.userInfo.limit.monthlyLimit)\r\n SetUserDailyLimit(user.user.userInfo.limit.dailyLimit)\r\n setAlert('')\r\n toggle()\r\n }} color=\"danger\">\r\n Vazgeç\r\n \r\n \r\n GÜNCELLE\r\n \r\n \r\n success()}\r\n canceltwofa = { () => dispatch(canceltwofasms())}\r\n userData = {props.userReducer.user}\r\n purpose = 'AccountSettingChange'\r\n />\r\n \r\n )\r\n}\r\n\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer, twofaReducer } = state\r\n const { user } = userReducer\r\n return { twofaReducer, userReducer, user }\r\n}\r\n\r\nexport default connect(mapStateToProps)(SendingLimitsDialog)","import React from \"react\";\r\nimport { connect } from 'react-redux'\r\nimport { logout } from '../../_actions/user.js'\r\nimport * as userServices from '../../_services/user.js'\r\nimport classNames from \"classnames\";\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport MenuList from \"@material-ui/core/MenuList\";\r\nimport Grow from \"@material-ui/core/Grow\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\r\nimport Hidden from \"@material-ui/core/Hidden\";\r\nimport Poppers from \"@material-ui/core/Popper\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport ChangePasswordDialog from './ChangePasswordDialog'\r\n\r\n// @material-ui/icons\r\nimport Person from \"@material-ui/icons/Person\";\r\n// core components\r\nimport Button from \"components/CustomButtons/Button.js\";\r\n\r\nimport styles from \"assets/jss/material-dashboard-react/components/headerLinksStyle.js\";\r\nimport SendingLimitsDialog from \"./SendingLimitsDialog.js\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst AdminNavbarLinks = (props) => {\r\n const classes = useStyles();\r\n const [openProfile, setOpenProfile] = React.useState(null);\r\n const [openChangePassword, setOpenChangePassword] = React.useState(false);\r\n const [openSendingLimits, setOpenSendingLimits] = React.useState(false);\r\n\r\n const { dispatch, userReducer } = props\r\n const { user } = userReducer\r\n const { sessionId, contextSessionId } = user\r\n\r\n const handleChangePasswordToggle = () => {\r\n setOpenChangePassword(!openChangePassword)\r\n }\r\n\r\n const handleSendingLimitsToggle = () => {\r\n setOpenSendingLimits(!openSendingLimits)\r\n }\r\n\r\n const handleClickProfile = event => {\r\n if (openProfile && openProfile.contains(event.target)) {\r\n setOpenProfile(null);\r\n } else {\r\n setOpenProfile(event.currentTarget);\r\n }\r\n };\r\n const handleCloseProfile = () => {\r\n setOpenProfile(null);\r\n };\r\n\r\n const handleLogout = () => {\r\n const data = {\r\n sessionId, contextSessionId\r\n }\r\n userServices.logout(data)\r\n .then( res => {\r\n dispatch(logout())\r\n })\r\n .catch( err => {\r\n dispatch(logout())\r\n })\r\n }\r\n\r\n return (\r\n \r\n
\r\n
959 ? \"transparent\" : \"white\"}\r\n justIcon={window.innerWidth > 959}\r\n simple={!(window.innerWidth > 959)}\r\n aria-owns={openProfile ? \"profile-menu-list-grow\" : null}\r\n aria-haspopup=\"true\"\r\n onClick={handleClickProfile}\r\n className={classes.buttonLink}\r\n >\r\n \r\n \r\n Profil
\r\n \r\n \r\n
\r\n {({ TransitionProps, placement }) => (\r\n \r\n )}\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return state\r\n}\r\n\r\nexport default connect(mapStateToProps)(AdminNavbarLinks)\r\n","import {\r\n container,\r\n defaultFont,\r\n primaryColor,\r\n defaultBoxShadow,\r\n infoColor,\r\n successColor,\r\n warningColor,\r\n dangerColor,\r\n whiteColor,\r\n grayColor\r\n} from \"assets/jss/material-dashboard-react.js\";\r\n\r\nconst headerStyle = () => ({\r\n appBar: {\r\n backgroundColor: \"transparent\",\r\n boxShadow: \"none\",\r\n borderBottom: \"0\",\r\n marginBottom: \"0\",\r\n position: \"absolute\",\r\n width: \"100%\",\r\n paddingTop: \"10px\",\r\n zIndex: \"1029\",\r\n color: grayColor[7],\r\n border: \"0\",\r\n borderRadius: \"3px\",\r\n padding: \"10px 0\",\r\n transition: \"all 150ms ease 0s\",\r\n minHeight: \"50px\",\r\n display: \"block\"\r\n },\r\n container: {\r\n ...container,\r\n minHeight: \"50px\"\r\n },\r\n flex: {\r\n flex: 1\r\n },\r\n title: {\r\n ...defaultFont,\r\n letterSpacing: \"unset\",\r\n lineHeight: \"30px\",\r\n fontSize: \"18px\",\r\n borderRadius: \"3px\",\r\n textTransform: \"none\",\r\n color: \"inherit\",\r\n margin: \"0\",\r\n \"&:hover,&:focus\": {\r\n background: \"transparent\"\r\n }\r\n },\r\n appResponsive: {\r\n top: \"8px\"\r\n },\r\n primary: {\r\n backgroundColor: primaryColor[0],\r\n color: whiteColor,\r\n ...defaultBoxShadow\r\n },\r\n info: {\r\n backgroundColor: infoColor[0],\r\n color: whiteColor,\r\n ...defaultBoxShadow\r\n },\r\n success: {\r\n backgroundColor: successColor[0],\r\n color: whiteColor,\r\n ...defaultBoxShadow\r\n },\r\n warning: {\r\n backgroundColor: warningColor[0],\r\n color: whiteColor,\r\n ...defaultBoxShadow\r\n },\r\n danger: {\r\n backgroundColor: dangerColor[0],\r\n color: whiteColor,\r\n ...defaultBoxShadow\r\n }\r\n});\r\n\r\nexport default headerStyle;\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport AppBar from \"@material-ui/core/AppBar\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport Hidden from \"@material-ui/core/Hidden\";\r\n// @material-ui/icons\r\nimport Menu from \"@material-ui/icons/Menu\";\r\n// core components\r\nimport AdminNavbarLinks from \"./AdminNavbarLinks.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\n\r\nimport styles from \"assets/jss/material-dashboard-react/components/headerStyle.js\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function Header(props) {\r\n const classes = useStyles();\r\n function makeBrand() {\r\n var name;\r\n props.routes.map(prop => {\r\n if (window.location.href.indexOf(prop.layout + prop.path) !== -1) {\r\n name = props.rtlActive ? prop.rtlName : prop.name;\r\n }\r\n return null;\r\n });\r\n return name;\r\n }\r\n const { color } = props;\r\n const appBarClasses = classNames({\r\n [\" \" + classes[color]]: color\r\n });\r\n return (\r\n \r\n \r\n \r\n {/* Here we create navbar brand, based on route name */}\r\n \r\n {makeBrand()}\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\nHeader.propTypes = {\r\n color: PropTypes.oneOf([\"primary\", \"info\", \"success\", \"warning\", \"danger\"]),\r\n rtlActive: PropTypes.bool,\r\n handleDrawerToggle: PropTypes.func,\r\n routes: PropTypes.arrayOf(PropTypes.object)\r\n};\r\n","import {\r\n defaultFont,\r\n container,\r\n primaryColor,\r\n grayColor\r\n} from \"assets/jss/material-dashboard-react.js\";\r\n\r\nconst footerStyle = {\r\n block: {\r\n color: \"inherit\",\r\n padding: \"15px\",\r\n textTransform: \"uppercase\",\r\n borderRadius: \"3px\",\r\n textDecoration: \"none\",\r\n position: \"relative\",\r\n display: \"block\",\r\n ...defaultFont,\r\n fontWeight: \"500\",\r\n fontSize: \"12px\"\r\n },\r\n left: {\r\n float: \"left!important\",\r\n display: \"block\"\r\n },\r\n right: {\r\n padding: \"15px 0\",\r\n margin: \"0\",\r\n fontSize: \"14px\",\r\n float: \"right!important\"\r\n },\r\n footer: {\r\n bottom: \"0\",\r\n borderTop: \"1px solid \" + grayColor[11],\r\n padding: \"15px 0\",\r\n ...defaultFont\r\n },\r\n container,\r\n a: {\r\n color: primaryColor,\r\n textDecoration: \"none\",\r\n backgroundColor: \"transparent\"\r\n },\r\n list: {\r\n marginBottom: \"0\",\r\n padding: \"0\",\r\n marginTop: \"0\"\r\n },\r\n inlineBlock: {\r\n display: \"inline-block\",\r\n padding: \"0px\",\r\n width: \"auto\"\r\n }\r\n};\r\nexport default footerStyle;\r\n","export class AppVersion {\r\n static APPVERSION = \"1.1.22\";\r\n static APPDATE = \"2024-03-20\";\r\n static APPTYPE = \"WEB\";\r\n static clientUniqueId = \"\";\r\n}","/*eslint-disable*/\r\nimport React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n// core components\r\nimport styles from \"assets/jss/material-dashboard-react/components/footerStyle.js\";\r\nimport { AppVersion } from \"variables/appVersion\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function Footer(props) {\r\n const classes = useStyles();\r\n return (\r\n \r\n );\r\n}\r\n","import {\r\n defaultFont,\r\n dangerColor,\r\n whiteColor\r\n} from \"assets/jss/material-dashboard-react.js\";\r\n\r\nimport dropdownStyle from \"assets/jss/material-dashboard-react/dropdownStyle.js\";\r\n\r\nconst headerLinksStyle = theme => ({\r\n ...dropdownStyle(theme),\r\n search: {\r\n \"& > div\": {\r\n marginTop: \"0\"\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n margin: \"10px 15px !important\",\r\n float: \"none !important\",\r\n paddingTop: \"1px\",\r\n paddingBottom: \"1px\",\r\n padding: \"0!important\",\r\n width: \"60%\",\r\n marginTop: \"40px\",\r\n \"& input\": {\r\n color: whiteColor\r\n }\r\n }\r\n },\r\n linkText: {\r\n zIndex: \"4\",\r\n ...defaultFont,\r\n fontSize: \"14px\",\r\n margin: \"0px\"\r\n },\r\n buttonLink: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"flex\",\r\n margin: \"10px 15px 0\",\r\n width: \"-webkit-fill-available\",\r\n \"& svg\": {\r\n width: \"24px\",\r\n height: \"30px\",\r\n marginRight: \"15px\",\r\n marginLeft: \"-15px\"\r\n },\r\n \"& .fab,& .fas,& .far,& .fal,& .material-icons\": {\r\n fontSize: \"24px\",\r\n lineHeight: \"30px\",\r\n width: \"24px\",\r\n height: \"30px\",\r\n marginRight: \"15px\",\r\n marginLeft: \"-15px\"\r\n },\r\n \"& > span\": {\r\n justifyContent: \"flex-start\",\r\n width: \"100%\"\r\n }\r\n }\r\n },\r\n searchButton: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n top: \"-50px !important\",\r\n marginRight: \"22px\",\r\n float: \"right\"\r\n }\r\n },\r\n margin: {\r\n zIndex: \"4\",\r\n margin: \"0\"\r\n },\r\n searchIcon: {\r\n width: \"17px\",\r\n zIndex: \"4\"\r\n },\r\n notifications: {\r\n zIndex: \"4\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n position: \"absolute\",\r\n top: \"2px\",\r\n border: \"1px solid \" + whiteColor,\r\n right: \"4px\",\r\n fontSize: \"9px\",\r\n background: dangerColor[0],\r\n color: whiteColor,\r\n minWidth: \"16px\",\r\n height: \"16px\",\r\n borderRadius: \"10px\",\r\n textAlign: \"center\",\r\n lineHeight: \"16px\",\r\n verticalAlign: \"middle\",\r\n display: \"block\"\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n ...defaultFont,\r\n fontSize: \"14px\",\r\n marginRight: \"8px\"\r\n }\r\n },\r\n manager: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\"\r\n },\r\n display: \"inline-block\"\r\n },\r\n searchWrapper: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"-webkit-fill-available\",\r\n margin: \"10px 15px 0\"\r\n },\r\n display: \"inline-block\"\r\n }\r\n});\r\n\r\nexport default headerLinksStyle;\r\n","import React from \"react\";\r\nimport classNames from \"classnames\";\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport MenuList from \"@material-ui/core/MenuList\";\r\nimport Grow from \"@material-ui/core/Grow\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport ClickAwayListener from \"@material-ui/core/ClickAwayListener\";\r\nimport Hidden from \"@material-ui/core/Hidden\";\r\nimport Poppers from \"@material-ui/core/Popper\";\r\n// @material-ui/icons\r\nimport Person from \"@material-ui/icons/Person\";\r\nimport Notifications from \"@material-ui/icons/Notifications\";\r\nimport Dashboard from \"@material-ui/icons/Dashboard\";\r\nimport Search from \"@material-ui/icons/Search\";\r\n// core components\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\n\r\nimport styles from \"assets/jss/material-dashboard-react/components/rtlHeaderLinksStyle.js\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function RTLNavbarLinks() {\r\n const classes = useStyles();\r\n const [open, setOpen] = React.useState(null);\r\n const handleToggle = event => {\r\n if (open && open.contains(event.target)) {\r\n setOpen(null);\r\n } else {\r\n setOpen(event.currentTarget);\r\n }\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(null);\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
959 ? \"transparent\" : \"white\"}\r\n justIcon={window.innerWidth > 959}\r\n simple={!(window.innerWidth > 959)}\r\n aria-label=\"Dashboard\"\r\n className={classes.buttonLink}\r\n >\r\n \r\n \r\n آمارها
\r\n \r\n \r\n
\r\n
959 ? \"transparent\" : \"white\"}\r\n justIcon={window.innerWidth > 959}\r\n simple={!(window.innerWidth > 959)}\r\n aria-owns={open ? \"menu-list-grow\" : null}\r\n aria-haspopup=\"true\"\r\n onClick={handleToggle}\r\n className={classes.buttonLink}\r\n >\r\n \r\n ۵ \r\n \r\n \r\n اعلانها\r\n
\r\n \r\n \r\n
\r\n {({ TransitionProps, placement }) => (\r\n \r\n )}\r\n \r\n
\r\n
959 ? \"transparent\" : \"white\"}\r\n justIcon={window.innerWidth > 959}\r\n simple={!(window.innerWidth > 959)}\r\n aria-label=\"Person\"\r\n className={classes.buttonLink}\r\n >\r\n \r\n \r\n حساب کاربری
\r\n \r\n \r\n
\r\n );\r\n}\r\n","import {\r\n drawerWidth,\r\n transition,\r\n boxShadow,\r\n defaultFont,\r\n primaryColor,\r\n primaryBoxShadow,\r\n infoColor,\r\n successColor,\r\n warningColor,\r\n dangerColor,\r\n whiteColor,\r\n grayColor,\r\n blackColor,\r\n hexToRgb,\r\n codec\r\n} from \"assets/jss/material-dashboard-react.js\";\r\n\r\nconst sidebarStyle = theme => ({\r\n drawerPaper: {\r\n border: \"none\",\r\n position: \"fixed\",\r\n top: \"0\",\r\n bottom: \"0\",\r\n left: \"0\",\r\n zIndex: \"1\",\r\n ...boxShadow,\r\n width: drawerWidth,\r\n [theme.breakpoints.up(\"md\")]: {\r\n width: drawerWidth,\r\n position: \"fixed\",\r\n height: \"100%\"\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: drawerWidth,\r\n ...boxShadow,\r\n position: \"fixed\",\r\n display: \"block\",\r\n top: \"0\",\r\n height: \"100vh\",\r\n right: \"0\",\r\n left: \"auto\",\r\n zIndex: \"1032\",\r\n visibility: \"visible\",\r\n overflowY: \"visible\",\r\n borderTop: \"none\",\r\n textAlign: \"left\",\r\n paddingRight: \"0px\",\r\n paddingLeft: \"0\",\r\n transform: `translate3d(${drawerWidth}px, 0, 0)`,\r\n ...transition\r\n }\r\n },\r\n drawerPaperRTL: {\r\n [theme.breakpoints.up(\"md\")]: {\r\n left: \"auto !important\",\r\n right: \"0 !important\"\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n left: \"0 !important\",\r\n right: \"auto !important\"\r\n }\r\n },\r\n logo: {\r\n position: \"relative\",\r\n padding: \"15px 15px\",\r\n zIndex: \"4\",\r\n \"&:after\": {\r\n content: '\"\"',\r\n position: \"absolute\",\r\n bottom: \"0\",\r\n\r\n height: \"1px\",\r\n right: \"15px\",\r\n width: \"calc(100% - 30px)\",\r\n backgroundColor: \"rgba(\" + hexToRgb(grayColor[6]) + \", 0.3)\"\r\n }\r\n },\r\n logoLink: {\r\n ...defaultFont,\r\n textTransform: \"uppercase\",\r\n padding: \"5px 0\",\r\n display: \"block\",\r\n fontSize: \"18px\",\r\n textAlign: \"left\",\r\n fontWeight: \"400\",\r\n lineHeight: \"30px\",\r\n textDecoration: \"none\",\r\n backgroundColor: \"transparent\",\r\n \"&,&:hover\": {\r\n color: whiteColor\r\n }\r\n },\r\n logoLinkRTL: {\r\n textAlign: \"right\"\r\n },\r\n logoImage: {\r\n width: \"150px\",\r\n display: \"inline-block\",\r\n marginLeft: \"10px\",\r\n marginRight: \"15px\"\r\n },\r\n img: {\r\n width: \"150px\",\r\n top: \"22px\",\r\n position: \"absolute\",\r\n verticalAlign: \"middle\",\r\n border: \"0\"\r\n },\r\n background: {\r\n position: \"absolute\",\r\n zIndex: \"1\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n display: \"block\",\r\n top: \"0\",\r\n left: \"0\",\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center center\",\r\n \"&:after\": {\r\n position: \"absolute\",\r\n zIndex: \"3\",\r\n width: \"100%\",\r\n height: \"100%\",\r\n content: '\"\"',\r\n display: \"block\",\r\n background: blackColor,\r\n opacity: \".8\"\r\n }\r\n },\r\n list: {\r\n marginTop: \"20px\",\r\n paddingLeft: \"0\",\r\n paddingTop: \"0\",\r\n paddingBottom: \"0\",\r\n marginBottom: \"0\",\r\n listStyle: \"none\",\r\n position: \"unset\"\r\n },\r\n item: {\r\n position: \"relative\",\r\n display: \"block\",\r\n textDecoration: \"none\",\r\n \"&:hover,&:focus,&:visited,&\": {\r\n color: whiteColor\r\n }\r\n },\r\n itemLink: {\r\n width: \"auto\",\r\n transition: \"all 300ms linear\",\r\n margin: \"5px 15px 0\",\r\n borderRadius: \"3px\",\r\n position: \"relative\",\r\n display: \"block\",\r\n padding: \"10px 15px\",\r\n backgroundColor: \"transparent\",\r\n ...defaultFont\r\n },\r\n itemIcon: {\r\n width: \"24px\",\r\n height: \"30px\",\r\n fontSize: \"24px\",\r\n lineHeight: \"30px\",\r\n float: \"left\",\r\n marginRight: \"15px\",\r\n textAlign: \"center\",\r\n verticalAlign: \"middle\",\r\n color: \"rgba(\" + hexToRgb(whiteColor) + \", 0.8)\"\r\n },\r\n itemIconRTL: {\r\n marginRight: \"3px\",\r\n marginLeft: \"15px\",\r\n float: \"right\"\r\n },\r\n itemText: {\r\n ...defaultFont,\r\n margin: \"0\",\r\n lineHeight: \"30px\",\r\n fontSize: \"14px\",\r\n color: whiteColor\r\n },\r\n itemTextRTL: {\r\n textAlign: \"right\"\r\n },\r\n whiteFont: {\r\n color: whiteColor\r\n },\r\n purple: {\r\n backgroundColor: primaryColor[0],\r\n ...primaryBoxShadow,\r\n \"&:hover,&:focus\": {\r\n backgroundColor: primaryColor[0],\r\n ...primaryBoxShadow\r\n }\r\n },\r\n blue: {\r\n backgroundColor: codec,\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(codec) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(codec) +\r\n \",.2)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: codec,\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(codec) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(codec) +\r\n \",.2)\"\r\n }\r\n },\r\n green: {\r\n backgroundColor: successColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \",.2)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: successColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(successColor[0]) +\r\n \",.2)\"\r\n }\r\n },\r\n orange: {\r\n backgroundColor: warningColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \",.2)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: warningColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(warningColor[0]) +\r\n \",.2)\"\r\n }\r\n },\r\n red: {\r\n backgroundColor: dangerColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \",.2)\",\r\n \"&:hover,&:focus\": {\r\n backgroundColor: dangerColor[0],\r\n boxShadow:\r\n \"0 12px 20px -10px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \",.28), 0 4px 20px 0 rgba(\" +\r\n hexToRgb(blackColor) +\r\n \",.12), 0 7px 8px -5px rgba(\" +\r\n hexToRgb(dangerColor[0]) +\r\n \",.2)\"\r\n }\r\n },\r\n sidebarWrapper: {\r\n position: \"relative\",\r\n height: \"calc(100vh - 75px)\",\r\n overflow: \"auto\",\r\n width: \"260px\",\r\n zIndex: \"4\",\r\n overflowScrolling: \"touch\"\r\n },\r\n activePro: {\r\n [theme.breakpoints.up(\"md\")]: {\r\n position: \"absolute\",\r\n width: \"100%\",\r\n bottom: \"13px\"\r\n }\r\n }\r\n});\r\n\r\nexport default sidebarStyle;\r\n","export class UserRightVisibility {\r\n static ENUM_USERRIGHTVISIBILITY_UNKNOWN = \"Unknown\";\r\n static ENUM_USERRIGHTVISIBILITY_HIDDEN = \"Hidden\";\r\n static ENUM_USERRIGHTVISIBILITY_VISIBLE = \"Visible\";\r\n static ENUM_USERRIGHTVISIBILITY_ONLYINFO = \"OnlyInfo\";\r\n static ENUM_USERRIGHTVISIBILITY_ONLYDEMO = \"OnlyDemo\";\r\n\r\n\r\n static ID_USERRIGHTVISIBILITY_UNKNOWN = 0;\r\n static ID_USERRIGHTVISIBILITY_HIDDEN = 1;\r\n static ID_USERRIGHTVISIBILITY_VISIBLE = 2;\r\n static ID_USERRIGHTVISIBILITY_ONLYINFO = 3;\r\n static ID_USERRIGHTVISIBILITY_ONLYDEMO = 4;\r\n}","/*eslint-disable*/\r\nimport React from \"react\";\r\nimport classNames from \"classnames\";\r\nimport PropTypes from \"prop-types\";\r\nimport { NavLink } from \"react-router-dom\";\r\n\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Drawer from \"@material-ui/core/Drawer\";\r\nimport Hidden from \"@material-ui/core/Hidden\";\r\nimport List from \"@material-ui/core/List\";\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport ListItemText from \"@material-ui/core/ListItemText\";\r\nimport Icon from \"@material-ui/core/Icon\";\r\n// core components\r\nimport AdminNavbarLinks from \"components/Navbars/AdminNavbarLinks.js\";\r\nimport RTLNavbarLinks from \"components/Navbars/RTLNavbarLinks.js\";\r\n\r\nimport styles from \"assets/jss/material-dashboard-react/components/sidebarStyle.js\";\r\nimport { UserRightVisibility } from \"variables/userRightVisibility\";\r\nimport { connect } from \"react-redux\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst Sidebar = (props) => {\r\n const classes = useStyles();\r\n const { color, logo, image, logoText, routes } = props;\r\n\r\n const SidebarWrapper = (prop) => {\r\n\r\n const whiteFontClasses = classNames({\r\n [\" \" + classes.whiteFont]: true\r\n });\r\n\r\n return (\r\n \r\n Ali Yazici\r\n
\r\n );\r\n }\r\n\r\n // verifies if routeName is the one active (in browser input)\r\n function activeRoute(routeName) {\r\n return window.location.href.indexOf(routeName) > -1 ? true : false;\r\n }\r\n var links = (\r\n \r\n {routes.map((prop, key) => {\r\n var activePro = \" \";\r\n var listItemClasses;\r\n if (prop.path === \"/upgrade-to-pro\") {\r\n activePro = classes.activePro + \" \";\r\n listItemClasses = classNames({\r\n [\" \" + classes[color]]: true\r\n });\r\n } else {\r\n listItemClasses = classNames({\r\n [\" \" + classes[color]]: activeRoute(prop.layout + prop.path)\r\n });\r\n }\r\n const whiteFontClasses = classNames({\r\n [\" \" + classes.whiteFont]: activeRoute(prop.layout + prop.path)\r\n });\r\n return prop.requiredUserRights === undefined || !prop.requiredUserRights || prop.requiredUserRights.length === 0 || prop.requiredUserRights === \"\"\r\n || (prop.requiredUserRights.includes(\"SMS\") && (\r\n props.userReducer.user.user.userRights.serviceRight_SMS == UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE\r\n || props.userReducer.user.user.userRights.serviceRight_SMS == UserRightVisibility.ID_USERRIGHTVISIBILITY_ONLYINFO\r\n || props.userReducer.user.user.userRights.serviceRight_SMS == UserRightVisibility.ID_USERRIGHTVISIBILITY_ONLYDEMO))\r\n || (prop.requiredUserRights.includes(\"PermissionMarketing\") && (\r\n props.userReducer.user.user.userRights.serviceRight_PermissionMarketing == UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE\r\n || props.userReducer.user.user.userRights.serviceRight_PermissionMarketing == UserRightVisibility.ID_USERRIGHTVISIBILITY_ONLYINFO\r\n || props.userReducer.user.user.userRights.serviceRight_PermissionMarketing == UserRightVisibility.ID_USERRIGHTVISIBILITY_ONLYDEMO))\r\n || (prop.requiredUserRights.includes(\"Eposta\") && (\r\n props.userReducer.user.user.userRights.serviceRight_Email == UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE\r\n || props.userReducer.user.user.userRights.serviceRight_Email == UserRightVisibility.ID_USERRIGHTVISIBILITY_ONLYINFO\r\n || props.userReducer.user.user.userRights.serviceRight_Email == UserRightVisibility.ID_USERRIGHTVISIBILITY_ONLYDEMO))\r\n || (prop.requiredUserRights.includes(\"AkilliYetenekler\") && (\r\n props.userReducer.user.user.userRights.serviceRight_SmartCapabilities == UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE\r\n || props.userReducer.user.user.userRights.serviceRight_SmartCapabilities == UserRightVisibility.ID_USERRIGHTVISIBILITY_ONLYINFO\r\n || props.userReducer.user.user.userRights.serviceRight_SmartCapabilities == UserRightVisibility.ID_USERRIGHTVISIBILITY_ONLYDEMO))\r\n || (prop.requiredUserRights.includes(\"MMS\") && (\r\n props.userReducer.user.user.userRights.serviceRight_MMS == UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE\r\n || props.userReducer.user.user.userRights.serviceRight_MMS == UserRightVisibility.ID_USERRIGHTVISIBILITY_ONLYINFO\r\n || props.userReducer.user.user.userRights.serviceRight_MMS == UserRightVisibility.ID_USERRIGHTVISIBILITY_ONLYDEMO))\r\n ?\r\n (\r\n \r\n \r\n {typeof prop.icon === \"string\" ? (\r\n \r\n {prop.icon}\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n ) : null;\r\n })}\r\n
\r\n );\r\n var brand = (\r\n \r\n );\r\n\r\n return (\r\n \r\n
\r\n \r\n {brand}\r\n \r\n {props.rtlActive ?
:
}\r\n {links}\r\n
\r\n {image !== undefined ? (\r\n
\r\n ) : null}\r\n \r\n \r\n
\r\n \r\n {brand}\r\n \r\n {links}
\r\n {image !== undefined ? (\r\n
\r\n ) : null}\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer } = state\r\n const { user } = userReducer\r\n return { userReducer, user }\r\n}\r\n\r\nexport default connect(mapStateToProps)(Sidebar)\r\n\r\nSidebar.propTypes = {\r\n rtlActive: PropTypes.bool,\r\n handleDrawerToggle: PropTypes.func,\r\n bgColor: PropTypes.oneOf([\"purple\", \"blue\", \"green\", \"orange\", \"red\"]),\r\n logo: PropTypes.string,\r\n image: PropTypes.string,\r\n logoText: PropTypes.string,\r\n routes: PropTypes.arrayOf(PropTypes.object),\r\n open: PropTypes.bool\r\n};\r\n","import { domain } from './domain'\r\nimport axios from 'axios'\r\n\r\nexport const getSmsSenderList = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmsService/GetSmsSenderList', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\n\r\nexport const getSmsMessageTemplates = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmsService/GetSmsMessageTemplates', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const saveSmsMessageTemplate = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmsService/SaveSmsMessageTemplate', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const deleteSMSMessageTemplates = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmsService/DeleteSMSMessageTemplates', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getSmsOptMessageTemplateList = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmsService/GetSmsOptMessageTemplateList', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\n\r\nexport const sendingListBuilderClear = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmsService/SendingListBuilderClear', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const sendingListBuilderGetSummary = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmsService/SendingListBuilderGetSummary', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getPhonebookInfo = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmsService/GetPhonebookInfo', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const sendingListBuilderCrud = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmsService/SendingListBuilderCrud', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getPeriodicFirstScheduledDateTime = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmsService/GetPeriodicFirstScheduledDateTime', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const updateSendSmsInfoAndGetSummary = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmsService/UpdateSendSmsInfoAndGetSummary', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const sendSms = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmsService/SendSms', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const setPeriodicSms = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmsService/SetPeriodicSms', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const sendingListBuilderCopy = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmsService/SendingListBuilderCopy', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getIysMessagingParameterList = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmsService/GetIysMessagingParameterList', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}","import {\r\n blackColor,\r\n whiteColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-react.js\";\r\n\r\nconst cardStyle = {\r\n card: {\r\n border: \"0\",\r\n marginBottom: \"30px\",\r\n marginTop: \"30px\",\r\n borderRadius: \"6px\",\r\n color: \"rgba(\" + hexToRgb(blackColor) + \", 0.87)\",\r\n background: whiteColor,\r\n width: \"100%\",\r\n boxShadow: \"0 1px 4px 0 rgba(\" + hexToRgb(blackColor) + \", 0.14)\",\r\n position: \"relative\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n minWidth: \"0\",\r\n wordWrap: \"break-word\",\r\n fontSize: \".875rem\"\r\n },\r\n cardPlain: {\r\n background: \"transparent\",\r\n boxShadow: \"none\"\r\n },\r\n cardProfile: {\r\n marginTop: \"30px\",\r\n textAlign: \"center\"\r\n },\r\n cardChart: {\r\n \"& p\": {\r\n marginTop: \"0px\",\r\n paddingTop: \"0px\"\r\n }\r\n }\r\n};\r\n\r\nexport default cardStyle;\r\n","import React from \"react\";\r\n// nodejs library that concatenates classes\r\nimport classNames from \"classnames\";\r\n// nodejs library to set properties for components\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n// @material-ui/icons\r\n\r\n// core components\r\nimport styles from \"assets/jss/material-dashboard-react/components/cardStyle.js\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function Card(props) {\r\n const classes = useStyles();\r\n const { className, children, plain, profile, chart, ...rest } = props;\r\n const cardClasses = classNames({\r\n [classes.card]: true,\r\n [classes.cardPlain]: plain,\r\n [classes.cardProfile]: profile,\r\n [classes.cardChart]: chart,\r\n [className]: className !== undefined\r\n });\r\n return (\r\n \r\n {children}\r\n
\r\n );\r\n}\r\n\r\nCard.propTypes = {\r\n className: PropTypes.string,\r\n plain: PropTypes.bool,\r\n profile: PropTypes.bool,\r\n chart: PropTypes.bool,\r\n children: PropTypes.node\r\n};\r\n","const cardBodyStyle = {\r\n cardBody: {\r\n padding: \"0.9375rem 20px\",\r\n flex: \"1 1 auto\",\r\n WebkitBoxFlex: \"1\",\r\n position: \"relative\"\r\n },\r\n cardBodyPlain: {\r\n paddingLeft: \"5px\",\r\n paddingRight: \"5px\"\r\n },\r\n cardBodyProfile: {\r\n marginTop: \"15px\"\r\n }\r\n};\r\n\r\nexport default cardBodyStyle;\r\n","import React from \"react\";\r\n// nodejs library that concatenates classes\r\nimport classNames from \"classnames\";\r\n// nodejs library to set properties for components\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n// @material-ui/icons\r\n\r\n// core components\r\nimport styles from \"assets/jss/material-dashboard-react/components/cardBodyStyle.js\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function CardBody(props) {\r\n const classes = useStyles();\r\n const { className, children, plain, profile, ...rest } = props;\r\n const cardBodyClasses = classNames({\r\n [classes.cardBody]: true,\r\n [classes.cardBodyPlain]: plain,\r\n [classes.cardBodyProfile]: profile,\r\n [className]: className !== undefined\r\n });\r\n return (\r\n \r\n {children}\r\n
\r\n );\r\n}\r\n\r\nCardBody.propTypes = {\r\n className: PropTypes.string,\r\n plain: PropTypes.bool,\r\n profile: PropTypes.bool,\r\n children: PropTypes.node\r\n};\r\n","const styles = {\r\n definitionCard : {\r\n\r\n //height : '60vh',\r\n },\r\n definitionCardBody : { \r\n display : \"flex\",\r\n justifyContent : \"center\"\r\n }\r\n}\r\n\r\nexport default styles","export class FileFields {\r\n static ENUM_FIELDTYPE_UNKNOWN = \"Unknown\";\r\n static ENUM_FIELDTYPE_TEXT = \"Text\";\r\n static ENUM_FIELDTYPE_MOBILEPHONE = \"MobilePhone\";\r\n static ENUM_FIELDTYPE_DATETIME = \"DateTime\";\r\n static ENUM_FIELDTYPE_SMSMESSAGE = \"SMSMessage\";\r\n static ENUM_FIELDTYPE_IDENTITYNUMBER = \"IdentityNumber\";\r\n static ENUM_FIELDTYPE_EMAILADDRESS = \"EmailAddress\";\r\n static ENUM_FIELDTYPE_VIRTUAL_ROWINDEX = \"Virtual_RowIndex\";\r\n static ENUM_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEID = \"System_MobilePhoneLastDeviceId\";\r\n static ENUM_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORID = \"System_MobilePhoneLastOperatorId\";\r\n static ENUM_FIELDTYPE_NUMBER = \"Number\";\r\n static ENUM_FIELDTYPE_CURRENCY = \"Currency\";\r\n static ENUM_FIELDTYPE_YESNO = \"YesNo\";\r\n static ENUM_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEIDLASTUPDATEDATE = \"System_MobilePhoneLastDeviceIdLastUpdateDate\";\r\n static ENUM_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORIDLASTUPDATEDATE = \"System_MobilePhoneLastOperatorIdLastUpdateDate\";\r\n static ENUM_FIELDTYPE_UNIQUEIDENTIFIER = \"UniqueIdentifier\";\r\n static ENUM_FIELDTYPE_TAXNUMBER = \"TaxNumber\";\r\n\r\n\r\n static ID_FIELDTYPE_UNKNOWN = 0;\r\n static ID_FIELDTYPE_TEXT = 1;\r\n static ID_FIELDTYPE_MOBILEPHONE = 2;\r\n static ID_FIELDTYPE_DATETIME = 3;\r\n static ID_FIELDTYPE_SMSMESSAGE = 4;\r\n static ID_FIELDTYPE_IDENTITYNUMBER = 5;\r\n static ID_FIELDTYPE_EMAILADDRESS = 9;\r\n static ID_FIELDTYPE_VIRTUAL_ROWINDEX = 6;\r\n static ID_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEID = 7;\r\n static ID_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORID = 8;\r\n static ID_FIELDTYPE_NUMBER = 10;\r\n static ID_FIELDTYPE_CURRENCY = 11;\r\n static ID_FIELDTYPE_YESNO = 12;\r\n static ID_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEIDLASTUPDATEDATE = 13;\r\n static ID_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORIDLASTUPDATEDATE = 14;\r\n static ID_FIELDTYPE_UNIQUEIDENTIFIER = 15;\r\n static ID_FIELDTYPE_TAXNUMBER = 16;\r\n\r\n static ENUMDESC_FIELDTYPE_UNKNOWN = \"Bilinmiyor\";\r\n static ENUMDESC_FIELDTYPE_TEXT = \"Metin\";\r\n static ENUMDESC_FIELDTYPE_MOBILEPHONE = \"Cep Telefonu\";\r\n static ENUMDESC_FIELDTYPE_DATETIME = \"Tarih\";\r\n static ENUMDESC_FIELDTYPE_SMSMESSAGE = \"SMS Mesajı\";\r\n static ENUMDESC_FIELDTYPE_IDENTITYNUMBER = \"TC Kimlik No\";\r\n static ENUMDESC_FIELDTYPE_EMAILADDRESS = \"E-posta Adresi\";\r\n static ENUMDESC_FIELDTYPE_VIRTUAL_ROWINDEX = \"Satır No\";\r\n static ENUMDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEID = \"Cep Telefonu Son Cihaz Id\";\r\n static ENUMDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORID = \"Cep Telefonu Son Operatör Id\";\r\n static ENUMDESC_FIELDTYPE_NUMBER = \"Sayı\";\r\n static ENUMDESC_FIELDTYPE_CURRENCY = \"Para Birimi\";\r\n static ENUMDESC_FIELDTYPE_YESNO = \"Evet/Hayır\";\r\n static ENUMDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEIDLASTUPDATEDATE = \"Cep Telefonu Son Cihaz Güncelleme Bilgisi Tarihi\";\r\n static ENUMDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORIDLASTUPDATEDATE = \"Cep Telefonu Son Operatör Güncelleme Bilgisi Tarihi\";\r\n static ENUMDESC_FIELDTYPE_UNIQUEIDENTIFIER = \"Tekil Id\";\r\n static ENUMDESC_FIELDTYPE_TAXNUMBER = \"Vergi No\";\r\n\r\n static ENUMSHORTDESC_FIELDTYPE_UNKNOWN = \"N/A\";\r\n static ENUMSHORTDESC_FIELDTYPE_TEXT = \"METN\";\r\n static ENUMSHORTDESC_FIELDTYPE_MOBILEPHONE = \"GSMN\";\r\n static ENUMSHORTDESC_FIELDTYPE_DATETIME = \"TARH\";\r\n static ENUMSHORTDESC_FIELDTYPE_SMSMESSAGE = \"SMSM\";\r\n static ENUMSHORTDESC_FIELDTYPE_IDENTITYNUMBER = \"TCKN\";\r\n static ENUMSHORTDESC_FIELDTYPE_EMAILADDRESS = \"EPOS\";\r\n static ENUMSHORTDESC_FIELDTYPE_VIRTUAL_ROWINDEX = \"SNO\";\r\n static ENUMSHORTDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEID = \"CTSCId\";\r\n static ENUMSHORTDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORID = \"CTSOId\";\r\n static ENUMSHORTDESC_FIELDTYPE_NUMBER = \"SAYI\";\r\n static ENUMSHORTDESC_FIELDTYPE_CURRENCY = \"PARA\";\r\n static ENUMSHORTDESC_FIELDTYPE_YESNO = \"E/H\";\r\n static ENUMSHORTDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEIDLASTUPDATEDATE = \"CTCGBT\";\r\n static ENUMSHORTDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORIDLASTUPDATEDATE = \"CTSOGBT\";\r\n static ENUMSHORTDESC_FIELDTYPE_UNIQUEIDENTIFIER = \"TId\";\r\n static ENUMSHORTDESC_FIELDTYPE_TAXNUMBER = \"VERN\";\r\n\r\n static getDescription = (value) => {\r\n switch (value) {\r\n default:\r\n case this.ENUM_FIELDTYPE_UNKNOWN:\r\n return this.ENUMDESC_FIELDTYPE_UNKNOWN;\r\n\r\n case this.ENUM_FIELDTYPE_TEXT:\r\n return this.ENUMDESC_FIELDTYPE_TEXT;\r\n\r\n case this.ENUM_FIELDTYPE_MOBILEPHONE:\r\n return this.ENUMDESC_FIELDTYPE_MOBILEPHONE;\r\n\r\n case this.ENUM_FIELDTYPE_DATETIME:\r\n return this.ENUMDESC_FIELDTYPE_DATETIME;\r\n\r\n case this.ENUM_FIELDTYPE_SMSMESSAGE:\r\n return this.ENUMDESC_FIELDTYPE_SMSMESSAGE;\r\n\r\n case this.ENUM_FIELDTYPE_IDENTITYNUMBER:\r\n return this.ENUMDESC_FIELDTYPE_IDENTITYNUMBER;\r\n\r\n case this.ENUM_FIELDTYPE_EMAILADDRESS:\r\n return this.ENUMDESC_FIELDTYPE_EMAILADDRESS;\r\n\r\n case this.ENUM_FIELDTYPE_VIRTUAL_ROWINDEX:\r\n return this.ENUMDESC_FIELDTYPE_VIRTUAL_ROWINDEX;\r\n\r\n case this.ENUM_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEID:\r\n return this.ENUMDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEID;\r\n\r\n case this.ENUM_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORID:\r\n return this.ENUMDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORID;\r\n\r\n case this.ENUM_FIELDTYPE_NUMBER:\r\n return this.ENUMDESC_FIELDTYPE_NUMBER;\r\n\r\n case this.ENUM_FIELDTYPE_CURRENCY:\r\n return this.ENUMDESC_FIELDTYPE_CURRENCY;\r\n\r\n case this.ENUM_FIELDTYPE_YESNO:\r\n return this.ENUMDESC_FIELDTYPE_YESNO;\r\n\r\n case this.ENUM_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEIDLASTUPDATEDATE:\r\n return this.ENUMDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEIDLASTUPDATEDATE;\r\n\r\n case this.ENUM_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORIDLASTUPDATEDATE:\r\n return this.ENUMDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORIDLASTUPDATEDATE;\r\n\r\n case this.ENUM_FIELDTYPE_UNIQUEIDENTIFIER:\r\n return this.ENUMDESC_FIELDTYPE_UNIQUEIDENTIFIER;\r\n\r\n case this.ENUM_FIELDTYPE_TAXNUMBER:\r\n return this.ENUMDESC_FIELDTYPE_TAXNUMBER;\r\n }\r\n }\r\n\r\n static getShortDescription = (value) => {\r\n switch (value) {\r\n default:\r\n case this.ENUM_FIELDTYPE_UNKNOWN:\r\n return this.ENUMSHORTDESC_FIELDTYPE_UNKNOWN;\r\n\r\n case this.ENUM_FIELDTYPE_TEXT:\r\n return this.ENUMSHORTDESC_FIELDTYPE_TEXT;\r\n\r\n case this.ENUM_FIELDTYPE_MOBILEPHONE:\r\n return this.ENUMSHORTDESC_FIELDTYPE_MOBILEPHONE;\r\n\r\n case this.ENUM_FIELDTYPE_DATETIME:\r\n return this.ENUMSHORTDESC_FIELDTYPE_DATETIME;\r\n\r\n case this.ENUM_FIELDTYPE_SMSMESSAGE:\r\n return this.ENUMSHORTDESC_FIELDTYPE_SMSMESSAGE;\r\n\r\n case this.ENUM_FIELDTYPE_IDENTITYNUMBER:\r\n return this.ENUMSHORTDESC_FIELDTYPE_IDENTITYNUMBER;\r\n\r\n case this.ENUM_FIELDTYPE_EMAILADDRESS:\r\n return this.ENUMSHORTDESC_FIELDTYPE_EMAILADDRESS;\r\n\r\n case this.ENUM_FIELDTYPE_VIRTUAL_ROWINDEX:\r\n return this.ENUMSHORTDESC_FIELDTYPE_VIRTUAL_ROWINDEX;\r\n\r\n case this.ENUM_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEID:\r\n return this.ENUMSHORTDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEID;\r\n\r\n case this.ENUM_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORID:\r\n return this.ENUMSHORTDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORID;\r\n\r\n case this.ENUM_FIELDTYPE_NUMBER:\r\n return this.ENUMSHORTDESC_FIELDTYPE_NUMBER;\r\n\r\n case this.ENUM_FIELDTYPE_CURRENCY:\r\n return this.ENUMSHORTDESC_FIELDTYPE_CURRENCY;\r\n\r\n case this.ENUM_FIELDTYPE_YESNO:\r\n return this.ENUMSHORTDESC_FIELDTYPE_YESNO;\r\n\r\n case this.ENUM_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEIDLASTUPDATEDATE:\r\n return this.ENUMSHORTDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEIDLASTUPDATEDATE;\r\n\r\n case this.ENUM_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORIDLASTUPDATEDATE:\r\n return this.ENUMSHORTDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORIDLASTUPDATEDATE;\r\n\r\n case this.ENUM_FIELDTYPE_UNIQUEIDENTIFIER:\r\n return this.ENUMSHORTDESC_FIELDTYPE_UNIQUEIDENTIFIER;\r\n\r\n case this.ENUM_FIELDTYPE_TAXNUMBER:\r\n return this.ENUMSHORTDESC_FIELDTYPE_TAXNUMBER;\r\n }\r\n }\r\n\r\n static getShortDescriptionFromId = (id) => {\r\n switch (id) {\r\n default:\r\n case this.ID_FIELDTYPE_UNKNOWN:\r\n return this.ENUMSHORTDESC_FIELDTYPE_UNKNOWN;\r\n\r\n case this.ID_FIELDTYPE_TEXT:\r\n return this.ENUMSHORTDESC_FIELDTYPE_TEXT;\r\n\r\n case this.ID_FIELDTYPE_MOBILEPHONE:\r\n return this.ENUMSHORTDESC_FIELDTYPE_MOBILEPHONE;\r\n\r\n case this.ID_FIELDTYPE_DATETIME:\r\n return this.ENUMSHORTDESC_FIELDTYPE_DATETIME;\r\n\r\n case this.ID_FIELDTYPE_SMSMESSAGE:\r\n return this.ENUMSHORTDESC_FIELDTYPE_SMSMESSAGE;\r\n\r\n case this.ID_FIELDTYPE_IDENTITYNUMBER:\r\n return this.ENUMSHORTDESC_FIELDTYPE_IDENTITYNUMBER;\r\n\r\n case this.ID_FIELDTYPE_EMAILADDRESS:\r\n return this.ENUMSHORTDESC_FIELDTYPE_EMAILADDRESS;\r\n\r\n case this.ID_FIELDTYPE_VIRTUAL_ROWINDEX:\r\n return this.ENUMSHORTDESC_FIELDTYPE_VIRTUAL_ROWINDEX;\r\n\r\n case this.ID_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEID:\r\n return this.ENUMSHORTDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEID;\r\n\r\n case this.ID_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORID:\r\n return this.ENUMSHORTDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORID;\r\n\r\n case this.ID_FIELDTYPE_NUMBER:\r\n return this.ENUMSHORTDESC_FIELDTYPE_NUMBER;\r\n\r\n case this.ID_FIELDTYPE_CURRENCY:\r\n return this.ENUMSHORTDESC_FIELDTYPE_CURRENCY;\r\n\r\n case this.ID_FIELDTYPE_YESNO:\r\n return this.ENUMSHORTDESC_FIELDTYPE_YESNO;\r\n\r\n case this.ID_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEIDLASTUPDATEDATE:\r\n return this.ENUMSHORTDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTDEVICEIDLASTUPDATEDATE;\r\n\r\n case this.ID_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORIDLASTUPDATEDATE:\r\n return this.ENUMSHORTDESC_FIELDTYPE_SYSTEM_MOBILEPHONELASTOPERATORIDLASTUPDATEDATE;\r\n\r\n case this.ID_FIELDTYPE_UNIQUEIDENTIFIER:\r\n return this.ENUMSHORTDESC_FIELDTYPE_UNIQUEIDENTIFIER;\r\n\r\n case this.ID_FIELDTYPE_TAXNUMBER:\r\n return this.ENUMSHORTDESC_FIELDTYPE_TAXNUMBER;\r\n }\r\n }\r\n}","import React, { useState, useEffect } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { timeout } from '../../_actions/user'\r\nimport { Select, MenuItem } from \"@material-ui/core\"\r\nimport Button from '@material-ui/core/Button';\r\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Switch from '@material-ui/core/Switch';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport FormControl from '@material-ui/core/FormControl';\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport styles from './smsStyles.js'\r\nimport { FileFields } from 'variables/fileFields';\r\nimport iconTurkcell from \"assets/img/operators/icon-16x16-turkcell.png\";\r\nimport iconSuperonline from \"assets/img/operators/icon-16x16-superonline.png\";\r\nimport iconTurkTelekom from \"assets/img/operators/icon-16x16-turktelekom.png\";\r\nimport iconVodafone from \"assets/img/operators/icon-16x16-vodafone.png\";\r\n\r\nconst useStyles = makeStyles(styles)\r\n\r\nconst Step0 = props => {\r\n const [filtered, setFiltered] = useState(false)\r\n const [brandCodeList, setBrandCodeList] = useState(false)\r\n const [isRequiredToSetOtherParameters, setIsRequiredToSetOtherParameters] = useState(false)\r\n const classes = useStyles()\r\n const { data, taskName, setTaskName, SenderInfo, SetSenderInfo, \r\n SendType, handleSetSendType, sendTypeManuallySet, SetSendTypeManuallySet, senderList, defaultKeyFieldType,\r\n iysMessageTypeList, iysRecipientTypeList, iysBrandCodeList,\r\n iysMessageType, setIysMessageType,\r\n iysRecipientType, setIysRecipientType,\r\n iysIsAllowedToPassEmptyByUser, setIysIsAllowedToPassEmptyByUser,\r\n iysBrandCode, setIysBrandCode, handleIsRequiredToSetOtherParameters\r\n } = props\r\n const loading = props.slloading\r\n const opResolve = id => {\r\n switch (id) {\r\n case 0:\r\n return ( Turkcell )\r\n case 1:\r\n return ( Vodafone )\r\n case 2:\r\n return ( Türk Telekom )\r\n case 3:\r\n return (Asist )\r\n case 4:\r\n return ( Superonline )\r\n case 5:\r\n return ( Türk Telekom Grup )\r\n default:\r\n return ''\r\n }\r\n }\r\n\r\n const senderListOption = (item) => {\r\n return (\r\n {item.sender} \r\n
Operator: {opResolve(item.operator)}Sanal No: {item.virtualMsisdn}
\r\n )\r\n }\r\n\r\n const permissionList = list => {\r\n let permissions = []\r\n for (let i = 0; i < list.length; i++) {\r\n permissions = [\r\n ...permissions,\r\n ...list[i].permissions\r\n ]\r\n }\r\n return permissions\r\n }\r\n\r\n const buttons = list => {\r\n let GSM = false\r\n let ID = false\r\n let TaxNo = false\r\n if (permissionList(list).indexOf(3) > -1) {\r\n GSM = true\r\n }\r\n if (permissionList(list).indexOf(4) > -1) {\r\n ID = true\r\n }\r\n if (permissionList(list).indexOf(5) > -1) {\r\n TaxNo = true\r\n }\r\n let arr = []\r\n if (GSM) {\r\n arr = [\r\n ...arr,\r\n 'GSM'\r\n ]\r\n }\r\n else {\r\n arr = [\r\n ...arr,\r\n 'GSM'\r\n ]\r\n }\r\n if (ID) {\r\n arr = [\r\n ...arr,\r\n 'ID'\r\n ]\r\n }\r\n if (TaxNo) {\r\n arr = [\r\n ...arr,\r\n 'TaxNo'\r\n ]\r\n }\r\n return arr\r\n }\r\n\r\n let filteredSenderList = senderList.filter(item => item.permissions.indexOf(SendType) > -1)\r\n if (filteredSenderList.length === 1) {\r\n SetSenderInfo(filteredSenderList[0])\r\n }\r\n\r\n useEffect(() => {\r\n if (iysMessageTypeList && iysMessageType) {\r\n for (let i = 0; i < iysMessageTypeList.length; i++) {\r\n if (iysMessageTypeList[i].iysMessageType === iysMessageType\r\n && iysMessageTypeList[i].isRequiredToSetOtherParameters) {\r\n setIsRequiredToSetOtherParameters(true)\r\n }\r\n }\r\n }\r\n }, [iysMessageType]);\r\n\r\n useEffect(() => {\r\n if (!sendTypeManuallySet) {\r\n var selectingSendType = -1\r\n if (defaultKeyFieldType) {\r\n if (defaultKeyFieldType == FileFields.ID_FIELDTYPE_MOBILEPHONE && permissionList(senderList).indexOf(3) > -1) {\r\n selectingSendType = 3;\r\n }\r\n else if (defaultKeyFieldType == FileFields.ID_FIELDTYPE_IDENTITYNUMBER && permissionList(senderList).indexOf(4) > -1) {\r\n selectingSendType = 4;\r\n }\r\n else if (defaultKeyFieldType == FileFields.ID_FIELDTYPE_TAXNUMBER && permissionList(senderList).indexOf(7) > -1) {\r\n selectingSendType = 5;\r\n }\r\n }\r\n\r\n if (selectingSendType == -1) {\r\n if (senderList && senderList.length > 0 && permissionList(senderList).indexOf(3) === -1) {\r\n if (permissionList(senderList).indexOf(4) === -1) {\r\n if (permissionList(senderList).indexOf(7) === -1) {\r\n selectingSendType = 3;\r\n }\r\n else {\r\n selectingSendType = 5;\r\n }\r\n }\r\n else {\r\n selectingSendType = 4;\r\n }\r\n } else {\r\n selectingSendType = 3;\r\n }\r\n }\r\n\r\n if (selectingSendType == -1) selectingSendType = 3;\r\n if (SendType !== selectingSendType) {\r\n handleSetSendType(selectingSendType);\r\n }\r\n }\r\n }, [senderList])\r\n\r\n // useEffect( () => {\r\n // if(permissionList(senderList).indexOf(3) === -1 ){\r\n // if(permissionList(senderList).indexOf(4) === -1 ){\r\n // handleSetSendType(5)\r\n // }else{\r\n // handleSetSendType(4)\r\n // }\r\n // }else{\r\n // handleSetSendType(3)\r\n // }\r\n\r\n // },[senderList])\r\n\r\n const handleBrandCodeList = () => {\r\n setBrandCodeList(!brandCodeList)\r\n setIysBrandCode('')\r\n }\r\n\r\n const handleIysMessageType = e => {\r\n const { value } = e.target\r\n for (let i = 0; i < iysMessageTypeList.length; i++) {\r\n if (iysMessageTypeList[i].iysMessageType === value) {\r\n setIysMessageType(iysMessageTypeList[i].iysMessageType)\r\n setIsRequiredToSetOtherParameters(iysMessageTypeList[i].isRequiredToSetOtherParameters)\r\n handleIsRequiredToSetOtherParameters(iysMessageTypeList[i].isRequiredToSetOtherParameters)\r\n }\r\n }\r\n }\r\n\r\n const handleTaskName = (value) => {\r\n setTaskName(value.replace(/\\t/g, ' '));\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Tanımı\r\n \r\n \r\n \r\n\r\n \r\n \r\n {loading\r\n ? \r\n : buttons(senderList).length > 1 &&\r\n \r\n {permissionList(senderList).indexOf(3) > -1 && {\r\n SetSendTypeManuallySet(true)\r\n setFiltered(true)\r\n SetSenderInfo(\"\")\r\n handleSetSendType(3)\r\n }}>GSM }\r\n {permissionList(senderList).indexOf(4) > -1 && {\r\n SetSendTypeManuallySet(true)\r\n setFiltered(true)\r\n SetSenderInfo(\"\")\r\n handleSetSendType(4)\r\n }}>T.C. KİMLİK No }\r\n {permissionList(senderList).indexOf(5) > -1 && {\r\n SetSendTypeManuallySet(true)\r\n setFiltered(true)\r\n SetSenderInfo(\"\")\r\n handleSetSendType(5)\r\n }}>Vergi No }\r\n \r\n }\r\n \r\n \r\n handleTaskName(e.target.value),\r\n }}\r\n />\r\n \r\n \r\n {filteredSenderList.length === 1\r\n ? Kullanılacak alfanümerik : {filteredSenderList[0].sender} \r\n : SetSenderInfo(e.target.value)}\r\n displayEmpty\r\n fullWidth\r\n inputProps={{ 'aria-label': 'Kullanılacak alfanumerik' }}\r\n >\r\n Alfanumerik Seçiniz \r\n {filteredSenderList && filteredSenderList.map(item => (\r\n senderListOption(item)\r\n ))\r\n }\r\n \r\n }\r\n \r\n \r\n \r\n \r\n İYS Mesaj Tipi : \r\n \r\n \r\n \r\n {iysMessageTypeList.map(item => (\r\n {item.iysMessageTypeDisplay} \r\n ))\r\n }\r\n \r\n \r\n \r\n \r\n {isRequiredToSetOtherParameters &&\r\n \r\n \r\n \r\n İYS Alıcı Tipi : \r\n \r\n \r\n setIysRecipientType(e.target.value)}\r\n displayEmpty\r\n fullWidth\r\n inputProps={{ 'aria-label': '' }}\r\n >\r\n {iysRecipientTypeList.map(item => (\r\n {item.iysRecipientTypeDisplay} \r\n ))\r\n }\r\n \r\n \r\n \r\n \r\n }\r\n {isRequiredToSetOtherParameters &&\r\n \r\n \r\n \r\n İYS Marka Kodu : \r\n \r\n \r\n {brandCodeList\r\n ? setIysBrandCode(e.target.value)}\r\n displayEmpty\r\n fullWidth\r\n inputProps={{ 'aria-label': '' }}\r\n style={{ marginTop: 45 }}\r\n >\r\n {iysBrandCodeList.map(item => (\r\n {item.iysBrandCodeDisplay} \r\n ))\r\n }\r\n \r\n : setIysBrandCode(e.target.value),\r\n }}\r\n />\r\n\r\n }\r\n \r\n \r\n }\r\n label=\"Listeden Seç\"\r\n />\r\n \r\n \r\n \r\n }\r\n \r\n {\r\n setIysIsAllowedToPassEmptyByUser(!iysIsAllowedToPassEmptyByUser)\r\n }}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n }\r\n label=\"Toplam İYS verisi 150.000 altında olduğundan İYS bilgilerini boş bırakmak istiyorum.\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Step0","import React from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\r\n}));\r\n\r\nconst AddNumberDialog = props => {\r\n\r\n const { open, handleToggle, NumberList, SetNumberList, handleSubmit, loading } = props\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n Numara Girerek Ekle \r\n \r\n {loading\r\n ? <>>\r\n :\r\n <>\r\n \r\n \r\n SetNumberList(e.target.value)}\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n\r\n \r\n >\r\n }\r\n \r\n \r\n {loading\r\n ? \r\n \r\n
\r\n :\r\n <>\r\n \r\n VAZGEÇ\r\n \r\n handleSubmit({})} simple size='lg' block color=\"success\">\r\n Ekle\r\n \r\n >\r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default AddNumberDialog","import { domain } from './domain'\r\nimport axios from 'axios'\r\n\r\nexport const getPersonList = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/PhoneBook/GetPersonList', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getGroupList = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/PhoneBook/GetGroupList', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getPhoneBookFields = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/PhoneBook/GetPhoneBookFields', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getCityList = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/Definitions/GetCityList', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const addOrUpdatePersonList = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/PhoneBook/AddOrUpdatePersonList', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getGroupListOfPerson = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/PhoneBook/GetGroupListOfPerson', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const deletePersonList = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/PhoneBook/DeletePersonList', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\n\r\nexport const addOrUpdateGroup = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/PhoneBook/AddOrUpdateGroup', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const deleteGroupList = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/PhoneBook/DeleteGroupList', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getGroupPersonData = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/PhoneBook/GetGroupPersonData', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const groupPersonOperation = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/PhoneBook/GroupPersonOperation', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getPersonListAsExcel = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/PhoneBook/GetPersonListAsExcel', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}","import React, { useState, useEffect } from 'react'\r\nimport { getGroupList } from '../../_services/phoneBook.js'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Pagination from '@material-ui/lab/Pagination';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Swal from \"sweetalert2\"\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n nameContainer : {\r\n marginBottom : 10\r\n },\r\n rowCont : {\r\n minHeight : 300,\r\n marginBottom : 20\r\n }\r\n}));\r\n\r\nconst GroupRecordsDialog = props => {\r\n const [ alert, setAlert ] = useState('')\r\n const [ filtered, setFiltered ] = useState(false)\r\n const { open, toggle, sourcePBGroupList, sourcePBGroupListLength, firstQuery, PbGroupList, loading } = props\r\n const classes = useStyles();\r\n \r\n const [ selection, setSelection ] = useState([])\r\n const [ PageSize, SetPageSize ] = useState(20)\r\n const [ PageNumber, SetPageNumber ] = useState(1)\r\n const [ search, setSearch ] = useState('')\r\n\r\n\r\n useEffect(() => {\r\n if(PbGroupList.length > 0){\r\n handleAddSelected(PbGroupList)\r\n }\r\n }, [PbGroupList])\r\n\r\n const handleCheck = (id) => {\r\n const index = selection.indexOf(id)\r\n let newSelection = []\r\n if(index > -1){\r\n newSelection = [\r\n ...selection.slice(0,index),\r\n ...selection.slice(index +1)\r\n ]\r\n }else{\r\n newSelection = [ ...selection, id]\r\n }\r\n setSelection(newSelection)\r\n }\r\n\r\n const GroupRows = list => {\r\n return( list.map( item => {\r\n const index = selection.indexOf(item.groupId)\r\n const checked = index > -1 ? true : false\r\n return(\r\n \r\n \r\n \r\n \r\n handleCheck(item.groupId)} name=\"gilad\" color=\"primary\" />\r\n \r\n \r\n \r\n \r\n \r\n {item.groupName} \r\n \r\n \r\n {(item.totalPersonCount || '').toLocaleString(\"tr-TR\")} kişi\r\n \r\n {(item.description && item.description !== '') &&\r\n \r\n {item.description}\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }))\r\n }\r\n\r\n const handlePageSizeChange = (e) => {\r\n firstQuery({},{ PageSize : e.target.value, PageNumber : 1},{})\r\n SetPageSize(e.target.value)\r\n SetPageNumber(1)\r\n } \r\n \r\n const handlePageChange = (e, value) => {\r\n firstQuery({},{ PageNumber : value, PageSize},{})\r\n SetPageNumber(value)\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n setFiltered(true)\r\n SetPageNumber(1)\r\n SetPageSize(20)\r\n firstQuery({ ReturnDestinationListOption : 1},{SearchExpression : search},{})\r\n }\r\n\r\n const handleAddSelected = (selection) => {\r\n firstQuery(\r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 2,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbGroupIdList : selection\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n props.handleClose()\r\n setSelection([])\r\n }\r\n\r\n const handleAddAll = () => {\r\n firstQuery(\r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 6,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbGroupIdList : null\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n toggle()\r\n }\r\n\r\n const handleAddFiltered = () => {\r\n firstQuery(\r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 4,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbGroupIdList : null\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n SearchExpression : search,\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n toggle()\r\n setFiltered(false)\r\n setSearch('')\r\n }\r\n\r\n return(\r\n \r\n Grup Kayıtlarından Ekle \r\n \r\n { alert !== '' &&\r\n \r\n \r\n
\r\n }\r\n \r\n \r\n {\r\n setFiltered(false)\r\n setSearch(e.target.value)\r\n },\r\n onKeyDown : e => { if(e.keyCode === 13){handleSearchSubmit()} },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n firstQuery({},{SearchExpression : ''},{})\r\n }}>Tümü \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n \r\n {loading\r\n ? \r\n \r\n
\r\n :\r\n GroupRows(sourcePBGroupList)\r\n }\r\n \r\n \r\n \r\n \r\n Sayfada 5 Kayıt Göster \r\n Sayfada 10 Kayıt Göster \r\n Sayfada 20 Kayıt Göster \r\n Sayfada 30 Kayıt Göster \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {selection.length > 0 &&\r\n handleAddSelected(selection)} simple size='lg' block color=\"success\">\r\n SEÇİLİ {selection.length} Kaydı Ekle\r\n \r\n }\r\n { search.length > 0 && filtered &&\r\n \r\n FİLTRELENEN {sourcePBGroupList.length} Kaydı Ekle\r\n \r\n }\r\n \r\n Tüm Kayıtları Ekle\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default GroupRecordsDialog","import React, { useState, useEffect } from 'react'\r\nimport { getGroupList } from '../../_services/phoneBook.js'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Pagination from '@material-ui/lab/Pagination';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Swal from \"sweetalert2\"\r\nimport { numberFormat } from 'formats/number.js';\r\nimport { FileFields } from 'variables/fileFields.js';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n nameContainer : {\r\n marginBottom : 10\r\n },\r\n rowCont : {\r\n minHeight : 300,\r\n marginBottom : 20\r\n }\r\n}));\r\n\r\nconst PersonRecordsDialog = props => {\r\n const [ alert, setAlert ] = useState('')\r\n const [ filtered, setFiltered ] = useState(false)\r\n const { open, toggle, sourcePBPersonList, sourcePBPersonListLength, firstQuery, PbPersonList, KeyFieldType, loading } = props\r\n const classes = useStyles();\r\n \r\n const [ selection, setSelection ] = useState([])\r\n const [ PageSize, SetPageSize ] = useState(20)\r\n const [ PageNumber, SetPageNumber ] = useState(1)\r\n const [ search, setSearch ] = useState('')\r\n\r\n useEffect(() => {\r\n if(PbPersonList.length > 0){\r\n handleAddSelected(PbPersonList)\r\n }\r\n }, [PbPersonList])\r\n\r\n const handleCheck = (id) => {\r\n const index = selection.indexOf(id)\r\n let newSelection = []\r\n if(index > -1){\r\n newSelection = [\r\n ...selection.slice(0,index),\r\n ...selection.slice(index +1)\r\n ]\r\n }else{\r\n newSelection = [ ...selection, id]\r\n }\r\n setSelection(newSelection)\r\n }\r\n\r\n const showNumberRecord = (kt, item) => {\r\n switch(kt){\r\n case FileFields.ID_FIELDTYPE_IDENTITYNUMBER:\r\n return item.identityNumber\r\n case FileFields.ID_FIELDTYPE_TAXNUMBER:\r\n return item.taxNumber\r\n case FileFields.ID_FIELDTYPE_MOBILEPHONE:\r\n default:\r\n return numberFormat(item.mobilePhone || '')\r\n }\r\n }\r\n\r\n const PersonRows = list => {\r\n return( list.map( item => {\r\n const index = selection.indexOf(item.recordId)\r\n const checked = index > -1 ? true : false\r\n return(\r\n \r\n \r\n \r\n \r\n handleCheck(item.recordId)} name=\"gilad\" color=\"primary\" />\r\n \r\n \r\n \r\n \r\n \r\n {showNumberRecord(KeyFieldType, item)} \r\n \r\n \r\n {(item.name ? item.name : '') + ' ' + (item.surname ? item.surname : \"\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }))\r\n }\r\n\r\n const handlePageSizeChange = (e) => {\r\n firstQuery({},{ PageSize : e.target.value, PageNumber : 1},{})\r\n SetPageSize(e.target.value)\r\n SetPageNumber(1)\r\n } \r\n \r\n const handlePageChange = (e, value) => {\r\n firstQuery({},{ PageNumber : value, PageSize},{})\r\n SetPageNumber(value)\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n setFiltered(true)\r\n SetPageNumber(1)\r\n SetPageSize(20)\r\n firstQuery({ ReturnDestinationListOption : 1},{SearchExpression : search},{})\r\n }\r\n\r\n const handleAddSelected = (selection) => {\r\n firstQuery(\r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 2,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbPersonList : selection\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields : [\r\n {\r\n FieldName : \"Name\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Surname\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"MobilePhone\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"Name\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Surname\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"MobilePhone\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n props.handleClose()\r\n setSelection([])\r\n }\r\n\r\n const handleAddAll = () => {\r\n firstQuery(\r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 6,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbPersonList : null\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields : [\r\n {\r\n FieldName : \"Name\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Surname\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"MobilePhone\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"Name\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Surname\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"MobilePhone\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n toggle()\r\n }\r\n\r\n const handleAddFiltered = () => {\r\n firstQuery(\r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 4,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbPersonList : null\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n SearchExpression : search,\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n toggle()\r\n setFiltered(false)\r\n setSearch('')\r\n }\r\n\r\n return(\r\n \r\n Kişi Kayıtlarından Ekle \r\n \r\n { alert !== '' &&\r\n \r\n \r\n
\r\n }\r\n \r\n \r\n setSearch(e.target.value),\r\n onKeyDown : e => { if(e.keyCode === 13){handleSearchSubmit()} },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n firstQuery({},{SearchExpression : ''},{})\r\n }}>Tümü \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n \r\n {loading\r\n ? \r\n \r\n
\r\n :\r\n PersonRows(sourcePBPersonList)\r\n }\r\n \r\n \r\n \r\n \r\n Sayfada 5 Kayıt Göster \r\n Sayfada 10 Kayıt Göster \r\n Sayfada 20 Kayıt Göster \r\n Sayfada 30 Kayıt Göster \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {selection.length > 0 &&\r\n handleAddSelected(selection)} simple size='lg' block color=\"success\">\r\n SEÇİLİ {selection.length} KİŞİYİ Ekle\r\n \r\n } \r\n { search.length > 0 && filtered &&\r\n \r\n FİLTRELENEN {sourcePBPersonList.length} KİŞİYİ Ekle\r\n \r\n }\r\n \r\n Tüm KİŞİLERİ Ekle\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default PersonRecordsDialog","import React, { useState, useEffect } from 'react'\r\nimport { getGroupList } from '../../_services/phoneBook.js'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Pagination from '@material-ui/lab/Pagination';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Swal from \"sweetalert2\"\r\nimport { FileFields } from 'variables/fileFields.js';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n nameContainer : {\r\n marginBottom : 10\r\n },\r\n rowCont : {\r\n minHeight : 300,\r\n marginBottom : 20\r\n }\r\n}));\r\n\r\nconst SavedFilesDialog = props => {\r\n const [ alert, setAlert ] = useState('')\r\n const [ filtered, setFiltered ] = useState(false)\r\n const { open, toggle, sourceSavedFileList, sourceSavedFileListLength, firstQuery, SavedFileIdList, KeyFieldType, loading } = props\r\n const classes = useStyles();\r\n \r\n const [ selection, setSelection ] = useState([])\r\n const [ PageSize, SetPageSize ] = useState(20)\r\n const [ PageNumber, SetPageNumber ] = useState(1)\r\n const [ search, setSearch ] = useState('')\r\n const [ saveLoading, setSaveLoading ] = useState('')\r\n\r\n useEffect(() => {\r\n if(SavedFileIdList.length > 0){\r\n handleAddSelected(SavedFileIdList)\r\n }\r\n }, [SavedFileIdList])\r\n\r\n const handleCheck = (id) => {\r\n const index = selection.indexOf(id)\r\n let newSelection = []\r\n if(index > -1){\r\n newSelection = [\r\n ...selection.slice(0,index),\r\n ...selection.slice(index +1)\r\n ]\r\n }else{\r\n newSelection = [ ...selection, id]\r\n }\r\n setSelection(newSelection)\r\n }\r\n\r\n const countRecord = (kt, item) => {\r\n switch(kt){\r\n case 2:\r\n return item.recordCountMobileNumber\r\n case 5:\r\n return item.recordCountIdentityNumber\r\n case 16:\r\n return item.recordCountTaxNumber\r\n default:\r\n return item.totalPersonCount\r\n }\r\n }\r\n\r\n const GroupRows = list => {\r\n return( list.map( item => {\r\n const index = selection.indexOf(item.groupId)\r\n const checked = index > -1 ? true : false\r\n return(\r\n \r\n \r\n \r\n \r\n handleCheck(item.groupId)} name=\"gilad\" color=\"primary\" />\r\n \r\n \r\n \r\n \r\n \r\n {item.groupName} \r\n \r\n \r\n {countRecord(KeyFieldType, item)} kişi\r\n \r\n \r\n {item.description}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }))\r\n }\r\n\r\n const FileRows = list => {\r\n return( list.map( item => {\r\n const index = selection.indexOf(item.fileId)\r\n const checked = index > -1 ? true : false\r\n return(\r\n \r\n \r\n \r\n \r\n handleCheck(item.fileId)} name=\"gilad\" color=\"primary\" />\r\n \r\n \r\n \r\n \r\n \r\n {item.fileName}
\r\n {item.defaultKeyField && item.defaultKeyField.fieldName}
\r\n \r\n \r\n {(KeyFieldType === FileFields.ID_FIELDTYPE_IDENTITYNUMBER ? (item.recordCountIdentityNumber || '0').toLocaleString(\"tr-TR\") : (KeyFieldType === FileFields.ID_FIELDTYPE_TAXNUMBER ? (item.recordCountTaxNumber || '0').toLocaleString(\"tr-TR\") : (item.recordCountMobileNumber || '0').toLocaleString(\"tr-TR\")))} kişi\r\n \r\n \r\n {item.description}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }))\r\n }\r\n\r\n const handlePageSizeChange = (e) => {\r\n firstQuery({},{ PageSize : e.target.value, PageNumber : 1},{})\r\n SetPageSize(e.target.value)\r\n SetPageNumber(1)\r\n } \r\n \r\n const handlePageChange = (e, value) => {\r\n firstQuery({},{ PageNumber : value, PageSize},{})\r\n SetPageNumber(value)\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n setFiltered(true)\r\n SetPageNumber(1)\r\n SetPageSize(20)\r\n firstQuery({ ReturnDestinationListOption : 1},{SearchExpression : search},{})\r\n }\r\n\r\n const handleAddSelected = (selection) => {\r\n firstQuery(\r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 2,\r\n SavedFileIdList : selection\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields : [\r\n {\r\n FieldName : \"FileName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"FileName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n props.handleClose()\r\n setSelection([])\r\n }\r\n\r\n const handleAddAll = () => {\r\n firstQuery(\r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 6,\r\n SavedFileIdList : null\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields : [\r\n {\r\n FieldName : \"FileName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"FileName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n toggle()\r\n }\r\n\r\n const handleAddFiltered = () => {\r\n firstQuery(\r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 4,\r\n SavedFileIdList : null\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n SearchExpression : search,\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n toggle()\r\n setFiltered(false)\r\n setSearch('')\r\n }\r\n\r\n return(\r\n \r\n Kayıtlı Dosyadan Ekle \r\n \r\n { alert !== '' &&\r\n \r\n \r\n
\r\n }\r\n \r\n \r\n setSearch(e.target.value),\r\n onKeyDown : e => { if(e.keyCode === 13){handleSearchSubmit()} },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n firstQuery({},{SearchExpression : ''},{})\r\n }}>Tümü \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n \r\n {loading || saveLoading\r\n ? \r\n \r\n
\r\n :\r\n FileRows(sourceSavedFileList)\r\n }\r\n \r\n \r\n \r\n \r\n Sayfada 5 Kayıt Göster \r\n Sayfada 10 Kayıt Göster \r\n Sayfada 20 Kayıt Göster \r\n Sayfada 30 Kayıt Göster \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {selection.length > 0 &&\r\n handleAddSelected(selection)} simple size='lg' block color=\"success\">\r\n SEÇİLİ {selection.length} Dosyayı Ekle\r\n \r\n }\r\n { search.length > 0 && filtered &&\r\n \r\n FİLTRELENEN {sourceSavedFileList.length} Dosyayı Ekle\r\n \r\n }\r\n \r\n Tüm Dosyaları Ekle\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SavedFilesDialog","import React, { useState, useEffect } from 'react'\r\nimport { getSmsMessageTemplates, deleteSMSMessageTemplates } from '../../_services/sms'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Pagination from '@material-ui/lab/Pagination';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Swal from \"sweetalert2\"\r\nimport { FileFields } from 'variables/fileFields';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n nameContainer : {\r\n marginBottom : 10\r\n },\r\n rowCont : {\r\n minHeight : 300,\r\n marginBottom : 20\r\n }\r\n}));\r\n\r\nconst PBGroup = props => {\r\n const { addedSavedFileList, addedSavedFileListLength, firstQuery, loading, keyFieldType } = props\r\n const classes = useStyles();\r\n \r\n const [ PageSize, SetPageSize ] = useState(20)\r\n const [ PageNumber, SetPageNumber ] = useState(1)\r\n\r\n const [ search, setSearch ] = useState('')\r\n\r\n const SavedFileRows = list => {\r\n return( list.map( item => {\r\n return(\r\n \r\n \r\n \r\n {item.fileName} \r\n \r\n \r\n {(keyFieldType === FileFields.ID_FIELDTYPE_IDENTITYNUMBER ? (item.recordCountIdentityNumber || '0').toLocaleString(\"tr-TR\") : (keyFieldType === FileFields.ID_FIELDTYPE_TAXNUMBER ? (item.recordCountTaxNumber || '0').toLocaleString(\"tr-TR\") : (item.recordCountMobileNumber || '0').toLocaleString(\"tr-TR\")))} kişi\r\n \r\n \r\n \r\n handleDelete(item.fileId)} >\r\n \r\n \r\n \r\n \r\n {(item.description && item.description !== '') &&\r\n \r\n {item.description}\r\n \r\n }\r\n \r\n \r\n \r\n )\r\n }))\r\n }\r\n\r\n const handleDeleteAll = () => {\r\n firstQuery( \r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 7,\r\n SavedFileIdList : null,\r\n ReturnSourceListOption : 1,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"FileName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"FileName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n }\r\n\r\n const handleDelete = id => {\r\n firstQuery( \r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 3,\r\n SavedFileIdList : [id],\r\n ReturnSourceListOption : 1,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"FileName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"FileName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n }\r\n\r\n const handlePageSizeChange = (e) => {\r\n firstQuery(\r\n {\r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 1,\r\n SavedFileIdList : null,\r\n ReturnSourceListOption : 1,\r\n },\r\n {},\r\n { PageSize : e.target.value, PageNumber : 1}\r\n )\r\n SetPageSize(e.target.value)\r\n SetPageNumber(1)\r\n } \r\n \r\n const handlePageChange = (e, value) => {\r\n firstQuery(\r\n {\r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 1,\r\n SavedFileIdList : null,\r\n ReturnSourceListOption : 1,\r\n },\r\n {},\r\n { \r\n PageSize, PageNumber : value\r\n }\r\n )\r\n SetPageNumber(value)\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n SetPageNumber(1)\r\n SetPageSize(20)\r\n firstQuery({ SavedFilesListOperation : 1, ReturnSourceListOption : 1},{}, {SearchExpression : search},)\r\n }\r\n\r\n return(\r\n \r\n
\r\n \r\n setSearch(e.target.value),\r\n onKeyDown : e => { if(e.keyCode === 13){handleSearchSubmit()} },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n firstQuery({SavedFilesListOperation : 1}, {}, {SearchExpression : ''})\r\n }}>Tümü \r\n \r\n \r\n \r\n \r\n \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n { loading \r\n ?
\r\n \r\n
\r\n : <>\r\n
\r\n {SavedFileRows(addedSavedFileList)}\r\n \r\n
\r\n \r\n \r\n Sayfada 5 Kayıt Göster \r\n Sayfada 10 Kayıt Göster \r\n Sayfada 20 Kayıt Göster \r\n Sayfada 30 Kayıt Göster \r\n Sayfada 40 Kayıt Göster \r\n Sayfada 50 Kayıt Göster \r\n \r\n \r\n \r\n \r\n \r\n \r\n >\r\n }\r\n
\r\n )\r\n}\r\n\r\nexport default PBGroup","import React, { useState, useEffect } from 'react'\r\nimport { getSmsMessageTemplates, deleteSMSMessageTemplates } from '../../_services/sms'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Pagination from '@material-ui/lab/Pagination';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Swal from \"sweetalert2\"\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n nameContainer : {\r\n marginBottom : 10\r\n },\r\n rowCont : {\r\n minHeight : 300,\r\n marginBottom : 20\r\n }\r\n}));\r\n\r\nconst PBGroup = props => {\r\n const { addedPBGroupList, addedPBGroupListLength, firstQuery, loading, keyFieldType } = props\r\n const classes = useStyles();\r\n \r\n const [ PageSize, SetPageSize ] = useState(20)\r\n const [ PageNumber, SetPageNumber ] = useState(1)\r\n\r\n const [ search, setSearch ] = useState('')\r\n\r\n const GroupRows = list => {\r\n return( list.map( item => {\r\n return(\r\n \r\n \r\n \r\n {item.groupName} \r\n \r\n \r\n {(item.totalPersonCount || '').toLocaleString(\"tr-TR\")} kişi\r\n \r\n \r\n \r\n handleDelete(item.groupId)} >\r\n \r\n \r\n \r\n \r\n \r\n {item.description}\r\n \r\n \r\n \r\n \r\n )\r\n }))\r\n }\r\n\r\n const handleDeleteAll = () => {\r\n firstQuery( \r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 7,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbGroupIdList : null,\r\n ReturnSourceListOption : 1,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n }\r\n\r\n const handleDelete = id => {\r\n firstQuery( \r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 3,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbGroupIdList : [id],\r\n ReturnSourceListOption : 1,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n }\r\n\r\n const handlePageSizeChange = (e) => {\r\n firstQuery(\r\n {\r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 1,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbGroupIdList : null,\r\n ReturnSourceListOption : 1,\r\n },\r\n {},\r\n { PageSize : e.target.value, PageNumber : 1}\r\n )\r\n SetPageSize(e.target.value)\r\n SetPageNumber(1)\r\n } \r\n \r\n const handlePageChange = (e, value) => {\r\n firstQuery(\r\n {\r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 1,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbGroupIdList : null,\r\n ReturnSourceListOption : 1,\r\n },\r\n {},\r\n { \r\n PageSize, PageNumber : value\r\n }\r\n )\r\n SetPageNumber(value)\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n SetPageNumber(1)\r\n SetPageSize(20)\r\n firstQuery( \r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 1,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbGroupIdList : null,\r\n ReturnSourceListOption : 1,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n SearchExpression : search,\r\n CalculateTotalRecordCount : true,\r\n })\r\n }\r\n\r\n return(\r\n \r\n
\r\n \r\n setSearch(e.target.value),\r\n onKeyDown : e => { if(e.keyCode === 13){handleSearchSubmit()} },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n firstQuery({PbGroupListOperation : 1}, {}, {SearchExpression : ''})\r\n }}>Tümü \r\n \r\n \r\n \r\n \r\n \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n { loading \r\n ?
\r\n \r\n
\r\n : <>\r\n
\r\n {GroupRows(addedPBGroupList)}\r\n \r\n
\r\n \r\n \r\n Sayfada 5 Kayıt Göster \r\n Sayfada 10 Kayıt Göster \r\n Sayfada 20 Kayıt Göster \r\n Sayfada 30 Kayıt Göster \r\n Sayfada 40 Kayıt Göster \r\n Sayfada 50 Kayıt Göster \r\n \r\n \r\n \r\n \r\n \r\n \r\n >\r\n }\r\n
\r\n )\r\n}\r\n\r\nexport default PBGroup","import React, { useState, useEffect } from 'react'\r\nimport { getSmsMessageTemplates, deleteSMSMessageTemplates } from '../../_services/sms'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Pagination from '@material-ui/lab/Pagination';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Swal from \"sweetalert2\"\r\nimport { FileFields } from 'variables/fileFields';\r\nimport { numberFormat } from 'formats/number';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n nameContainer : {\r\n marginBottom : 10\r\n },\r\n rowCont : {\r\n minHeight : 300,\r\n marginBottom : 20\r\n }\r\n}));\r\n\r\nconst PBPeople = props => {\r\n const { addedPBPersonList, addedPBPersonListLength, firstQuery, loading, keyFieldType } = props\r\n const classes = useStyles();\r\n \r\n const [ PageSize, SetPageSize ] = useState(20)\r\n const [ PageNumber, SetPageNumber ] = useState(1)\r\n\r\n const [ search, setSearch ] = useState('')\r\n\r\n const PeopleRows = list => {\r\n return( list.map( item => {\r\n return(\r\n \r\n \r\n \r\n {(keyFieldType === FileFields.ID_FIELDTYPE_IDENTITYNUMBER ? item.identityNumber : (keyFieldType === FileFields.ID_FIELDTYPE_TAXNUMBER ? item.taxNumber : numberFormat(item.mobilePhone || '')))} \r\n \r\n \r\n {(item.name ? item.name : '') + ' ' + (item.surname ? item.surname : '')}\r\n \r\n \r\n \r\n handleDelete(item.recordId)} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }))\r\n }\r\n\r\n const handleDeleteAll = () => {\r\n firstQuery( \r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 7,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbPersonList : null,\r\n ReturnSourceListOption : 1,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"Name\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Surname\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"MobilePhone\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"Name\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Surname\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"MobilePhone\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n }\r\n\r\n const handleDelete = id => {\r\n firstQuery( \r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 3,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbPersonList : [id],\r\n ReturnSourceListOption : 1,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"Name\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Surname\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"MobilePhone\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"Name\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Surname\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"MobilePhone\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n }\r\n\r\n const handlePageSizeChange = (e) => {\r\n firstQuery(\r\n {\r\n NumberListOperation : 0,\r\n PbPersonListOperation : 1,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbPersonList : null,\r\n ReturnSourceListOption : 1,\r\n },\r\n {},\r\n { PageSize : e.target.value, PageNumber : 1}\r\n )\r\n SetPageSize(e.target.value)\r\n SetPageNumber(1)\r\n } \r\n \r\n const handlePageChange = (e, value) => {\r\n firstQuery(\r\n {\r\n NumberListOperation : 0,\r\n PbPersonListOperation : 1,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbPersonList : null,\r\n ReturnSourceListOption : 1,\r\n },\r\n {},\r\n { \r\n PageSize, PageNumber : value\r\n }\r\n )\r\n SetPageNumber(value)\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n SetPageNumber(1)\r\n SetPageSize(20)\r\n firstQuery({ ReturnSourceListOption : 1},{}, {SearchExpression : search},)\r\n }\r\n\r\n return(\r\n \r\n
\r\n \r\n setSearch(e.target.value),\r\n onKeyDown : e => { if(e.keyCode === 13){handleSearchSubmit()} },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n firstQuery({PbPersonListOperation : 1}, {}, {SearchExpression : ''})\r\n }}>Tümü \r\n \r\n \r\n \r\n \r\n \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n { loading \r\n ?
\r\n \r\n
\r\n : <>\r\n
\r\n {PeopleRows(addedPBPersonList)}\r\n \r\n
\r\n \r\n \r\n Sayfada 5 Kayıt Göster \r\n Sayfada 10 Kayıt Göster \r\n Sayfada 20 Kayıt Göster \r\n Sayfada 30 Kayıt Göster \r\n Sayfada 40 Kayıt Göster \r\n Sayfada 50 Kayıt Göster \r\n \r\n \r\n \r\n \r\n \r\n \r\n >\r\n }\r\n
\r\n )\r\n}\r\n\r\nexport default PBPeople","import React, { useState, useEffect } from 'react'\r\nimport { getSmsMessageTemplates, deleteSMSMessageTemplates } from '../../_services/sms'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Pagination from '@material-ui/lab/Pagination';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Swal from \"sweetalert2\"\r\nimport { FileFields } from 'variables/fileFields.js';\r\nimport { numberFormat } from 'formats/number';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n nameContainer : {\r\n marginBottom : 10\r\n },\r\n rowCont : {\r\n minHeight : 300,\r\n marginBottom : 20\r\n }\r\n}));\r\n\r\nconst AddedNumbers = props => {\r\n const { addedNumberList, addedNumberListLength, handleSubmit, loading, keyFieldType } = props\r\n const classes = useStyles();\r\n \r\n const [ PageSize, SetPageSize ] = useState(20)\r\n const [ PageNumber, SetPageNumber ] = useState(1)\r\n\r\n const [ search, setSearch ] = useState('')\r\n\r\n const showNumberRecord = (kt, item) => {\r\n switch(kt){\r\n case FileFields.ID_FIELDTYPE_IDENTITYNUMBER:\r\n case FileFields.ID_FIELDTYPE_TAXNUMBER:\r\n return item\r\n case FileFields.ID_FIELDTYPE_MOBILEPHONE:\r\n default:\r\n return numberFormat(item || '')\r\n }\r\n }\r\n\r\n const NumberRows = list => {\r\n return( list.map( item => {\r\n return(\r\n \r\n \r\n \r\n {showNumberRecord(keyFieldType, item)} \r\n \r\n \r\n \r\n handleDelete(item)} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }))\r\n }\r\n\r\n const handleDeleteAll = () => {\r\n handleSubmit({NumberListOperation : 7, ReturnSourceListOption : 1}, {})\r\n }\r\n\r\n const handleDelete = id => {\r\n handleSubmit({NumberListOperation : 3, NumberList : id, ReturnSourceListOption : 1 },{ PageSize, PageNumber : 1})\r\n }\r\n\r\n const handlePageSizeChange = (e) => {\r\n handleSubmit({NumberListOperation : 1, ReturnSourceListOption : 1},{ PageSize : e.target.value, PageNumber : 1})\r\n SetPageSize(e.target.value)\r\n SetPageNumber(1)\r\n } \r\n \r\n const handlePageChange = (e, value) => {\r\n handleSubmit({NumberListOperation : 1, ReturnSourceListOption : 1},{ PageSize, PageNumber : value})\r\n SetPageNumber(value)\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n handleSubmit({NumberListOperation : 1, ReturnSourceListOption : 1}, { SearchExpression : search})\r\n }\r\n\r\n return(\r\n \r\n
\r\n \r\n setSearch(e.target.value),\r\n onKeyDown : e => { if(e.keyCode === 13){handleSearchSubmit()} },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n handleSubmit({NumberListOperation : 1}, {SearchExpression : ''})\r\n }}>Tümü \r\n \r\n \r\n \r\n \r\n \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n { loading \r\n ?
\r\n \r\n
\r\n : <>\r\n
\r\n {NumberRows(addedNumberList)}\r\n \r\n
\r\n \r\n \r\n Sayfada 5 Kayıt Göster \r\n Sayfada 10 Kayıt Göster \r\n Sayfada 20 Kayıt Göster \r\n Sayfada 30 Kayıt Göster \r\n Sayfada 40 Kayıt Göster \r\n Sayfada 50 Kayıt Göster \r\n \r\n \r\n \r\n \r\n \r\n \r\n >\r\n }\r\n
\r\n )\r\n}\r\n\r\nexport default AddedNumbers","import * as smsActionTypes from'../_actionTypes/sms'\r\n\r\nexport const setSendingListLoading = (data) => {\r\n return dispatch => {\r\n dispatch(setSendingListLoading(data))\r\n }\r\n function setSendingListLoading(){ return { type : smsActionTypes.SETSENDINGLISTLOADING }} \r\n}\r\n\r\nexport const clearSendingListLoading = (user) => {\r\n return dispatch => {\r\n dispatch(clearSendingListLoading())\r\n }\r\n function clearSendingListLoading(){ return { type : smsActionTypes.CLEARSENDINGLISTLOADING }} \r\n}\r\n\r\nexport const setSendingSummaryLoading = (data) => {\r\n return dispatch => {\r\n dispatch(setSendingSummaryLoading(data))\r\n }\r\n function setSendingSummaryLoading(){ return { type : smsActionTypes.SETSENDINGSUMMARYLOADING }} \r\n}\r\n\r\nexport const clearSendingSummaryLoading = (user) => {\r\n return dispatch => {\r\n dispatch(clearSendingSummaryLoading())\r\n }\r\n function clearSendingSummaryLoading(){ return { type : smsActionTypes.CLEARSENDINGSUMMARYLOADING }} \r\n}","export const SETSENDINGLISTLOADING = 'RD_SMS_SETSENDINGLISTLOADING'\r\nexport const CLEARSENDINGLISTLOADING = 'RD_SMS_CLEARSENDINGLISTLOADING'\r\nexport const SETSENDINGSUMMARYLOADING = 'RD_SMS_SETSENDINGSUMMARYLOADING'\r\nexport const CLEARSENDINGSUMMARYLOADING = 'RD_SMS_CLEARSENDINGSUMMARYLOADING'","import Swal from \"sweetalert2\";\r\nimport { activateTwofa } from \"_actions/twofa\";\r\nimport { timeout } from \"_actions/user\";\r\n\r\nexport function checkResultResponse(res, dispatch, contentSuccess, contentFailed) {\r\n if (res !== undefined && res.data !== undefined && res.data.resultCode === undefined && res.data.result !== undefined) {\r\n return checkResponse(res, dispatch, contentSuccess, contentFailed)\r\n }\r\n else {\r\n if (res !== undefined && (res.status === undefined || res.status === 200) && res.data !== undefined && res.data.resultCode !== undefined && res.data.resultCode === 0) {\r\n if (contentSuccess != null) alertResultResponse(res, dispatch, contentSuccess, contentFailed)\r\n return true\r\n }\r\n else {\r\n alertResultResponse(res, dispatch, contentSuccess, contentFailed)\r\n return false\r\n }\r\n }\r\n}\r\n\r\nexport function alertResultResponse(res, dispatch, contentSuccess, contentFailed) {\r\n if (res !== undefined) {\r\n if (res.status !== undefined && res.status === 200) {\r\n alertResultObjectResponse(res.data, dispatch, contentSuccess, contentFailed)\r\n }\r\n else {\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'İşlemde hata oluştu.',\r\n html: (contentFailed ? contentFailed + ' ' : '') + 'HTTP durum kodu: ' + res.status.toString() + '\\nHTTP durum açıklaması: ' + res.statusText,\r\n confirmButtonText: \"Tamam\"\r\n })\r\n }\r\n }\r\n else {\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'İşlemde hata oluştu.',\r\n html: (contentFailed ? contentFailed + ' ' : '') + 'Yanıt boş',\r\n confirmButtonText: \"Tamam\"\r\n })\r\n }\r\n}\r\n\r\nexport function checkResultObjectResponse(result, dispatch, contentSuccess, contentFailed) {\r\n if (result !== undefined && result.resultCode !== undefined && result.resultCode === 0) {\r\n if (contentSuccess != null) alertResultObjectResponse(result, dispatch, contentSuccess, contentFailed)\r\n return true\r\n }\r\n else {\r\n alertResultObjectResponse(result, dispatch, contentSuccess, contentFailed)\r\n return false\r\n }\r\n}\r\n\r\nexport function alertResultObjectResponse(result, dispatch, contentSuccess, contentFailed) {\r\n if (result !== undefined) {\r\n if (result.resultCode !== undefined) {\r\n if (result.resultCode === -100 && dispatch && dispatch !== null) {\r\n dispatch(timeout())\r\n }\r\n else if (result.resultCode === -103 && dispatch && dispatch !== null) {\r\n dispatch(activateTwofa())\r\n }\r\n else if (result.resultCode === 0) {\r\n if (contentSuccess !== null) {\r\n Swal.fire({\r\n icon: 'success',\r\n title: (contentSuccess ? contentSuccess : 'İşlem başarılı.'),\r\n confirmButtonText: \"Tamam\"\r\n })\r\n }\r\n }\r\n else {\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'İşlemde hata oluştu.',\r\n html: (contentFailed ? contentFailed + ' ' : '') + 'Hata kodu : ' + result.resultCode.toString() + (result.resultUserFriendlyDescription ? 'Hata açıklaması : ' + result.resultUserFriendlyDescription : (result.resultDescription ? 'Hata açıklaması : ' + result.resultDescription : '')),\r\n confirmButtonText: \"Tamam\"\r\n })\r\n }\r\n }\r\n else {\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'İşlemde hata oluştu.',\r\n html: (contentFailed ? contentFailed + ' ' : '') + 'Hata kodu: Boş',\r\n confirmButtonText: \"Tamam\"\r\n })\r\n }\r\n }\r\n else {\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'İşlemde hata oluştu.',\r\n html: (contentFailed ? contentFailed + ' ' : '') + 'Yanıt boş',\r\n confirmButtonText: \"Tamam\"\r\n })\r\n }\r\n}\r\n\r\nexport function checkResponse(res, dispatch, contentSuccess, contentFailed) {\r\n if (res !== undefined && res.data !== undefined && res.data.result === undefined && res.data.resultCode !== undefined) {\r\n return checkResultResponse(res, dispatch, contentSuccess, contentFailed)\r\n }\r\n else {\r\n if (res !== undefined && (res.status === undefined || res.status === 200) && res.data !== undefined && res.data.result !== undefined && res.data.result.resultCode !== undefined && res.data.result.resultCode === 0) {\r\n if (contentSuccess != null) alertResponse(res, dispatch, contentSuccess, contentFailed)\r\n return true\r\n }\r\n else {\r\n alertResponse(res, dispatch, contentSuccess, contentFailed)\r\n return false\r\n }\r\n }\r\n}\r\n\r\nexport function alertResponse(res, dispatch, contentSuccess, contentFailed) {\r\n if (res !== undefined) {\r\n if (res.status !== undefined && res.status === 200) {\r\n if (res.data !== undefined) {\r\n alertResultObjectResponse(res.data.result, dispatch, contentSuccess, contentFailed)\r\n }\r\n else {\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'İşlemde hata oluştu.',\r\n html: (contentFailed ? contentFailed + ' ' : '') + 'Dönen yanıtta veri boş.',\r\n confirmButtonText: \"Tamam\"\r\n })\r\n }\r\n }\r\n else {\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'İşlemde hata oluştu.',\r\n html: (contentFailed ? contentFailed + ' ' : '') + 'HTTP durum kodu: ' + (res.status ? res.status.toString() : 'Boş') + '\\nHTTP durum açıklaması: ' + (res.statusText ? res.statusText : 'Boş'),\r\n confirmButtonText: \"Tamam\"\r\n })\r\n }\r\n }\r\n else {\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'İşlemde hata oluştu.',\r\n html: (contentFailed ? contentFailed + ' ' : '') + 'Yanıt: Boş',\r\n confirmButtonText: \"Tamam\"\r\n })\r\n }\r\n}\r\n\r\nexport function alertResponseError(error, contentFailed) {\r\n Swal.fire({\r\n icon: 'error',\r\n title: 'İşlemde hata oluştu.',\r\n html: getResponseErrorHtml(error, contentFailed),\r\n confirmButtonText: \"Tamam\"\r\n })\r\n}\r\n\r\nexport function getResponseErrorText(error, contentFailed) {\r\n return (contentFailed ? contentFailed + ' > ' : '') + (error && error.message ? error.message : 'Bilinmeyen hata')\r\n}\r\n\r\nexport function getResponseErrorHtml(error, contentFailed) {\r\n return (contentFailed ? contentFailed + ' ' : '') + 'Hata mesajı: ' + (error && error.message ? error.message + (error.message === 'Network Error' ? ' Lütfen Internet bağlantınızı kontrol ediniz.' : '') : 'Bilinmeyen hata')\r\n + (error && error.response && error.response.data && error.response.data.message ? ' Hata yanıt mesajı: ' + error.response.data.message : '')\r\n}\r\n\r\nexport function alertErrorText(errorTitle, errorHtml) {\r\n Swal.fire({\r\n icon: 'error',\r\n title: (errorTitle ? errorTitle : 'İşlemde hata oluştu.'),\r\n html: (errorHtml ? errorHtml : null),\r\n confirmButtonText: \"Tamam\"\r\n })\r\n}","export class ServiceType {\r\n static ENUM_SERVICETYPE_UNKNOWN = \"Unknown\";\r\n static ENUM_SERVICETYPE_SMS = \"SMS\";\r\n static ENUM_SERVICETYPE_MMS = \"MMS\";\r\n static ENUM_SERVICETYPE_EMAIL = \"Email\";\r\n static ENUM_SERVICETYPE_SMARTCAPABILITIES = \"SmartCapabilities\";\r\n static ENUM_SERVICETYPE_PERMISSIONMARKETING = \"PermissionMarketing\";\r\n static ENUM_SERVICETYPE_MEDYAMOBIL = \"MedyaMobil\";\r\n\r\n\r\n static ID_SERVICETYPE_UNKNOWN = 0;\r\n static ID_SERVICETYPE_SMS = 1;\r\n static ID_SERVICETYPE_MMS = 2;\r\n static ID_SERVICETYPE_EMAIL = 7;\r\n static ID_SERVICETYPE_SMARTCAPABILITIES = 9;\r\n static ID_SERVICETYPE_PERMISSIONMARKETING = 10;\r\n static ID_SERVICETYPE_MEDYAMOBIL = 14;\r\n}","import React, { useState, useEffect } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { sendingListBuilderCrud } from '../../_services/sms.js'\r\n\r\nimport { sendingListBuilderGetSummary } from '../../_services/sms'\r\n\r\nimport { Typography, ButtonGroup, Button, LinearProgress, Box } from \"@material-ui/core\"\r\nimport Menu from '@material-ui/core/Menu';\r\nimport { timeout } from '../../_actions/user'\r\n\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Accordion from '@material-ui/core/Accordion';\r\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\r\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent\"\r\n\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport AddNumberDialog from \"components/Sms/AddNumberDialog.js\"\r\nimport GroupRecordsDialog from \"components/Sms/GroupRecordsDialog.js\"\r\nimport PersonRecordsDialog from \"components/Sms/PersonRecordsDialog.js\"\r\nimport SavedFilesDialog from \"components/Sms/SavedFilesDialog.js\"\r\nimport SavedFiles from \"components/Sms/SavedFiles.js\"\r\nimport PBGroup from \"components/Sms/PBGroup.js\"\r\nimport PBPeople from \"components/Sms/PBPeople.js\"\r\nimport AddedNumbers from \"components/Sms/AddedNumbers.js\"\r\nimport { setSendingListLoading, clearSendingListLoading, setSendingSummaryLoading, clearSendingSummaryLoading } from '_actions/smsActions.js';\r\nimport { connect } from 'react-redux';\r\nimport { checkResponse } from '_helpers/notification.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\nimport { checkResultObjectResponse } from '_helpers/notification.js';\r\nimport { ServiceType } from 'variables/serviceType.js';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: '100%',\r\n },\r\n heading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n flexBasis: '33.33%',\r\n flexShrink: 0,\r\n },\r\n secondaryHeading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n color: theme.palette.text.secondary,\r\n },\r\n}));\r\n\r\nconst Step1 = props => {\r\n const classes = useStyles();\r\n const [loading, setLoading] = useState(false)\r\n const [addedNumberList, setAddedNumberList] = useState([])\r\n const [addedNumberListLength, setAddedNumberListLength] = useState(0)\r\n\r\n const [sourcePBGroupList, setSourcePBGroupList] = useState([])\r\n const [sourcePBGroupListLength, setSourcePBGroupListLength] = useState(0)\r\n\r\n const [sourcePBPersonList, setSourcePBPersonList] = useState([])\r\n const [sourcePBPersonListLength, setSourcePBPersonListLength] = useState(0)\r\n\r\n const [sourceSavedFileList, setSourceSavedFileList] = useState([])\r\n const [sourceSavedFileListLength, setSourceSavedFileListLength] = useState(0)\r\n\r\n const [addedPBGroupList, setAddedPBGroupList] = useState([])\r\n const [addedPBGroupListLength, setAddedPBGroupListLength] = useState(0)\r\n\r\n const [addedPBPersonList, setAddedPBPersonList] = useState([])\r\n const [addedPBPersonListLength, setAddedPBPersonListLength] = useState(0)\r\n\r\n const [addedSavedFileList, setAddedSavedFileList] = useState([])\r\n const [addedSavedFileListLength, setAddedSavedFileListLength] = useState(0)\r\n\r\n const [serviceType] = useState(ServiceType.ID_SERVICETYPE_SMS)\r\n const [ClearBefore] = useState(false)\r\n const [NumberListOperation] = useState(1)\r\n const [PbPersonListOperation] = useState(1)\r\n const [PbGroupListOperation] = useState(1)\r\n const [SavedFilesListOperation] = useState(1)\r\n const [NumberList, SetNumberList] = useState(\"\")\r\n const [PbPersonList, SetPbPersonList] = useState([])\r\n const [PbGroupIdList, SetPbGroupIdList] = useState([])\r\n const [PbSavedFileIdList, SetPbSavedFileIdList] = useState([])\r\n const [SourceListRequest] = useState({\r\n PageSize: 20,\r\n PageNumber: 1,\r\n SearchExpression: null\r\n })\r\n const [DestinationListRequest] = useState({\r\n PageSize: 20,\r\n PageNumber: 1,\r\n SearchExpression: null\r\n })\r\n const { dispatch, KeyFieldType, grandTotal, setGrandTotal } = props\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n\r\n const [addNumberDialog, setAddNumberDialog] = useState(false)\r\n const [savedFilesDialog, setSavedFilesDialog] = useState(false)\r\n const [personRecordsDialog, setPersonRecordsDialog] = useState(false)\r\n const [groupRecordsDialog, setGroupRecordsDialog] = useState(false)\r\n\r\n const [expanded, setExpanded] = React.useState(false);\r\n\r\n const handleChange = (panel) => (event, isExpanded) => {\r\n setExpanded(isExpanded ? panel : false);\r\n };\r\n\r\n const addNumberDialogToggle = () => {\r\n setAddNumberDialog(!addNumberDialog)\r\n }\r\n const savedFilesDialogToggle = () => {\r\n setSavedFilesDialog(!savedFilesDialog)\r\n }\r\n const personRecordsDialogToggle = () => {\r\n handleClose()\r\n setPersonRecordsDialog(!personRecordsDialog)\r\n }\r\n const groupRecordsDialogToggle = () => {\r\n handleClose()\r\n setGroupRecordsDialog(!groupRecordsDialog)\r\n }\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const getTotalCount = () => {\r\n const data = { ...props.data, ServiceType: serviceType }\r\n dispatch(setSendingSummaryLoading())\r\n sendingListBuilderGetSummary(data)\r\n .then(res => {\r\n dispatch(clearSendingSummaryLoading())\r\n if (checkResponse(res, dispatch, null, 'Gönderim listesi özeti hesaplanırken bir hata oluştu.')) {\r\n setGrandTotal(res.data.grandTotal)\r\n }\r\n })\r\n .catch(err => {\r\n dispatch(clearSendingSummaryLoading())\r\n alertResponseError(err, 'Gönderim listesi özeti hesaplanırken bir hata oluştu.')\r\n })\r\n };\r\n useEffect(() => {\r\n firstQuery({}, {}, {})\r\n }, [])\r\n\r\n const firstQuery = (q, sq, dq) => {\r\n dispatch(setSendingListLoading())\r\n const data = {\r\n ...props.data,\r\n ServiceType: serviceType,\r\n ClearBefore: false,\r\n KeyFieldType,\r\n NumberListOperation: 1,\r\n PbPersonListOperation: 1,\r\n PbGroupListOperation: 1,\r\n PbCustomFilterPersonListOperation: 1,\r\n SavedFilesListOperation: 1,\r\n NumberList: null,\r\n PbPersonList: null,\r\n PbGroupIdList: null,\r\n PbCustomFilterQueryIdListForPerson: null,\r\n PbCustomFilterQueryForPerson: null,\r\n SavedFileIdList: null,\r\n SavedFileSelectedKeyFieldIdList: null,\r\n ExcludeLust: null,\r\n SourceListRequest: {\r\n PageSize: 20,\r\n PageNumber: 1,\r\n SelectFields: null,\r\n SortFields: {\r\n FieldName: \"Value\",\r\n Direction: \"Ascending\"\r\n },\r\n Includes: null,\r\n SearchExpression: null,\r\n SearchCriterias: null,\r\n SearchQuery: null,\r\n IntersectList: null,\r\n ExceptList: null,\r\n CalculateTotalRecordCount: false,\r\n ...sq\r\n },\r\n DestinationListRequest: {\r\n PageSize: 20,\r\n PageNumber: 1,\r\n SelectFields: null,\r\n SortFields: {\r\n FieldName: \"Value\",\r\n Direction: \"Ascending\"\r\n },\r\n Includes: null,\r\n SearchExpression: null,\r\n SearchCriterias: null,\r\n SearchQuery: null,\r\n IntersectList: null,\r\n ExceptList: null,\r\n CalculateTotalRecordCount: true,\r\n ...dq\r\n },\r\n ReturnSourceListOption: 3,\r\n ReturnDestinationListOption: 3,\r\n ...q\r\n }\r\n sendingListBuilderCrud(data)\r\n .then(res => {\r\n dispatch(clearSendingListLoading())\r\n if (checkResponse(res, dispatch, null, 'Gönderim listesi işleminde bir hata oluştu.')) {\r\n if (res.data.addedNumberList && res.data.addedNumberList.result && res.data.addedNumberList.result.resultCode === 0) {\r\n setAddedNumberList(res.data.addedNumberList.list)\r\n SetNumberList('')\r\n setAddedNumberListLength(res.data.addedNumberList.totalRecordCount)\r\n }\r\n if (res.data.addedPBGroupList && res.data.addedPBGroupList.result && res.data.addedPBGroupList.result.resultCode === 0) {\r\n setAddedPBGroupList(res.data.addedPBGroupList.list)\r\n SetPbGroupIdList([])\r\n setAddedPBGroupListLength(res.data.addedPBGroupList.totalRecordCount)\r\n }\r\n if (res.data.addedPBPersonList && res.data.addedPBPersonList.result && res.data.addedPBPersonList.result.resultCode === 0) {\r\n setAddedPBPersonList(res.data.addedPBPersonList.list)\r\n SetPbPersonList([])\r\n setAddedPBPersonListLength(res.data.addedPBPersonList.totalRecordCount)\r\n }\r\n if (res.data.addedSavedFileList && res.data.addedSavedFileList.result && res.data.addedSavedFileList.result.resultCode === 0) {\r\n setAddedSavedFileList(res.data.addedSavedFileList.list)\r\n SetPbSavedFileIdList([])\r\n setAddedSavedFileListLength(res.data.addedSavedFileList.totalRecordCount)\r\n }\r\n if (res.data.sourcePBGroupList && res.data.sourcePBGroupList.result && res.data.sourcePBGroupList.result.resultCode === 0) {\r\n setSourcePBGroupList(res.data.sourcePBGroupList.list)\r\n setSourcePBGroupListLength(res.data.sourcePBGroupList.totalRecordCount)\r\n }\r\n if (res.data.sourcePBPersonList && res.data.sourcePBPersonList.result && res.data.sourcePBPersonList.result.resultCode === 0) {\r\n setSourcePBPersonList(res.data.sourcePBPersonList.list)\r\n setSourcePBPersonListLength(res.data.sourcePBPersonList.totalRecordCount)\r\n }\r\n if (res.data.sourceSavedFileList && res.data.sourceSavedFileList.result && res.data.sourceSavedFileList.result.resultCode === 0) {\r\n setSourceSavedFileList(res.data.sourceSavedFileList.list)\r\n setSourceSavedFileListLength(res.data.sourceSavedFileList.totalRecordCount)\r\n }\r\n }\r\n })\r\n .then(() => {\r\n getTotalCount()\r\n }\r\n )\r\n .catch(err => {\r\n dispatch(clearSendingListLoading())\r\n alertResponseError(err, 'Gönderim listesi işleminde bir hata oluştu.')\r\n })\r\n }\r\n\r\n const handleNumberListSubmit = (query, desq) => {\r\n dispatch(setSendingListLoading())\r\n const data = {\r\n ...props.data,\r\n NumberListOperation: 6,\r\n PbPersonListOperation: 0,\r\n PbGroupListOperation: 0,\r\n PbCustomFilterPersonListOperation: 0,\r\n SavedFileListOperation: 0,\r\n NumberList,\r\n KeyFieldType,\r\n PbPersonList: [],\r\n PbGroupIdList: [],\r\n PbSavedFileIdList: [],\r\n SourceListRequest: null,\r\n DestinationListRequest: {\r\n PageSize: 20,\r\n PageNumber: 1,\r\n SelectFields: null,\r\n SortFields: {\r\n FieldName: \"Value\",\r\n Direction: \"Ascending\"\r\n },\r\n Includes: null,\r\n SearchExpression: null,\r\n SearchCriterias: null,\r\n SearchQuery: null,\r\n IntersectList: null,\r\n ExceptList: null,\r\n CalculateTotalRecordCount: true,\r\n ...desq\r\n },\r\n ReturnSourceListOption: 3,\r\n ReturnDestinationListOption: 3,\r\n ...query\r\n }\r\n sendingListBuilderCrud(data)\r\n .then(res => {\r\n dispatch(clearSendingListLoading())\r\n if (checkResponse(res, dispatch, null, 'Girilen numaralar eklenemedi.')) {\r\n if (res.data.addedNumberList \r\n && res.data.addedNumberList.result \r\n && checkResultObjectResponse(res.data.addedNumberList.result, dispatch, null, 'Girilen numaralar eklenemedi.')) {\r\n setAddedNumberList(res.data.addedNumberList.list)\r\n SetNumberList('')\r\n setAddedNumberListLength(res.data.addedNumberList.totalRecordCount)\r\n setAddNumberDialog(false)\r\n }\r\n }\r\n })\r\n .then(() => {\r\n getTotalCount()\r\n }\r\n )\r\n .catch(err => {\r\n dispatch(clearSendingListLoading())\r\n alertResponseError(err, 'Girilen numaralar eklenemedi.')\r\n })\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Listesi\r\n \r\n \r\n \r\n \r\n NUMARA GİREREK EKLE \r\n TELEFON REHBERİMDEN EKLE \r\n KAYITLI DOSYALARDAN EKLE \r\n \r\n \r\n \r\n {\r\n props.smsReducer.sendingSummaryLoading\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim listesi toplam adeti hesaplanıyor. Lütfen bekleyiniz... \r\n \r\n \r\n \r\n : grandTotal > 0 &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n }\r\n aria-controls=\"panel4bh-content\"\r\n id=\"panel4bh-header\"\r\n >\r\n Eklenen Numaralar \r\n {props.smsReducer.sendingListLoading\r\n ? \r\n : \r\n {(addedNumberListLength || '0').toLocaleString(\"tr-TR\")} numara eklendi\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n aria-controls=\"panel2bh-content\"\r\n id=\"panel2bh-header\"\r\n >\r\n Rehberden Eklenen Gruplar \r\n {props.smsReducer.sendingListLoading\r\n ? \r\n : \r\n {(addedPBGroupListLength || '0').toLocaleString(\"tr-TR\")} grup eklendi\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n aria-controls=\"panel3bh-content\"\r\n id=\"panel3bh-header\"\r\n >\r\n Rehberden Eklenen Kişiler \r\n {props.smsReducer.sendingListLoading\r\n ? \r\n : \r\n {(addedPBPersonListLength || '0').toLocaleString(\"tr-TR\")} kişi eklendi\r\n \r\n }\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n aria-controls=\"panel1bh-content\"\r\n id=\"panel1bh-header\"\r\n >\r\n Eklenen Kayıtlı Dosyalar \r\n {props.smsReducer.sendingListLoading\r\n ? \r\n : \r\n {(addedSavedFileListLength || '0').toLocaleString(\"tr-TR\")} dosya eklendi\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 setGroupRecordsDialog(false)}\r\n sourcePBGroupList={sourcePBGroupList}\r\n sourcePBGroupListLength={sourcePBGroupListLength}\r\n firstQuery={firstQuery}\r\n PbGroupList={props.PbGroupList || []}\r\n loading={props.smsReducer.sendingListLoading}\r\n />\r\n setPersonRecordsDialog(false)}\r\n sourcePBPersonList={sourcePBPersonList}\r\n sourcePBPersonListLength={sourcePBPersonListLength}\r\n firstQuery={firstQuery}\r\n PbPersonList={props.PbPersonList || []}\r\n loading={props.smsReducer.sendingListLoading}\r\n KeyFieldType={KeyFieldType}\r\n />\r\n setSavedFilesDialog(false)}\r\n sourceSavedFileList={sourceSavedFileList}\r\n sourceSavedFileListLength={sourceSavedFileListLength}\r\n firstQuery={firstQuery}\r\n SavedFileIdList={props.SavedFileIdList || []}\r\n loading={props.smsReducer.sendingListLoading}\r\n KeyFieldType={KeyFieldType}\r\n />\r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { smsReducer } = state\r\n return { smsReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps)(Step1)","import { domain } from './domain'\r\nimport axios from 'axios'\r\n\r\nexport const getMessageLengthOptions = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Definitions/GetMessageLengthOptions', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getCustomerCustomFields = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Definitions/GetCustomerCustomFields', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getCustomerCustomFieldsLookupValues = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Definitions/GetCustomerCustomFieldsLookupValues', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getCustomerCustomFieldsSendTasksValues = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Definitions/GetCustomerCustomFieldsSendTasksValues', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}","import React, { useState } from 'react'\r\nimport { saveSmsMessageTemplate } from '../../_services/sms'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport { getResponseErrorText } from '_helpers/notification';\r\nimport { checkResponse } from '_helpers/notification';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n nameContainer : {\r\n marginBottom : 10\r\n }\r\n}));\r\n\r\nconst NewSmsTemplateDialog = props => {\r\n const [ alert, setAlert ] = useState('')\r\n const [ loading, setLoading ] = useState(false)\r\n const { open, data, toggle, Mode, TemplateName, SetTemplateName, MessageTemplate, SetMessageTemplate } = props\r\n const classes = useStyles();\r\n\r\n const handleSubmit = () => {\r\n const newData = { ...data, TemplateName, MessageTemplate }\r\n setLoading(true)\r\n saveSmsMessageTemplate(newData)\r\n .then( res => {\r\n setLoading(false)\r\n if(checkResponse(res, null, 'Mesaj şablonu kaydedildi.', 'Mesaj şablonu kaydedilirken bir hata oluştu.')){\r\n toggle()\r\n SetTemplateName('')\r\n }\r\n })\r\n .catch( err => {\r\n setLoading(false)\r\n setAlert(getResponseErrorText(err, 'Mesaj şablonu kaydedilirken bir hata oluştu.'))\r\n })\r\n }\r\n\r\n return(\r\n \r\n {Mode === 0 ? \"Şablon Ekle\" : \"Şablon Düzenle\"} \r\n \r\n { alert !== '' &&\r\n \r\n \r\n
\r\n }\r\n \r\n \r\n SetTemplateName(e.target.value)}\r\n className={classes.nameContainer}\r\n fullWidth\r\n />\r\n \r\n \r\n SetMessageTemplate(e.target.value)}\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n \r\n { loading \r\n ? \r\n : <>\r\n \r\n Vazgeç\r\n \r\n \r\n {Mode === 0 ? 'Oluştur' : \"DÜZENLE\"}\r\n \r\n >\r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default NewSmsTemplateDialog","import React, { useState, useEffect } from 'react'\r\nimport { getSmsMessageTemplates, deleteSMSMessageTemplates } from '../../_services/sms'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport ControlPointIcon from '@material-ui/icons/ControlPoint';\r\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Pagination from '@material-ui/lab/Pagination';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Swal from \"sweetalert2\"\r\nimport moment from 'moment';\r\nimport { getResponseErrorText } from '_helpers/notification';\r\nimport { checkResponse } from '_helpers/notification';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n nameContainer: {\r\n marginBottom: 10\r\n },\r\n rowCont: {\r\n minHeight: 300,\r\n marginBottom: 20\r\n }\r\n}));\r\n\r\nconst SmsTemplateDialog = props => {\r\n const [alert, setAlert] = useState('')\r\n const [loading, setLoading] = useState(false)\r\n const [TemplateList, SetTemplateList] = useState([])\r\n const [totalCount, setTotalCount] = useState(0)\r\n\r\n const { open, data, toggle, setMessage, fixMessage, canUseTurkishCharacters } = props\r\n const classes = useStyles();\r\n\r\n const [PageSize, SetPageSize] = useState(10)\r\n const [PageNumber, SetPageNumber] = useState(1)\r\n const [SelectFields, SetSelectFields] = useState([\r\n \"RefId\", \"TemplateName\", \"MsgTemplate\", \"TemplateType\", \"LastUpdateDate\", \"InsertDate\"\r\n ])\r\n const [SortFields, SetSortFields] = useState([\r\n {\r\n FieldName: \"TemplateName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n const [Includes, SetIncludes] = useState(null)\r\n const [SearchExpression, SetSearchExpression] = useState(null)\r\n const [SearchCriterias, SetSearchCriterias] = useState(null)\r\n const [SearchQuery, SetSearchQuery] = useState(null)\r\n const [IntersectList, SetIntersectList] = useState(null)\r\n const [ExceptList, SetExceptList] = useState(null)\r\n const [CalculateTotalRecordCount, SetCalculateTotalRecordCount] = useState(true)\r\n\r\n const [search, setSearch] = useState('')\r\n\r\n useEffect(() => {\r\n if (open) {\r\n fetchData({})\r\n }\r\n }, [open])\r\n\r\n\r\n const fetchData = (query) => {\r\n const ListRequest = {\r\n PageSize,\r\n PageNumber,\r\n SelectFields,\r\n SortFields,\r\n Includes,\r\n SearchExpression,\r\n SearchCriterias,\r\n SearchQuery,\r\n IntersectList,\r\n ExceptList,\r\n CalculateTotalRecordCount,\r\n ...query\r\n }\r\n const newdata = { AuthData: data, ListRequest }\r\n setLoading(true)\r\n getSmsMessageTemplates(newdata)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'Mesaj şablonları listesi getirilirken bir hata oluştu.')) {\r\n SetTemplateList(res.data.templateList)\r\n setTotalCount(res.data.totalRecordCount)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n setAlert(getResponseErrorText(err, 'Mesaj şablonları listesi getirilirken bir hata oluştu.'))\r\n })\r\n }\r\n\r\n const handleUse = item => {\r\n if (canUseTurkishCharacters) {\r\n setMessage(item.messageTemplate)\r\n } else {\r\n setMessage(fixMessage(item.messageTemplate))\r\n }\r\n toggle()\r\n }\r\n\r\n const TemplateRows = list => {\r\n return (list.map(item => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {item.templateName} \r\n \r\n \r\n Eklenme Tarihi : {moment(item.insertDate).format('DD.MM.YYYY HH:mm')}\r\n \r\n \r\n {item.messageTemplate}\r\n \r\n \r\n \r\n \r\n \r\n handleUse(item)} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n handleDelete(item.id)} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }))\r\n }\r\n\r\n const handleDelete = id => {\r\n const newData = { ...data, RecordIdList: [id.toString()] }\r\n\r\n Swal.fire({\r\n title: 'Mesaj şablonunu silmek istediğinize emin misiniz?',\r\n showDenyButton: true,\r\n confirmButtonText: 'Sil',\r\n denyButtonText: 'Vazgeç',\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n deleteSMSMessageTemplates(newData)\r\n .then(res => {\r\n if (checkResponse(res, null, 'Mesaj şablonu silindi.', 'Mesaj şablonu silinirken bir hata oluştu.')) {\r\n fetchData({})\r\n }\r\n })\r\n .catch(err => setAlert(getResponseErrorText(err, 'Mesaj şablonu silinirken bir hata oluştu.')))\r\n } else if (result.isDenied) {\r\n Swal.fire('Şablon silinmedi.', '', 'info')\r\n }\r\n })\r\n }\r\n\r\n const handlePageSizeChange = (e) => {\r\n fetchData({ PageSize: e.target.value, PageNumber: 1 })\r\n SetPageSize(e.target.value)\r\n SetPageNumber(1)\r\n }\r\n\r\n const handlePageChange = (e, value) => {\r\n fetchData({ PageNumber: value })\r\n SetPageNumber(value)\r\n }\r\n\r\n const handleSubmit = () => {\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n fetchData({ SearchExpression: search })\r\n }\r\n\r\n return (\r\n \r\n Sms Mesaj Şablonları \r\n \r\n {alert !== '' &&\r\n \r\n \r\n
\r\n }\r\n \r\n \r\n setSearch(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { handleSearchSubmit() } },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n fetchData({ SearchExpression: '' })\r\n }}>Tümü \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n \r\n {loading\r\n ? \r\n \r\n
\r\n :\r\n TemplateRows(TemplateList)\r\n }\r\n \r\n \r\n \r\n \r\n Sayfada 5 Kayıt Göster \r\n Sayfada 10 Kayıt Göster \r\n Sayfada 20 Kayıt Göster \r\n Sayfada 30 Kayıt Göster \r\n Sayfada 40 Kayıt Göster \r\n Sayfada 50 Kayıt Göster \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {loading\r\n ? \r\n : \r\n Kapat\r\n \r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default SmsTemplateDialog","import React from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Box from '@material-ui/core/Box';\r\nimport { CircularProgress } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n fields : {\r\n cursor : \"pointer\",\r\n color : \"#fff\",\r\n background : \"#3c54a5\",\r\n borderRadius : 5,\r\n width : '100%',\r\n display : \"flex\",\r\n justifyContent: \"center\",\r\n alignItems : \"center\",\r\n height : 40,\r\n margin : 10,\r\n\r\n }\r\n}));\r\n\r\nconst UsableDynamicMessageFieldsDialog = props => {\r\n\r\n const { open, toggle, message, setMessage, _cursor, usableDynamicMessageFields,_setCursor, setDynamicFieldNames, setIsDynamic, dynamicFieldNames, canUseTurkishCharacters, countFixer, setCountFixer } = props\r\n const loading = props.sendingSummaryLoading\r\n const classes = useStyles();\r\n\r\n const buttons = data => {\r\n return( data.map( d => {\r\n return(\r\n \r\n {\r\n const c = parseInt(_cursor)\r\n let newMessage= message.slice(0,c)+'['+d.fieldDisplayName +']'+message.slice(c+1)\r\n setCountFixer((countFixer - d.maxLength + (canUseTurkishCharacters ? 2 : 4) + d.fieldDisplayName.length))\r\n setMessage(newMessage)\r\n _setCursor(newMessage.length)\r\n toggle()\r\n setIsDynamic(true)\r\n const index = dynamicFieldNames.indexOf(d.fieldDisplayName)\r\n if(index === -1){\r\n setDynamicFieldNames([\r\n ...dynamicFieldNames,\r\n d.fieldDisplayName\r\n ])\r\n }\r\n }}>{d.fieldDisplayName} \r\n \r\n )\r\n }))\r\n }\r\n\r\n return(\r\n \r\n Kullanılabilir Dinamik Alanlar \r\n \r\n \r\n { loading \r\n ? \r\n : buttons(usableDynamicMessageFields)\r\n }\r\n \r\n \r\n \r\n \r\n Kapat\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default UsableDynamicMessageFieldsDialog","import React, { useState, useEffect } from 'react'\r\nimport { sendingListBuilderGetSummary } from '../../_services/sms'\r\nimport { getMessageLengthOptions } from '../../_services/definitions'\r\nimport TextField from '@material-ui/core/TextField'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport SaveSmsTemplateDialog from 'components/Sms/SaveSmsTemplateDialog'\r\nimport SmsTemplateDialog from 'components/Sms/SmsTemplateDialog'\r\nimport UsableDynamicMessageFieldsDialog from 'components/Sms/UsableDynamicMessageFieldsDialog.js'\r\nimport { connect } from 'react-redux'\r\nimport { setSendingSummaryLoading, clearSendingSummaryLoading } from '_actions/smsActions'\r\nimport { checkResponse } from '_helpers/notification'\r\nimport { alertResponseError } from '_helpers/notification'\r\nimport SnackbarContent from 'components/Snackbar/SnackbarContent'\r\nimport { ServiceType } from 'variables/serviceType'\r\n\r\nconst Step2 = props => {\r\n const [SmsDialog, SetSmsDialog] = useState(false)\r\n const [SaveSmsDialog, SetSaveSmsDialog] = useState(false)\r\n const [TemplateName, SetTemplateName] = useState('')\r\n const [MessageTemplate, SetMessageTemplate] = useState('')\r\n const [TemplateMode, SetTemplateMode] = useState(0)\r\n const [_isMounted, _setIsMounted] = useState(false)\r\n const [loading, setLoading] = useState(false)\r\n const [messageLengthOptionsLoading, setMessageLengthOptionsLoading] = useState(false)\r\n\r\n const [_cursor, _setCursor] = useState(0)\r\n const [dynamicFields, setDynamicFields] = useState(false)\r\n const [charOptions, setCharOptions] = useState([])\r\n\r\n const [MaxMessageLength] = useState(props.user.userRights.service_SMS_maxMessageLength)\r\n const [PayFactor] = useState(1)\r\n const [CharacterSet, SetCharacterSet] = useState('GSM7')\r\n const [ChannelType] = useState(props.SenderInfo.operatorType)\r\n const [CountOperatorCode] = useState(props.SenderInfo.isBxxxCodeCharging)\r\n const [countFixer, setCountFixer] = useState(0)\r\n\r\n const dynamicFieldsToggle = () => {\r\n setDynamicFields(!dynamicFields)\r\n }\r\n\r\n const getChar = (q) => {\r\n const data = {\r\n MaxMessageLength,\r\n PayFactor,\r\n CharacterSet,\r\n ChannelType,\r\n CountOperatorCode,\r\n ...q\r\n }\r\n setMessageLengthOptionsLoading(true)\r\n getMessageLengthOptions(data)\r\n .then(res => {\r\n setMessageLengthOptionsLoading(false)\r\n if (checkResponse(res, null, null, 'Mesaj uzunluğu seçenekleri getirilirken bir hata oluştu.')) {\r\n setCharOptions(res.data.messageLengthOptions)\r\n if (res.data.messageLengthOptions.length < smsUnit - 1) {\r\n setSmsUnit(res.data.messageLengthOptions.length)\r\n setMaxCharLength(res.data.messageLengthOptions[res.data.messageLengthOptions.length - 1].maxMessageLength)\r\n if (countChar(message) > res.data.messageLengthOptions[res.data.messageLengthOptions.length - 1].maxMessageLength) {\r\n let newMessage = message.slice(0, res.data.messageLengthOptions[res.data.messageLengthOptions.length - 1].maxMessageLength)\r\n setMessage(newMessage)\r\n }\r\n } else {\r\n let maxMessageLengthIndexTemporary = (res.data.messageLengthOptions.length >= smsUnit ? smsUnit - 1 : res.data.messageLengthOptions.length - 1);\r\n let maxMessageLengthTemporary = res.data.messageLengthOptions[maxMessageLengthIndexTemporary].maxMessageLength;\r\n setMaxCharLength(maxMessageLengthTemporary)\r\n if (countChar(message) > maxMessageLengthTemporary) {\r\n let newMessage = message.slice(0, maxMessageLengthTemporary)\r\n setMessage(newMessage)\r\n }\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n setMessageLengthOptionsLoading(false)\r\n alertResponseError(err, 'Mesaj uzunluğu seçenekleri getirilirken bir hata oluştu.')\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n charSetHelper(canUseTurkishCharacters)\r\n }, [])\r\n\r\n\r\n const weightedChar = (char, charSet) => {\r\n if (charSet === 'UCS2') {\r\n return 1\r\n } else {\r\n switch (char) {\r\n case \"|\":\r\n case \"^\":\r\n case \"€\":\r\n case \"{\":\r\n case \"}\":\r\n case \"[\":\r\n case \"~\":\r\n case \"]\":\r\n case \"\\\\\":\r\n return 2\r\n case \"Ş\":\r\n case \"ç\":\r\n case \"ş\":\r\n case \"Ğ\":\r\n case \"ğ\":\r\n case \"İ\":\r\n case \"ı\":\r\n return charSet === 'GSM7' ? 1 : 2\r\n default:\r\n return 1\r\n }\r\n }\r\n }\r\n\r\n const countChar = (m) => {\r\n let message = m.split('')\r\n let length = 0\r\n for (let i = 0; i < message.length; i++) {\r\n length += weightedChar(m[i], CharacterSet)\r\n }\r\n length -= ((m.split(\"#*#n\").length - 1) * (\"#*#n\".length - 1));\r\n return length\r\n }\r\n\r\n const { dispatch, maxCharLength, setMaxCharLength,\r\n smsUnit, setSmsUnit, dynamicFieldNamesFixer } = props\r\n\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleSaveSmsTemplateModalToggle = () => {\r\n SetSaveSmsDialog(!SaveSmsDialog)\r\n SetMessageTemplate(message)\r\n }\r\n\r\n const handleSmsTemplateModalToggle = () => {\r\n SetSmsDialog(!SmsDialog)\r\n }\r\n\r\n useEffect(() => {\r\n _setIsMounted(true)\r\n dispatch(setSendingSummaryLoading())\r\n setLoading(true)\r\n const data = { ...props.data, ServiceType: ServiceType.ID_SERVICETYPE_SMS }\r\n sendingListBuilderGetSummary(data)\r\n .then(res => {\r\n dispatch(clearSendingSummaryLoading())\r\n setLoading(false)\r\n if (checkResponse(res, dispatch, null, 'Gönderim listesi özeti hesaplanırken bir hata oluştu.')) {\r\n setDynamicMessageFields(res.data.usableDynamicMessageFields)\r\n }\r\n })\r\n .catch(err => {\r\n dispatch(clearSendingSummaryLoading())\r\n setLoading(false)\r\n alertResponseError(err, 'Gönderim listesi özeti hesaplanırken bir hata oluştu.')\r\n })\r\n return () => _setIsMounted(false)\r\n }, [])\r\n\r\n const { message, setMessage, data,\r\n canUseTurkishCharacters, setCanUseTurkishCharacters, setSmsCharacterset,\r\n isDynamic, setIsDynamic,\r\n dynamicFieldNames, setDynamicFieldNames, dynamicFieldNamesNotIncludes, setDynamicFieldNamesNotIncludes, user, SenderInfo, dynamicMessageFields, setDynamicMessageFields\r\n } = props\r\n\r\n\r\n\r\n const fixChar = char => {\r\n switch (char) {\r\n case 'ç':\r\n return 'c'\r\n // case 'Ç':\r\n // return 'C'\r\n case 'ğ':\r\n return 'g'\r\n case 'Ğ':\r\n return 'G'\r\n case 'ı':\r\n return 'i'\r\n case 'İ':\r\n return 'I'\r\n // case 'ö':\r\n // return 'o'\r\n // case 'Ö':\r\n // return 'O'\r\n case 'ş':\r\n return 's'\r\n case 'Ş':\r\n return 'S'\r\n // case 'ü':\r\n // return 'u'\r\n // case 'Ü':\r\n // return 'Ü'\r\n default:\r\n return char\r\n }\r\n }\r\n\r\n const fixMessage = (m) => {\r\n var message = m.split(\"\")\r\n var _skip = false\r\n var fixedMessage = ''\r\n var closureIndex = -1\r\n var tempFieldName = null;\r\n for (let i = 0; i < message.length; i++) {\r\n if (m[i] === '[') {\r\n closureIndex = m.indexOf(']', i)\r\n if (closureIndex >= 0) {\r\n tempFieldName = m.substr(i + 1, closureIndex - i - 1)\r\n if (dynamicMessageFields && dynamicMessageFields.length > 0 && dynamicMessageFields.filter(f => f.fieldDisplayName === tempFieldName).length > 0) {\r\n _skip = true\r\n }\r\n }\r\n }\r\n if (m[i] === ']') {\r\n _skip = false\r\n }\r\n if (_skip) {\r\n fixedMessage += m[i]\r\n } else {\r\n fixedMessage += fixChar(m[i])\r\n }\r\n }\r\n return fixedMessage\r\n }\r\n\r\n const handleFocus = (e) => {\r\n const { selectionStart } = e.target\r\n _setCursor(selectionStart)\r\n }\r\n\r\n const handleMessage = e => {\r\n const { selectionStart } = e.target\r\n _setCursor(selectionStart)\r\n let { value } = e.target\r\n\r\n let oldRegExArray = [/“/gi, /”/gi, /‘/gi, /’/gi, /–/gi, /…/gi, /\\t/gi, String.fromCharCode(160)]\r\n let newRegExArray = [\"\\\"\", \"\\\"\", \"'\", \"'\", \"-\", \"...\", \" \", \" \"]\r\n for (let i = 0; i < oldRegExArray.length; i++) {\r\n value = value.replace(oldRegExArray[i], newRegExArray[i])\r\n }\r\n\r\n let lastRegExArray = [\"a\", \"b\", \"c\", \"ç\", \"d\", \"e\", \"f\", \"g\", \"ğ\", \"h\", \"ı\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"ö\", \"p\", \"q\", \"r\", \"s\", \"ş\", \"t\", \"u\", \"ü\", \"v\", \"w\", \"x\", \"y\", \"z\", \"A\", \"B\", \"C\", \"Ç\", \"D\", \"E\", \"F\", \"G\", \"Ğ\", \"H\", \"I\", \"İ\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"Ö\", \"P\", \"Q\", \"R\", \"S\", \"Ş\", \"T\", \"U\", \"Ü\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \":\", \";\", \"<\", \"=\", \">\", \"?\", \"¡\", \"Ä\", \"Ö\", \"Ñ\", \"Ü\", \"§\", \"¿\", \"ä\", \"ö\", \"ñ\", \"ü\", \"à\", \"@\", \"£\", \"$\", \"¥\", \"è\", \"é\", \"ù\", \"ì\", \"ò\", \"Ç\", \"Ø\", \"ø\", \"Å\", \"å\", \"_\", \"Æ\", \"æ\", \"ß\", \"É\", String.fromCharCode(32), \"!\", \"\\\"\", \"#\", \"¤\", \"%\", \"&\", \"'\", \"(\", \")\", \"*\", \"+\", \",\", \"-\", \".\", \"/\", \"\\n\", \"|\", \"^\", \"€\", \"{\", \"}\", \"[\", \"]\", \"\\\\\"]\r\n let splitValue = value.split('')\r\n let deleted = splitValue.filter(a => !lastRegExArray.includes(a))\r\n for (let i = 0; i < deleted.length; i++) {\r\n value = value.replace(deleted[i], '')\r\n }\r\n\r\n if (canUseTurkishCharacters) {\r\n setMessage(value)\r\n } else {\r\n if (value.length > 0) {\r\n value = fixMessage(value)\r\n setMessage(value)\r\n } else {\r\n setMessage(value)\r\n }\r\n }\r\n if (dynamicMessageFields && dynamicMessageFields.length > 0) {\r\n if (value.includes('[') && value.includes(']')) {\r\n let m = value.split('')\r\n let letter = false\r\n let field = ''\r\n let fields = []\r\n for (let i = 0; i < m.length; i++) {\r\n if (m[i] === ']') {\r\n letter = false\r\n fields = [\r\n ...fields,\r\n field\r\n ]\r\n field = ''\r\n }\r\n if (letter) {\r\n field += m[i]\r\n }\r\n if (m[i] === '[') {\r\n letter = true\r\n }\r\n }\r\n\r\n let tempCountFixer = 0;\r\n let fixedArray = []\r\n if (fields && fields.length > 0 && dynamicMessageFields) {\r\n fixedArray = fields.filter(value => dynamicMessageFields.map(f => {\r\n if (f.fieldDisplayName === value) {\r\n tempCountFixer += (0 - f.maxLength + (canUseTurkishCharacters ? 2 : 4) + f.fieldDisplayName.length)\r\n }\r\n }))\r\n }\r\n setCountFixer(tempCountFixer)\r\n } else {\r\n setCountFixer(0)\r\n }\r\n }\r\n\r\n var messageCharacterCount = countChar(value)\r\n if (messageCharacterCount - countFixer > maxCharLength) {\r\n value = value.substr(0, value.length - (messageCharacterCount - countFixer - maxCharLength))\r\n setMessage(value)\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n dynamicFieldNamesFixer()\r\n }, [message])\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const menuItemOptions = () => {\r\n return (\r\n charOptions.map(option => {\r\n return (\r\n {\r\n handleClose()\r\n setSmsUnit(option.payableAmount)\r\n setMaxCharLength(option.maxMessageLength)\r\n if (countChar(message) > option.maxMessageLength) {\r\n let newMessage = message.slice(0, option.maxMessageLength)\r\n setMessage(newMessage)\r\n }\r\n }} key={option.maxMessageLength} >\r\n {option.label}\r\n \r\n )\r\n })\r\n )\r\n }\r\n\r\n const charSetHelper = (bool) => {\r\n if (bool) {\r\n setSmsCharacterset(1)\r\n if (SenderInfo.permissions.indexOf(0) > -1) {\r\n SetCharacterSet('TurkishNLSS')\r\n getChar({ CharacterSet: 'TurkishNLSS' })\r\n }\r\n if (SenderInfo.permissions.indexOf(1) > -1) {\r\n SetCharacterSet('UCS2')\r\n getChar({ CharacterSet: 'UCS2' })\r\n }\r\n } else {\r\n setSmsCharacterset(0)\r\n setMessage(fixMessage(message))\r\n SetCharacterSet('GSM7')\r\n getChar({ CharacterSet: 'GSM7' })\r\n }\r\n }\r\n\r\n // const menuItemOptions2 = () => {\r\n // if(canUseTurkishCharacters){\r\n // return(\r\n // trCharOptions.map( (item, i) => {\r\n // return(\r\n // {\r\n // handleClose()\r\n // setSmsUnit(i)\r\n // setMaxCharLength(item)\r\n // if( message.length > trCharOptions[i] ){\r\n // let newMessage = message.slice(0, trCharOptions[i])\r\n // setMessage(newMessage)\r\n // }\r\n // }} key={item} >En fazla {item} karakter kullanımı ve her bir mesaj için {i+1} SMS ücretlendirme \r\n // )\r\n // })\r\n // )\r\n // }else{\r\n // return(\r\n // charOptions.map( (item, i) => {\r\n // return(\r\n // {\r\n // handleClose()\r\n // setSmsUnit(i)\r\n // setMaxCharLength(item)\r\n // if( message.length > charOptions[i] ){\r\n // let newMessage = message.slice(0, charOptions[i])\r\n // setMessage(newMessage)\r\n // }\r\n // }} key={item} >En fazla {item} karakter kullanımı ve her bir mesaj için {i+1} SMS ücretlendirme \r\n // )\r\n // })\r\n // ) \r\n // }\r\n // }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n SMS Metni\r\n \r\n \r\n \r\n {\r\n props.smsReducer.sendingSummaryLoading || loading\r\n ? \r\n :\r\n dynamicMessageFields && dynamicMessageFields.length > 0 &&\r\n +KULLANILABİLİR ALANLAR \r\n }\r\n \r\n \r\n {(SenderInfo.permissions.includes(0) || SenderInfo.permissions.includes(1)) &&\r\n {\r\n charSetHelper(!canUseTurkishCharacters)\r\n setCanUseTurkishCharacters(!canUseTurkishCharacters)\r\n }}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n }\r\n label=\"Tüm Türkçe karakterleri (ç, ğ, Ğ, ı, İ, ş, Ş dahil) kullanabilmek istiyorum.\"\r\n />\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n Kullanılan Karakter : {countChar(message) - countFixer}\r\n \r\n \r\n Kalan Karakter : {maxCharLength - countChar(message) + countFixer}\r\n {messageLengthOptionsLoading\r\n ?\r\n \r\n :\r\n \r\n ARTTIR\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n Mesaj şablonundan ekle\r\n \r\n \r\n Mesaj şablonu olarak kaydet\r\n \r\n \r\n \r\n \r\n {dynamicFieldNamesNotIncludes && dynamicFieldNamesNotIncludes.length > 0 &&\r\n \r\n \r\n SMS metni içerisindeki köşeli parantezler dinamik değişken alanları ifade eder. SMS metninde köşeli parantezler içerisinde belirtilmiş içerikler mevcut ancak kullanılabilir dinamik alanlar içerisinde bu değerlerde dinamik alan bulunmamaktadır. Eğer bu içerikler bir dinamik alan olarak kullanılması amaçlanıyorsa bu alanları \"Kullanılabilir Alanlar\" kısmından ekleyiniz. Aksi halde metinde görüldüğü şekilde alıcılara iletilecektir. Kontrol edilmesi gereken alanlar: {dynamicFieldNamesNotIncludes.join(',')}\r\n }\r\n color=\"warning\"\r\n />\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { smsReducer } = state\r\n return { smsReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps)(Step2)","import React, { useState, useEffect } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { sendingListBuilderGetSummary } from '../../_services/sms'\r\nimport clsx from 'clsx';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Switch from '@material-ui/core/Switch';\r\nimport { Select, MenuItem } from \"@material-ui/core\"\r\nimport { DateTimePicker } from \"@material-ui/pickers\";\r\nimport { timeout } from '../../_actions/user'\r\n\r\n// core components\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport { Typography, ButtonGroup, Button } from '@material-ui/core'\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport { checkResponse } from '_helpers/notification';\r\nimport { alertResponseError } from '_helpers/notification';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n },\r\n textField: {\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n width: 200,\r\n },\r\n radioButtons: {\r\n border: '1px solid lightgray',\r\n borderRadius: 10,\r\n padding: 10,\r\n marginTop: 50\r\n },\r\n button: {\r\n marginTop: 30,\r\n marginBottom: 30\r\n },\r\n root: {\r\n '&:hover': {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n icon: {\r\n borderRadius: '50%',\r\n width: 16,\r\n height: 16,\r\n boxShadow: 'inset 0 0 0 1px rgba(16,22,26,.2), inset 0 -1px 0 rgba(16,22,26,.1)',\r\n backgroundColor: '#f5f8fa',\r\n backgroundImage: 'linear-gradient(180deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0))',\r\n '$root.Mui-focusVisible &': {\r\n outline: '2px auto rgba(19,124,189,.6)',\r\n outlineOffset: 2,\r\n },\r\n 'input:hover ~ &': {\r\n backgroundColor: '#ebf1f5',\r\n },\r\n 'input:disabled ~ &': {\r\n boxShadow: 'none',\r\n background: 'rgba(206,217,224,.5)',\r\n },\r\n },\r\n checkedIcon: {\r\n backgroundColor: '#3c54a5',\r\n backgroundImage: 'linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))',\r\n '&:before': {\r\n display: 'block',\r\n width: 16,\r\n height: 16,\r\n backgroundImage: 'radial-gradient(#fff,#fff 28%,transparent 32%)',\r\n content: '\"\"',\r\n },\r\n 'input:hover ~ &': {\r\n backgroundColor: '#3c54a5',\r\n },\r\n },\r\n}));\r\n\r\nconst Step3 = props => {\r\n const [SendDateTime, SetSendDateTime] = useState(0)\r\n const [usableDynamicMessageFields, setUsableDynamicMessageFields] = useState([])\r\n\r\n const { setSendDate, sendDate, sendingTimeType, setSendingTimeType,\r\n occuranceType, setOccuranceType, occuranceValue, setOccuranceValue,\r\n occuranceWeeklyOptionWeekdayValues, setOccuranceWeeklyOptionWeekdayValues,\r\n occuranceMonthlyOption, setOccuranceMonthlyOption,\r\n occuranceMonthlyOptionDayValue, setOccuranceMonthlyOptionDayValue,\r\n occuranceMonthlyOptionWeekdayValue, setOccuranceMonthlyOptionWeekdayValue,\r\n startDate, setStartDate, endDate, setEndDate, sendHour, setSendHour,\r\n periodicFirstScheduledDateTime, firstScheduledDateTime,\r\n isEndDateExist, setIsEndDateExist, advancedTimeDialogToggle,\r\n dateFieldOption, setDateFieldOption, dateFieldNameOrId, setDateFieldNameOrId, setSmsCheck, dispatch\r\n } = props\r\n\r\n const classes = useStyles();\r\n\r\n const handleMode = (mode) => {\r\n SetSendDateTime(mode)\r\n if (mode === 4 || mode === 0) {\r\n setSmsCheck(true)\r\n } else {\r\n setSmsCheck(false)\r\n }\r\n\r\n if (mode === 0) {\r\n setSendDate(moment().toISOString())\r\n SetSendDateTime(4)\r\n setSendingTimeType(1)\r\n }\r\n if (mode === 1) {\r\n setSendDate('')\r\n setSendingTimeType(2)\r\n }\r\n if (mode === 2) {\r\n setSendingTimeType(3)\r\n }\r\n }\r\n\r\n const StyledRadio = (props) => {\r\n\r\n return (\r\n }\r\n icon={ }\r\n {...props}\r\n />\r\n );\r\n }\r\n\r\n const days = [\r\n {\r\n label: \"Pazartesi\",\r\n value: 0\r\n },\r\n {\r\n label: \"Salı\",\r\n value: 1\r\n },\r\n {\r\n label: \"Çarşamba\",\r\n value: 2\r\n },\r\n {\r\n label: \"Perşembe\",\r\n value: 3\r\n },\r\n {\r\n label: \"Cuma\",\r\n value: 4\r\n },\r\n {\r\n label: \"Cumartesi\",\r\n value: 5\r\n },\r\n {\r\n label: \"Pazar\",\r\n value: 6\r\n },\r\n ]\r\n\r\n const checkBoxes = () => {\r\n return (days.map(d => {\r\n const index = occuranceWeeklyOptionWeekdayValues.indexOf(d.value)\r\n return (\r\n \r\n -1}\r\n onChange={() => handleCheckBoxes(d.value)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n }\r\n label={d.label}\r\n />\r\n \r\n )\r\n }))\r\n }\r\n\r\n const handleCheckBoxes = value => {\r\n const index = occuranceWeeklyOptionWeekdayValues.indexOf(value)\r\n let newValues = []\r\n if (index > -1) {\r\n newValues = [\r\n ...occuranceWeeklyOptionWeekdayValues.slice(0, index),\r\n ...occuranceWeeklyOptionWeekdayValues.slice(index + 1)\r\n ]\r\n } else {\r\n newValues = [\r\n ...occuranceWeeklyOptionWeekdayValues,\r\n value\r\n ]\r\n }\r\n setOccuranceWeeklyOptionWeekdayValues(newValues)\r\n periodicFirstScheduledDateTime({ occuranceWeeklyOptionWeekdayValues: newValues })\r\n\r\n }\r\n\r\n\r\n\r\n const weekDays = ds => {\r\n let label = ''\r\n let count = 0\r\n for (let i = 0; i < days.length; i++) {\r\n if (ds.indexOf(days[i].value) > -1) {\r\n label += (count === ds.length - 1 && count !== 0) ? (\"ve \" + days[i].label) : (days[i].label + ' ')\r\n count += 1\r\n }\r\n }\r\n return label\r\n }\r\n\r\n const fixOccurance = occ => {\r\n let label = 'günde'\r\n switch (occ) {\r\n case 2:\r\n label = 'ayda'\r\n break\r\n case 1:\r\n label = \"haftada\"\r\n break\r\n default:\r\n break\r\n }\r\n return label\r\n }\r\n\r\n useEffect(() => {\r\n const data = { ...props.data, ServiceType: 1 }\r\n sendingListBuilderGetSummary(data)\r\n .then(res => {\r\n if (checkResponse(res, dispatch, null, 'Gönderim listesi özeti hesaplanırken bir hata oluştu.')) {\r\n let fields = []\r\n if (res.data.usableDynamicMessageFields && res.data.usableDynamicMessageFields.length > 0) {\r\n fields = res.data.usableDynamicMessageFields.filter(f => f.converterName === 4)\r\n }\r\n setUsableDynamicMessageFields(fields)\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Gönderim listesi özeti hesaplanırken bir hata oluştu.')\r\n })\r\n }, [])\r\n\r\n const fixOccurance2 = occ => {\r\n let label = ''\r\n switch (occ) {\r\n case 2:\r\n label = 'ayın' + occuranceMonthlyOptionDayValue + '. günü'\r\n break\r\n case 1:\r\n label = weekDays(occuranceWeeklyOptionWeekdayValues)\r\n break\r\n default:\r\n break\r\n }\r\n return label\r\n }\r\n\r\n const message = `${moment(startDate).format('DD.MM.YYYY HH:mm')} tarihinden ${endDate === '' ? ' itibaren' : (moment(endDate).format('DD.MM.YYYY HH:mm') + ' tarihine kadar')}, her ${occuranceValue + ' ' + fixOccurance(occuranceType)} bir, ${fixOccurance2(occuranceType)} saat ${sendHour}:00'da. ${(firstScheduledDateTime !== '') ? ('İlk periyodik gönderimin yapılacağı tarih ' + moment(firstScheduledDateTime).format('DD.MM.YYYY HH:mm')) : ''} `\r\n\r\n const dateFieldNameOptions = data => {\r\n return (data.map(d => {\r\n return (\r\n {d.fieldDisplayName} \r\n )\r\n }))\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Zamanlama\r\n \r\n \r\n \r\n +GELİŞMİŞ GÖNDERİM ZAMANI SEÇENEKLERİ \r\n \r\n \r\n \r\n handleMode(0)}\r\n color={\r\n sendingTimeType === 1 ? \"secondary\" : \"primary\"\r\n }\r\n variant={\r\n sendingTimeType === 1 ? \"contained\" : \"outlined\"\r\n }>Hemen Gönder \r\n handleMode(1)} color={\r\n sendingTimeType === 2\r\n ? \"secondary\"\r\n : \"primary\"\r\n }\r\n variant={\r\n sendingTimeType === 2\r\n ? \"contained\"\r\n : \"outlined\"\r\n }>İleri Tarih ve Saatte Gönder \r\n {\r\n setStartDate(moment().format('YYYY-MM-DDTHH:mm'))\r\n handleMode(2)\r\n setSendDate(moment().format('YYYY-MM-DDTHH:mm'))\r\n periodicFirstScheduledDateTime({ startDate: moment().format('YYYY-MM-DDTHH:mm') })\r\n }}\r\n color={\r\n sendingTimeType === 3\r\n ? \"secondary\"\r\n : \"primary\"\r\n }\r\n variant={\r\n sendingTimeType === 3\r\n ? \"contained\"\r\n : \"outlined\"\r\n }\r\n >Periyodik Gönderim Ayarla \r\n \r\n \r\n {SendDateTime === 1 &&\r\n \r\n \r\n \r\n \r\n \r\n {sendDate !== '' &&\r\n \r\n handleMode(4)} >Tamam \r\n \r\n }\r\n \r\n \r\n }\r\n {SendDateTime === 2 &&\r\n <>\r\n \r\n \r\n \r\n Gönderim tarih seçenegi : \r\n setDateFieldOption(0)}\r\n name=\"radio-button-demo\"\r\n inputProps={{ 'aria-label': 'A' }}\r\n />\r\n } label=\"Koşulsuz(Tümüne)\" />\r\n {\r\n setDateFieldOption(1)\r\n setDateFieldNameOrId(usableDynamicMessageFields[0].fieldDisplayName)\r\n periodicFirstScheduledDateTime({ occuranceType: 0, occuranceValue: 1 })\r\n }}\r\n name=\"radio-button-demo\"\r\n inputProps={{ 'aria-label': 'A' }}\r\n disabled={usableDynamicMessageFields.length === 0}\r\n />\r\n } label=\"Bir tarih alanına göre\" />\r\n\r\n \r\n {dateFieldOption === 0\r\n ? <>\r\n \r\n \r\n {\r\n setOccuranceType(parseInt(e.target.value))\r\n periodicFirstScheduledDateTime({ occuranceType: parseInt(e.target.value) })\r\n }} aria-label=\"gender\" name=\"customized-radios\">\r\n } label=\"Günlük\" />\r\n } label=\"Haftalık\" />\r\n } label=\"Aylık\" />\r\n \r\n \r\n \r\n \r\n {occuranceType === 0 &&\r\n \r\n \r\n \r\n Her\r\n \r\n \r\n \r\n {\r\n setOccuranceValue(e.target.value < 1 ? 1 : e.target.value)\r\n periodicFirstScheduledDateTime({ occuranceValue: e.target.value < 1 ? 1 : e.target.value })\r\n }\r\n }}\r\n />\r\n \r\n \r\n \r\n günde bir\r\n \r\n \r\n \r\n }\r\n {occuranceType === 1 &&\r\n \r\n \r\n \r\n Her\r\n \r\n \r\n \r\n {\r\n setOccuranceValue(e.target.value < 1 ? 1 : e.target.value)\r\n periodicFirstScheduledDateTime({ occuranceValue: e.target.value < 1 ? 1 : e.target.value })\r\n }\r\n }}\r\n />\r\n \r\n \r\n \r\n haftada bir\r\n \r\n \r\n {checkBoxes()}\r\n \r\n }\r\n {occuranceType === 2 &&\r\n \r\n \r\n {\r\n setOccuranceMonthlyOption(e.target.checked ? 0 : 1)\r\n periodicFirstScheduledDateTime({ occuranceMonthlyOption: e.target.checked ? 0 : 1 })\r\n }}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={occuranceMonthlyOption === 0\r\n ? 'Ayın gününe göre'\r\n : 'İfade ile'\r\n }\r\n />\r\n\r\n \r\n \r\n {\r\n periodicFirstScheduledDateTime({ occuranceValue: 12 })\r\n setOccuranceValue(12)\r\n }}>Yıllık Gönderim \r\n \r\n {occuranceMonthlyOption === 0\r\n ? <>\r\n \r\n {\r\n periodicFirstScheduledDateTime({ occuranceValue: e.target.value < 1 ? 1 : e.target.value })\r\n setOccuranceValue(e.target.value < 1 ? 1 : e.target.value)\r\n }\r\n }}\r\n />\r\n \r\n \r\n \r\n ayda bir,\r\n \r\n \r\n \r\n {\r\n setOccuranceMonthlyOptionDayValue(e.target.value < 1 ? 1 : e.target.value)\r\n periodicFirstScheduledDateTime({ occuranceMonthlyOptionDayValue: e.target.value < 1 ? 1 : e.target.value })\r\n }\r\n }}\r\n />\r\n \r\n \r\n \r\n . günü\r\n \r\n \r\n >\r\n : <>\r\n \r\n {\r\n setOccuranceValue(e.target.value)\r\n periodicFirstScheduledDateTime({ occuranceValue: e.target.value })\r\n }\r\n }}\r\n />\r\n \r\n \r\n \r\n ayda bir, ayın\r\n \r\n \r\n \r\n {\r\n setOccuranceMonthlyOptionDayValue(e.target.value)\r\n periodicFirstScheduledDateTime({ occuranceMonthlyOptionDayValue: e.target.value })\r\n }}\r\n displayEmpty\r\n fullWidth\r\n inputProps={{ 'aria-label': 'Kullanılacak alfanumerik' }}\r\n >\r\n Birinci \r\n İkinci \r\n Üçüncü \r\n Dördüncü \r\n Son \r\n \r\n \r\n \r\n {\r\n setOccuranceMonthlyOptionWeekdayValue(e.target.value)\r\n periodicFirstScheduledDateTime({ occuranceMonthlyOptionWeekdayValue: e.target.value })\r\n }}\r\n displayEmpty\r\n fullWidth\r\n inputProps={{ 'aria-label': 'Kullanılacak alfanumerik' }}\r\n >\r\n Pazartesi \r\n Salı \r\n Çarşamba \r\n Perşembe \r\n Cuma \r\n Cumartesi \r\n Pazar \r\n İşgünü \r\n Haftasonu \r\n Gü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 Tarih alanı\r\n \r\n \r\n \r\n {\r\n setDateFieldNameOrId(e.target.value)\r\n }}\r\n displayEmpty\r\n fullWidth\r\n inputProps={{ 'aria-label': 'Tarih alanı' }}\r\n >\r\n {dateFieldNameOptions(usableDynamicMessageFields)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim seçeneği\r\n \r\n \r\n \r\n {\r\n setDateFieldOption(parseInt(e.target.value))\r\n }}\r\n displayEmpty\r\n fullWidth\r\n inputProps={{ 'aria-label': 'Gönderim seçeneği' }}\r\n >\r\n Gün ve aya göre \r\n Gün ay ve yıla göre \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 Gönderim Saati :\r\n \r\n \r\n \r\n {\r\n setSendHour(e.target.value)\r\n periodicFirstScheduledDateTime({ sendHour: e.target.value })\r\n }}\r\n displayEmpty\r\n fullWidth\r\n inputProps={{ 'aria-label': 'Gönderim Saati' }}\r\n >\r\n 00:00 \r\n 01:00 \r\n 02:00 \r\n 03:00 \r\n 04:00 \r\n 05:00 \r\n 06:00 \r\n 07:00 \r\n 08:00 \r\n 09:00 \r\n 10:00 \r\n 11:00 \r\n 12:00 \r\n 13:00 \r\n 14:00 \r\n 15:00 \r\n 16:00 \r\n 17:00 \r\n 18:00 \r\n 19:00 \r\n 20:00 \r\n 21:00 \r\n 22:00 \r\n 23:00 \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n setIsEndDateExist(e.target.checked ? true : false)\r\n }}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n }\r\n label={isEndDateExist\r\n ? 'Bitiş Tarihi Ekle'\r\n : 'Bitiş Tarihi Yok'\r\n }\r\n />\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n {startDate !== '' && (endDate !== '' || !isEndDateExist) &&\r\n \r\n handleMode(4)} >Tamam \r\n \r\n }\r\n >\r\n }\r\n {/* edit */}\r\n {(SendDateTime === 4 || SendDateTime === 0) && (sendingTimeType === 1 || sendingTimeType === 2) &&\r\n \r\n \r\n \r\n \r\n GÖNDERİM ZAMANI : {sendingTimeType === 1 ? 'Hemen' : moment(sendDate).format('DD.MM.YYYY HH:mm')}\r\n \r\n \r\n \r\n \r\n }\r\n {(SendDateTime === 4 || SendDateTime === 0) && sendingTimeType === 3 &&\r\n \r\n \r\n \r\n \r\n İLK GÖNDERİM ZAMANI : {moment(firstScheduledDateTime).format('DD.MM.YYYY HH:mm')} (PERİYODİK)\r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Step3","import {\r\n warningColor,\r\n primaryColor,\r\n dangerColor,\r\n successColor,\r\n infoColor,\r\n roseColor,\r\n grayColor,\r\n defaultFont\r\n} from \"assets/jss/material-dashboard-react.js\";\r\n\r\nconst tableStyle = theme => ({\r\n warningTableHeader: {\r\n color: warningColor[0]\r\n },\r\n primaryTableHeader: {\r\n color: primaryColor[0]\r\n },\r\n dangerTableHeader: {\r\n color: dangerColor[0]\r\n },\r\n successTableHeader: {\r\n color: successColor[0]\r\n },\r\n infoTableHeader: {\r\n color: infoColor[0]\r\n },\r\n roseTableHeader: {\r\n color: roseColor[0]\r\n },\r\n grayTableHeader: {\r\n color: grayColor[0]\r\n },\r\n table: {\r\n marginBottom: \"0\",\r\n width: \"100%\",\r\n maxWidth: \"100%\",\r\n backgroundColor: \"transparent\",\r\n borderSpacing: \"0\",\r\n borderCollapse: \"collapse\"\r\n },\r\n tableHeadCell: {\r\n color: \"inherit\",\r\n ...defaultFont,\r\n \"&, &$tableCell\": {\r\n fontSize: \"1em\"\r\n }\r\n },\r\n tableCell: {\r\n ...defaultFont,\r\n lineHeight: \"1.42857143\",\r\n padding: \"12px 8px\",\r\n verticalAlign: \"middle\",\r\n fontSize: \"0.8125rem\"\r\n },\r\n tableResponsive: {\r\n width: \"100%\",\r\n marginTop: theme.spacing(3),\r\n overflowX: \"auto\"\r\n },\r\n tableHeadRow: {\r\n height: \"56px\",\r\n color: \"inherit\",\r\n display: \"table-row\",\r\n outline: \"none\",\r\n verticalAlign: \"middle\"\r\n },\r\n tableBodyRow: {\r\n height: \"48px\",\r\n color: \"inherit\",\r\n display: \"table-row\",\r\n outline: \"none\",\r\n verticalAlign: \"middle\"\r\n }\r\n});\r\n\r\nexport default tableStyle;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\n// core components\r\nimport styles from \"assets/jss/material-dashboard-react/components/tableStyle.js\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function CustomTable(props) {\r\n const classes = useStyles();\r\n const { tableHead, tableData, tableHeaderColor } = props;\r\n return (\r\n \r\n
\r\n {tableHead !== undefined ? (\r\n \r\n \r\n {tableHead.map((prop, key) => {\r\n return (\r\n \r\n {prop}\r\n \r\n );\r\n })}\r\n \r\n \r\n ) : null}\r\n \r\n {tableData.map((prop, key) => {\r\n return (\r\n \r\n {prop.map((prop, key) => {\r\n return (\r\n \r\n {prop}\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\nCustomTable.defaultProps = {\r\n tableHeaderColor: \"gray\"\r\n};\r\n\r\nCustomTable.propTypes = {\r\n tableHeaderColor: PropTypes.oneOf([\r\n \"warning\",\r\n \"primary\",\r\n \"danger\",\r\n \"success\",\r\n \"info\",\r\n \"rose\",\r\n \"gray\"\r\n ]),\r\n tableHead: PropTypes.arrayOf(PropTypes.string),\r\n tableData: PropTypes.arrayOf(PropTypes.arrayOf(PropTypes.string))\r\n};\r\n","import { blackColor, hexToRgb } from \"assets/jss/material-dashboard-react.js\";\r\n\r\nconst tooltipStyle = {\r\n tooltip: {\r\n padding: \"10px 15px\",\r\n minWidth: \"130px\",\r\n lineHeight: \"1.7em\",\r\n border: \"none\",\r\n borderRadius: \"3px\",\r\n boxShadow:\r\n \"0 8px 10px 1px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.14), 0 3px 14px 2px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.12), 0 5px 5px -3px rgba(\" +\r\n hexToRgb(blackColor) +\r\n \", 0.2)\",\r\n maxWidth: \"200px\",\r\n textAlign: \"center\",\r\n fontFamily: '\"Helvetica Neue\",Helvetica,Arial,sans-serif',\r\n fontSize: \"12px\",\r\n fontStyle: \"normal\",\r\n fontWeight: \"400\",\r\n textShadow: \"none\",\r\n textTransform: \"none\",\r\n letterSpacing: \"normal\",\r\n wordBreak: \"normal\",\r\n wordSpacing: \"normal\",\r\n wordWrap: \"normal\",\r\n whiteSpace: \"normal\",\r\n lineBreak: \"auto\"\r\n }\r\n};\r\nexport default tooltipStyle;\r\n","import {\r\n primaryColor,\r\n blackColor,\r\n hexToRgb\r\n} from \"assets/jss/material-dashboard-react.js\";\r\n\r\nconst checkboxAdnRadioStyle = {\r\n root: {\r\n padding: \"13px\",\r\n \"&:hover\": {\r\n backgroundColor: \"unset\"\r\n }\r\n },\r\n labelRoot: {\r\n marginLeft: \"-14px\"\r\n },\r\n checked: {\r\n color: primaryColor[0] + \"!important\"\r\n },\r\n checkedIcon: {\r\n width: \"20px\",\r\n height: \"20px\",\r\n border: \"1px solid rgba(\" + hexToRgb(blackColor) + \", .54)\",\r\n borderRadius: \"3px\"\r\n },\r\n uncheckedIcon: {\r\n width: \"0px\",\r\n height: \"0px\",\r\n padding: \"10px\",\r\n border: \"1px solid rgba(\" + hexToRgb(blackColor) + \", .54)\",\r\n borderRadius: \"3px\"\r\n },\r\n radio: {\r\n color: primaryColor[0] + \"!important\"\r\n },\r\n radioChecked: {\r\n width: \"20px\",\r\n height: \"20px\",\r\n border: \"1px solid \" + primaryColor[0],\r\n borderRadius: \"50%\"\r\n },\r\n radioUnchecked: {\r\n width: \"0px\",\r\n height: \"0px\",\r\n padding: \"10px\",\r\n border: \"1px solid rgba(\" + hexToRgb(blackColor) + \", .54)\",\r\n borderRadius: \"50%\"\r\n }\r\n};\r\n\r\nexport default checkboxAdnRadioStyle;\r\n","import {\r\n defaultFont,\r\n primaryColor,\r\n dangerColor,\r\n grayColor\r\n} from \"assets/jss/material-dashboard-react.js\";\r\nimport tooltipStyle from \"assets/jss/material-dashboard-react/tooltipStyle.js\";\r\nimport checkboxAdnRadioStyle from \"assets/jss/material-dashboard-react/checkboxAdnRadioStyle.js\";\r\nconst tasksStyle = {\r\n ...tooltipStyle,\r\n ...checkboxAdnRadioStyle,\r\n table: {\r\n marginBottom: \"0\",\r\n overflow: \"visible\"\r\n },\r\n tableRow: {\r\n position: \"relative\",\r\n borderBottom: \"1px solid \" + grayColor[5]\r\n },\r\n tableActions: {\r\n display: \"flex\",\r\n border: \"none\",\r\n padding: \"12px 8px !important\",\r\n verticalAlign: \"middle\"\r\n },\r\n tableCell: {\r\n ...defaultFont,\r\n padding: \"8px\",\r\n verticalAlign: \"middle\",\r\n border: \"none\",\r\n lineHeight: \"1.42857143\",\r\n fontSize: \"14px\"\r\n },\r\n tableCellRTL: {\r\n textAlign: \"right\"\r\n },\r\n tableActionButton: {\r\n width: \"27px\",\r\n height: \"27px\",\r\n padding: \"0\"\r\n },\r\n tableActionButtonIcon: {\r\n width: \"17px\",\r\n height: \"17px\"\r\n },\r\n edit: {\r\n backgroundColor: \"transparent\",\r\n color: primaryColor[0],\r\n boxShadow: \"none\"\r\n },\r\n close: {\r\n backgroundColor: \"transparent\",\r\n color: dangerColor[0],\r\n boxShadow: \"none\"\r\n }\r\n};\r\nexport default tasksStyle;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport classnames from \"classnames\";\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Checkbox from \"@material-ui/core/Checkbox\";\r\nimport Tooltip from \"@material-ui/core/Tooltip\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\n// @material-ui/icons\r\nimport Edit from \"@material-ui/icons/Edit\";\r\nimport Close from \"@material-ui/icons/Close\";\r\nimport Check from \"@material-ui/icons/Check\";\r\n// core components\r\nimport styles from \"assets/jss/material-dashboard-react/components/tasksStyle.js\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function Tasks(props) {\r\n const classes = useStyles();\r\n const [checked, setChecked] = React.useState([...props.checkedIndexes]);\r\n const handleToggle = value => {\r\n const currentIndex = checked.indexOf(value);\r\n const newChecked = [...checked];\r\n if (currentIndex === -1) {\r\n newChecked.push(value);\r\n } else {\r\n newChecked.splice(currentIndex, 1);\r\n }\r\n setChecked(newChecked);\r\n };\r\n const { tasksIndexes, tasks, rtlActive } = props;\r\n const tableCellClasses = classnames(classes.tableCell, {\r\n [classes.tableCellRTL]: rtlActive\r\n });\r\n return (\r\n \r\n \r\n {tasksIndexes.map(value => (\r\n \r\n \r\n handleToggle(value)}\r\n checkedIcon={ }\r\n icon={ }\r\n classes={{\r\n checked: classes.checked,\r\n root: classes.root\r\n }}\r\n />\r\n \r\n {tasks[value]} \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\nTasks.propTypes = {\r\n tasksIndexes: PropTypes.arrayOf(PropTypes.number),\r\n tasks: PropTypes.arrayOf(PropTypes.node),\r\n rtlActive: PropTypes.bool,\r\n checkedIndexes: PropTypes.array\r\n};\r\n","import {\r\n warningCardHeader,\r\n successCardHeader,\r\n dangerCardHeader,\r\n infoCardHeader,\r\n primaryCardHeader,\r\n roseCardHeader,\r\n whiteColor,\r\n codec\r\n} from \"assets/jss/material-dashboard-react.js\";\r\n\r\nconst cardHeaderStyle = {\r\n cardHeader: {\r\n padding: \"0.75rem 1.25rem\",\r\n marginBottom: \"0\",\r\n borderBottom: \"none\",\r\n background: \"transparent\",\r\n zIndex: \"3 !important\",\r\n \"&$cardHeaderPlain,&$cardHeaderIcon,&$cardHeaderStats,&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader\": {\r\n margin: \"0 15px\",\r\n padding: \"0\",\r\n position: \"relative\",\r\n color: whiteColor\r\n },\r\n \"&:first-child\": {\r\n borderRadius: \"calc(.25rem - 1px) calc(.25rem - 1px) 0 0\"\r\n },\r\n \"&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader\": {\r\n \"&:not($cardHeaderIcon)\": {\r\n borderRadius: \"3px\",\r\n marginTop: \"-20px\",\r\n padding: \"15px\"\r\n }\r\n },\r\n \"&$cardHeaderStats svg\": {\r\n fontSize: \"36px\",\r\n lineHeight: \"56px\",\r\n textAlign: \"center\",\r\n width: \"36px\",\r\n height: \"36px\",\r\n margin: \"10px 10px 4px\"\r\n },\r\n \"&$cardHeaderStats i,&$cardHeaderStats .material-icons\": {\r\n fontSize: \"36px\",\r\n lineHeight: \"56px\",\r\n width: \"56px\",\r\n height: \"56px\",\r\n textAlign: \"center\",\r\n overflow: \"unset\",\r\n marginBottom: \"1px\"\r\n },\r\n \"&$cardHeaderStats$cardHeaderIcon\": {\r\n textAlign: \"right\"\r\n }\r\n },\r\n cardHeaderPlain: {\r\n marginLeft: \"0px !important\",\r\n marginRight: \"0px !important\"\r\n },\r\n cardHeaderStats: {\r\n \"& $cardHeaderIcon\": {\r\n textAlign: \"right\"\r\n },\r\n \"& h1,& h2,& h3,& h4,& h5,& h6\": {\r\n margin: \"0 !important\"\r\n }\r\n },\r\n cardHeaderIcon: {\r\n \"&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader\": {\r\n background: \"transparent\",\r\n boxShadow: \"none\"\r\n },\r\n \"& i,& .material-icons\": {\r\n width: \"33px\",\r\n height: \"33px\",\r\n textAlign: \"center\",\r\n lineHeight: \"33px\"\r\n },\r\n \"& svg\": {\r\n width: \"24px\",\r\n height: \"24px\",\r\n textAlign: \"center\",\r\n lineHeight: \"33px\",\r\n margin: \"5px 4px 0px\"\r\n }\r\n },\r\n warningCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderIcon)\": {\r\n ...warningCardHeader\r\n }\r\n },\r\n successCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderIcon)\": {\r\n ...successCardHeader\r\n }\r\n },\r\n dangerCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderIcon)\": {\r\n ...dangerCardHeader\r\n }\r\n },\r\n infoCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderIcon)\": {\r\n ...infoCardHeader\r\n }\r\n },\r\n primaryCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderIcon)\": {\r\n ...primaryCardHeader\r\n }\r\n },\r\n roseCardHeader: {\r\n color: whiteColor,\r\n \"&:not($cardHeaderIcon)\": {\r\n ...roseCardHeader\r\n }\r\n }\r\n};\r\n\r\nexport default cardHeaderStyle;\r\n","import React from \"react\";\r\n// nodejs library that concatenates classes\r\nimport classNames from \"classnames\";\r\n// nodejs library to set properties for components\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n// @material-ui/icons\r\n\r\n// core components\r\nimport styles from \"assets/jss/material-dashboard-react/components/cardHeaderStyle.js\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function CardHeader(props) {\r\n const classes = useStyles();\r\n const { className, children, color, plain, stats, icon, ...rest } = props;\r\n const cardHeaderClasses = classNames({\r\n [classes.cardHeader]: true,\r\n [classes[color + \"CardHeader\"]]: color,\r\n [classes.cardHeaderPlain]: plain,\r\n [classes.cardHeaderStats]: stats,\r\n [classes.cardHeaderIcon]: icon,\r\n [className]: className !== undefined\r\n });\r\n return (\r\n \r\n {children}\r\n
\r\n );\r\n}\r\n\r\nCardHeader.propTypes = {\r\n className: PropTypes.string,\r\n color: PropTypes.oneOf([\r\n \"warning\",\r\n \"success\",\r\n \"danger\",\r\n \"info\",\r\n \"primary\",\r\n \"rose\"\r\n ]),\r\n plain: PropTypes.bool,\r\n stats: PropTypes.bool,\r\n icon: PropTypes.bool,\r\n children: PropTypes.node\r\n};\r\n","import { hexToRgb, whiteColor } from \"assets/jss/material-dashboard-react.js\";\r\n\r\nconst customTabsStyle = {\r\n cardTitle: {\r\n float: \"left\",\r\n padding: \"10px 10px 10px 0px\",\r\n lineHeight: \"24px\"\r\n },\r\n cardTitleRTL: {\r\n float: \"right\",\r\n padding: \"10px 0px 10px 10px !important\"\r\n },\r\n displayNone: {\r\n display: \"none !important\"\r\n },\r\n tabsRoot: {\r\n minHeight: \"unset !important\",\r\n overflowX: \"visible\",\r\n \"& $tabRootButton\": {\r\n fontSize: \"0.875rem\"\r\n }\r\n },\r\n tabRootButton: {\r\n minHeight: \"unset !important\",\r\n minWidth: \"unset !important\",\r\n width: \"unset !important\",\r\n height: \"unset !important\",\r\n maxWidth: \"unset !important\",\r\n maxHeight: \"unset !important\",\r\n padding: \"10px 15px\",\r\n borderRadius: \"3px\",\r\n lineHeight: \"24px\",\r\n border: \"0 !important\",\r\n color: whiteColor + \" !important\",\r\n marginLeft: \"4px\",\r\n \"&:last-child\": {\r\n marginLeft: \"0px\"\r\n }\r\n },\r\n tabSelected: {\r\n backgroundColor: \"rgba(\" + hexToRgb(whiteColor) + \", 0.2)\",\r\n transition: \"0.2s background-color 0.1s\"\r\n },\r\n tabWrapper: {\r\n display: \"inline-block\",\r\n minHeight: \"unset !important\",\r\n minWidth: \"unset !important\",\r\n width: \"unset !important\",\r\n height: \"unset !important\",\r\n maxWidth: \"unset !important\",\r\n maxHeight: \"unset !important\",\r\n fontWeight: \"500\",\r\n fontSize: \"12px\",\r\n marginTop: \"1px\",\r\n \"& > svg,& > .material-icons\": {\r\n verticalAlign: \"middle\",\r\n margin: \"-1px 5px 0 0 !important\"\r\n }\r\n }\r\n};\r\n\r\nexport default customTabsStyle;\r\n","import React from \"react\";\r\n// nodejs library that concatenates classes\r\nimport classNames from \"classnames\";\r\n// nodejs library to set properties for components\r\nimport PropTypes from \"prop-types\";\r\n\r\n// material-ui components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Tabs from \"@material-ui/core/Tabs\";\r\nimport Tab from \"@material-ui/core/Tab\";\r\n// core components\r\nimport Card from \"components/Card/Card.js\";\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport CardHeader from \"components/Card/CardHeader.js\";\r\n\r\nimport styles from \"assets/jss/material-dashboard-react/components/customTabsStyle.js\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function CustomTabs(props) {\r\n const [value, setValue] = React.useState(0);\r\n const handleChange = (event, value) => {\r\n setValue(value);\r\n };\r\n const classes = useStyles();\r\n const { headerColor, plainTabs, tabs, title, rtlActive } = props;\r\n const cardTitle = classNames({\r\n [classes.cardTitle]: true,\r\n [classes.cardTitleRTL]: rtlActive\r\n });\r\n return (\r\n \r\n \r\n {title !== undefined ? {title}
: null}\r\n \r\n {tabs.map((prop, key) => {\r\n var icon = {};\r\n if (prop.tabIcon) {\r\n icon = {\r\n icon: \r\n };\r\n }\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n {tabs.map((prop, key) => {\r\n if (key === value) {\r\n return {prop.tabContent}
;\r\n }\r\n return null;\r\n })}\r\n \r\n \r\n );\r\n}\r\n\r\nCustomTabs.propTypes = {\r\n headerColor: PropTypes.oneOf([\r\n \"warning\",\r\n \"success\",\r\n \"danger\",\r\n \"info\",\r\n \"primary\",\r\n \"rose\"\r\n ]),\r\n title: PropTypes.string,\r\n tabs: PropTypes.arrayOf(\r\n PropTypes.shape({\r\n tabName: PropTypes.string.isRequired,\r\n tabIcon: PropTypes.object,\r\n tabContent: PropTypes.node.isRequired\r\n })\r\n ),\r\n rtlActive: PropTypes.bool,\r\n plainTabs: PropTypes.bool\r\n};\r\n","import {\r\n defaultFont,\r\n primaryColor,\r\n infoColor,\r\n successColor,\r\n warningColor,\r\n dangerColor,\r\n grayColor\r\n} from \"assets/jss/material-dashboard-react.js\";\r\n\r\nconst typographyStyle = {\r\n defaultFontStyle: {\r\n ...defaultFont,\r\n fontSize: \"14px\"\r\n },\r\n defaultHeaderMargins: {\r\n marginTop: \"20px\",\r\n marginBottom: \"10px\"\r\n },\r\n quote: {\r\n padding: \"10px 20px\",\r\n margin: \"0 0 20px\",\r\n fontSize: \"17.5px\",\r\n borderLeft: \"5px solid \" + grayColor[10]\r\n },\r\n quoteText: {\r\n margin: \"0 0 10px\",\r\n fontStyle: \"italic\"\r\n },\r\n quoteAuthor: {\r\n display: \"block\",\r\n fontSize: \"80%\",\r\n lineHeight: \"1.42857143\",\r\n color: grayColor[1]\r\n },\r\n mutedText: {\r\n color: grayColor[1]\r\n },\r\n primaryText: {\r\n color: primaryColor[0]\r\n },\r\n infoText: {\r\n color: infoColor[0]\r\n },\r\n successText: {\r\n color: successColor[0]\r\n },\r\n warningText: {\r\n color: warningColor[0]\r\n },\r\n dangerText: {\r\n color: dangerColor[0]\r\n }\r\n};\r\n\r\nexport default typographyStyle;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n// core components\r\nimport styles from \"assets/jss/material-dashboard-react/components/typographyStyle.js\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function Danger(props) {\r\n const classes = useStyles();\r\n const { children } = props;\r\n return (\r\n \r\n {children}\r\n
\r\n );\r\n}\r\n\r\nDanger.propTypes = {\r\n children: PropTypes.node\r\n};\r\n","import {\r\n warningCardHeader,\r\n successCardHeader,\r\n dangerCardHeader,\r\n infoCardHeader,\r\n primaryCardHeader,\r\n roseCardHeader,\r\n grayColor\r\n} from \"assets/jss/material-dashboard-react.js\";\r\n\r\nconst cardIconStyle = {\r\n cardIcon: {\r\n \"&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader\": {\r\n borderRadius: \"3px\",\r\n backgroundColor: grayColor[0],\r\n padding: \"15px\",\r\n marginTop: \"-20px\",\r\n // marginRight: \"15px\",\r\n float: \"left\"\r\n }\r\n },\r\n warningCardHeader,\r\n successCardHeader,\r\n dangerCardHeader,\r\n infoCardHeader,\r\n primaryCardHeader,\r\n roseCardHeader\r\n};\r\n\r\nexport default cardIconStyle;\r\n","import React from \"react\";\r\n// nodejs library that concatenates classes\r\nimport classNames from \"classnames\";\r\n// nodejs library to set properties for components\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n// @material-ui/icons\r\n\r\n// core components\r\nimport styles from \"assets/jss/material-dashboard-react/components/cardIconStyle.js\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function CardIcon(props) {\r\n const classes = useStyles();\r\n const { className, children, color, ...rest } = props;\r\n const cardIconClasses = classNames({\r\n [classes.cardIcon]: true,\r\n [classes[color + \"CardHeader\"]]: color,\r\n [className]: className !== undefined\r\n });\r\n return (\r\n \r\n {children}\r\n
\r\n );\r\n}\r\n\r\nCardIcon.propTypes = {\r\n className: PropTypes.string,\r\n color: PropTypes.oneOf([\r\n \"warning\",\r\n \"success\",\r\n \"danger\",\r\n \"info\",\r\n \"primary\",\r\n \"rose\"\r\n ]),\r\n children: PropTypes.node\r\n};\r\n","import { grayColor } from \"assets/jss/material-dashboard-react.js\";\r\n\r\nconst cardFooterStyle = {\r\n cardFooter: {\r\n padding: \"0\",\r\n paddingTop: \"10px\",\r\n margin: \"0 15px 10px\",\r\n borderRadius: \"0\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n display: \"flex\",\r\n backgroundColor: \"transparent\",\r\n border: \"0\"\r\n },\r\n cardFooterProfile: {\r\n marginTop: \"-15px\"\r\n },\r\n cardFooterPlain: {\r\n paddingLeft: \"5px\",\r\n paddingRight: \"5px\",\r\n backgroundColor: \"transparent\"\r\n },\r\n cardFooterStats: {\r\n borderTop: \"1px solid \" + grayColor[10],\r\n marginTop: \"20px\",\r\n \"& svg\": {\r\n position: \"relative\",\r\n top: \"4px\",\r\n marginRight: \"3px\",\r\n marginLeft: \"3px\",\r\n width: \"16px\",\r\n height: \"16px\"\r\n },\r\n \"& .fab,& .fas,& .far,& .fal,& .material-icons\": {\r\n fontSize: \"16px\",\r\n position: \"relative\",\r\n top: \"4px\",\r\n marginRight: \"3px\",\r\n marginLeft: \"3px\"\r\n }\r\n },\r\n cardFooterChart: {\r\n borderTop: \"1px solid \" + grayColor[10]\r\n }\r\n};\r\n\r\nexport default cardFooterStyle;\r\n","import React from \"react\";\r\n// nodejs library that concatenates classes\r\nimport classNames from \"classnames\";\r\n// nodejs library to set properties for components\r\nimport PropTypes from \"prop-types\";\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n// @material-ui/icons\r\n\r\n// core components\r\nimport styles from \"assets/jss/material-dashboard-react/components/cardFooterStyle.js\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function CardFooter(props) {\r\n const classes = useStyles();\r\n const { className, children, plain, profile, stats, chart, ...rest } = props;\r\n const cardFooterClasses = classNames({\r\n [classes.cardFooter]: true,\r\n [classes.cardFooterPlain]: plain,\r\n [classes.cardFooterProfile]: profile,\r\n [classes.cardFooterStats]: stats,\r\n [classes.cardFooterChart]: chart,\r\n [className]: className !== undefined\r\n });\r\n return (\r\n \r\n {children}\r\n
\r\n );\r\n}\r\n\r\nCardFooter.propTypes = {\r\n className: PropTypes.string,\r\n plain: PropTypes.bool,\r\n profile: PropTypes.bool,\r\n stats: PropTypes.bool,\r\n chart: PropTypes.bool,\r\n children: PropTypes.node\r\n};\r\n","import moment from \"moment\";\r\n\r\nexport const calculateLastSendDate = (sendDate, options, messageCount) => {\r\n if (options == null\r\n || !options.isActive\r\n || messageCount <= 0\r\n || options.packageSize >= messageCount) return sendDate;\r\n\r\n var leftCount = messageCount - options.packageSize;\r\n var lastSendDate = sendDate;\r\n while (leftCount > 0) {\r\n var sendingCount = options.packageSize > leftCount ? leftCount : options.packageSize;\r\n lastSendDate = moment(lastSendDate).add(options.period, 'minutes');\r\n if (options.isShiftTimePeriodActive) {\r\n if (options.shiftTimePeriodStartHour > options.shiftTimePeriodEndHour\r\n || (options.shiftTimePeriodStartHour === options.shiftTimePeriodEndHour && options.shiftTimePeriodStartMinute > options.shiftTimePeriodEndMinute)) {\r\n if ((lastSendDate.hours() > options.shiftTimePeriodEndHour\r\n || (lastSendDate.hours() === options.shiftTimePeriodEndHour && lastSendDate.minutes() > options.shiftTimePeriodEndMinute))\r\n && (lastSendDate.hours() < options.shiftTimePeriodStartHour\r\n || (lastSendDate.hours() === options.shiftTimePeriodStartHour && lastSendDate.minutes() < options.shiftTimePeriodStartMinute))) {\r\n leftCount -= sendingCount;\r\n }\r\n }\r\n else {\r\n if ((lastSendDate.hours() < options.shiftTimePeriodStartHour\r\n || (lastSendDate.hours() === options.shiftTimePeriodStartHour && lastSendDate.minutes() < options.shiftTimePeriodStartMinute))\r\n || (lastSendDate.hours() > options.shiftTimePeriodEndHour\r\n || (lastSendDate.hours() === options.shiftTimePeriodEndHour && lastSendDate.minutes() > options.shiftTimePeriodEndMinute))) {\r\n leftCount -= sendingCount;\r\n }\r\n }\r\n }\r\n else {\r\n leftCount -= sendingCount;\r\n }\r\n }\r\n\r\n return lastSendDate;\r\n}","import React, { useState, useEffect } from 'react'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Table from \"components/Table/Table.js\";\r\nimport Tasks from \"components/Tasks/Tasks.js\";\r\nimport CustomTabs from \"components/CustomTabs/CustomTabs.js\";\r\nimport Danger from \"components/Typography/Danger.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport CardHeader from \"components/Card/CardHeader.js\";\r\nimport CardIcon from \"components/Card/CardIcon.js\";\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport CardFooter from \"components/Card/CardFooter.js\";\r\nimport Swal from 'sweetalert2'\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport { calculateLastSendDate } from '_helpers/sending';\r\nimport SnackbarContent from 'components/Snackbar/SnackbarContent';\r\nimport iconTurkcell from \"assets/img/operators/icon-16x16-turkcell.png\";\r\nimport iconSuperonline from \"assets/img/operators/icon-16x16-superonline.png\";\r\nimport iconTurkTelekom from \"assets/img/operators/icon-16x16-turktelekom.png\";\r\nimport iconVodafone from \"assets/img/operators/icon-16x16-vodafone.png\";\r\n\r\nconst Step0 = props => {\r\n const { summary, handleSendSms, SenderInfo, setActiveStep, summaryLoads, smsLoads, sendingTimeType, sendingTimeOptions } = props\r\n\r\n const opDisplayResolve = id => {\r\n switch (id) {\r\n case 0:\r\n return ( Turkcell )\r\n case 1:\r\n return ( Vodafone )\r\n case 2:\r\n return ( Türk Telekom )\r\n case 3:\r\n return (Asist )\r\n case 4:\r\n return ( Superonline )\r\n case 5:\r\n return ( Türk Telekom Grup )\r\n default:\r\n return ''\r\n }\r\n }\r\n useEffect(() => {\r\n if(summary.grandTotalWithoutLimits === 0){\r\n Swal.fire({\r\n title : \"Lütfen gönderim listenize en az bir numara ya da dosya ekleyiniz.\",\r\n icon : \"info\"\r\n }) \r\n setActiveStep(1)\r\n }\r\n }, [summary])\r\n\r\n const resolveTimeOptions = (messageCount) => {\r\n let value = ''\r\n switch(sendingTimeType){\r\n case 1:\r\n value = 'Hemen gönderilecek ' \r\n break\r\n case 2:\r\n value = `Belirli tarih ve saatte gönderilecek (${moment(props.sendDate).format('DD.MM.YYYY HH:mm')}) ` \r\n break\r\n case 3:\r\n value = 'Periyodik olarak gönderim yapılacak ' \r\n break\r\n default:\r\n value = 'Bilinmiyor' \r\n break\r\n }\r\n if(sendingTimeOptions.sendSeperatedPeriodicallyOptions && sendingTimeOptions.sendSeperatedPeriodicallyOptions.isActive){\r\n const options = sendingTimeOptions.sendSeperatedPeriodicallyOptions\r\n value += `Gönderim başlatma periyodu: ${options.period.toString()} dakikada bir ${options.packageSize.toString()} adet gönderim`\r\n if (options.isShiftTimePeriodActive) {\r\n value += `\\n Gönderim başlatılmayacak saat aralığı: ${moment(options.shiftTimePeriodStartHour +':'+options.shiftTimePeriodStartMinute, \"HH:mm\").format(\"HH:mm\")} - ${moment(options.shiftTimePeriodEndHour +':'+options.shiftTimePeriodEndMinute, \"HH:mm\").format(\"HH:mm\")} `\r\n }\r\n value += `\\n Son gönderim başlatma zamanı: ${moment(calculateLastSendDate(props.sendDate, options, messageCount)).format('DD.MM.YYYY HH:mm')} `;\r\n }\r\n return value\r\n }\r\n\r\n return(\r\n \r\n \r\n \r\n \r\n { summaryLoads \r\n ? \r\n \r\n
\r\n : \r\n \r\n \r\n Gönderim Özeti\r\n \r\n \r\n \r\n \r\n Gönderim Adı : {props.taskName} \r\n \r\n \r\n \r\n \r\n Gönderim Zamanlaması : {resolveTimeOptions(summary.grandTotalWithoutLimits)} \r\n \r\n \r\n \r\n \r\n Kullanılan Gönderen Başlığı : {SenderInfo.sender} \r\n \r\n \r\n \r\n \r\n Operator - Sanal No : {opDisplayResolve(SenderInfo.operator)} - {(SenderInfo.virtualMsisdn || '')} \r\n \r\n \r\n \r\n \r\n Gönderim Yapılacak Mesaj Adedi : {(summary.grandTotalWithoutLimits || '0').toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n Ücretlendirilecek Mesaj Miktarı : summary.grandTotalWithoutLimits ? {color: 'red'} : {}}>{(summary.grandTotalPaymentAmountWithoutLimits || '0').toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n Türkçe Karakter Kullanımı : {props.canUseTurkishCharacters ? 'Evet, kullanılabilir' : 'Hayır, kullanılamaz'} \r\n \r\n \r\n \r\n \r\n Mesaj Metni : {(props.message || '').replaceAll('#*#n', '⏎').replaceAll('\\n', '⏎').replaceAll('»', '⏎')} \r\n \r\n \r\n \r\n \r\n İYS Mesaj Tipi : {props.iysMessageType} \r\n \r\n \r\n {props.isRequiredToSetOtherParameters &&\r\n \r\n \r\n İYS Alıcı Tipi : {props.iysRecipientType} \r\n \r\n \r\n }\r\n {props.isRequiredToSetOtherParameters &&\r\n \r\n \r\n İYS Marka Kodu : {props.iysBrandCode} \r\n \r\n \r\n }\r\n \r\n { smsLoads\r\n ? \r\n \r\n
\r\n : \r\n \r\n { summary != null && summary.availableSendCount < summary.grandTotalWithoutLimits\r\n ?
Tanımınıza ait limitten {summary.availableSendCount} adet hakkınız kalmıştır. Gönderim listesindeki numara sayısını azaltınız ya da hesap yetkiliniz üzerinden musterihizmetleri@codec.com.tr e-posta adresine limit arttırım talebinde bulununuz.}\r\n color=\"danger\"\r\n />\r\n :\r\n \r\n Kontrol Et ve Onayla\r\n \r\n }\r\n \r\n }\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Step0","import React, { useState } from 'react'\r\nimport clsx from 'clsx';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport { Select, MenuItem, Typography } from \"@material-ui/core\"\r\nimport Divider from '@material-ui/core/Divider';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport { TimePicker } from \"@material-ui/pickers\";\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n },\r\n textField: {\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n width: 200,\r\n marginBottom : 20\r\n },\r\n}));\r\n\r\nconst AdvancedTimeDialog = props => {\r\n const [ sendSeperatedPeriodicallyOptions, setSendSeperatedPeriodicallyOptions ] = useState({\r\n isActive : false,\r\n period : 10,\r\n packageSize : 100,\r\n isShiftTimePeriodActive : false,\r\n shiftTimePeriodStartHour : 12,\r\n shiftTimePeriodStartMinute : 0,\r\n shiftTimePeriodEndHour: 13,\r\n shiftTimePeriodEndMinute : 30\r\n })\r\n const [ expirationTimeOptions, setExpirationTimeOptions ] = useState({\r\n isActive : false,\r\n expirationTimeType : 1,\r\n ExpirationExactHour : 23,\r\n ExpirationExactMinute : 0,\r\n ExpirationTimePeriodMinute : 180\r\n })\r\n\r\n const { open, toggle, setSendingTimeOptions } = props\r\n const classes = useStyles();\r\n\r\n\r\n const fixTimePicker = time => {\r\n let arr = time.split(':')\r\n arr[0] = arr[0]\r\n if(arr[1] === '00'){\r\n arr[1] = 0\r\n }\r\n return arr\r\n }\r\n\r\n const handleStartTime = time => {\r\n const arr = fixTimePicker(time)\r\n setSendSeperatedPeriodicallyOptions({...sendSeperatedPeriodicallyOptions, shiftTimePeriodStartHour : arr[0], shiftTimePeriodStartMinute : arr[1]})\r\n }\r\n\r\n const handleEndTime = time => {\r\n const arr = fixTimePicker(time)\r\n setSendSeperatedPeriodicallyOptions({...sendSeperatedPeriodicallyOptions, shiftTimePeriodEndHour : arr[0], shiftTimePeriodEndMinute : arr[1]})\r\n }\r\n\r\n const handleExTime = time => {\r\n const arr = fixTimePicker(time)\r\n setExpirationTimeOptions({...expirationTimeOptions, ExpirationExactHour : arr[0], ExpirationExactMinute : arr[1] })\r\n }\r\n \r\n const StyledRadio = (props) => {\r\n\r\n return (\r\n }\r\n icon={ }\r\n {...props}\r\n />\r\n );\r\n }\r\n\r\n const Label1 = () => {\r\n const min = expirationTimeOptions.ExpirationExactMinute === 0 ? '00' : expirationTimeOptions.ExpirationExactMinute \r\n const value = expirationTimeOptions.ExpirationExactHour +':'+min\r\n return(\r\n \r\n \r\n Saat \r\n \r\n \r\n \r\n \r\n \r\n 'a kadar beklemede olup gönderilmemiş mesajları iptal et. \r\n \r\n \r\n )\r\n }\r\n\r\n const Label2 = () => {\r\n return(\r\n \r\n \r\n Gönderim saatinden itibaren \r\n \r\n \r\n {\r\n setExpirationTimeOptions({...expirationTimeOptions, ExpirationTimePeriodMinute : e.target.value })\r\n }}\r\n displayEmpty\r\n disabled = {expirationTimeOptions.expirationTimeType === 1}\r\n fullWidth\r\n inputProps={{ 'aria-label': 'Kullanılacak alfanumerik' }}\r\n >\r\n 1 saat 15 \r\n {timeOptions()}\r\n \r\n \r\n \r\n sonrasına kadar beklemede olup gönderilmemiş mesajları iptal et. \r\n \r\n \r\n )\r\n }\r\n\r\n const LabelComp = () => {\r\n const min = sendSeperatedPeriodicallyOptions.shiftTimePeriodStartMinute === 0 ? '00' : sendSeperatedPeriodicallyOptions.shiftTimePeriodStartMinute \r\n const min2 = sendSeperatedPeriodicallyOptions.shiftTimePeriodEndMinute === 0 ? '00' : sendSeperatedPeriodicallyOptions.shiftTimePeriodEndMinute \r\n const startValue = sendSeperatedPeriodicallyOptions.shiftTimePeriodStartHour +':'+min\r\n const endValue = sendSeperatedPeriodicallyOptions.shiftTimePeriodEndHour +':'+min2\r\n return(\r\n \r\n \r\n Saat \r\n \r\n \r\n \r\n \r\n \r\n ile \r\n \r\n \r\n \r\n \r\n \r\n arasına denk gelen gönderim paketlerinin gönderim zamanlarını bu zaman aralığının dışına ötele \r\n \r\n \r\n )\r\n }\r\n\r\n const handleOK = () => {\r\n setSendingTimeOptions({ sendSeperatedPeriodicallyOptions, expirationTimeOptions})\r\n toggle()\r\n }\r\n\r\n const fixTime = i => {\r\n let h = Math.floor(i/60)\r\n let m = 30\r\n if( i % 60 === 0){\r\n m = 0\r\n } \r\n return h + ' saat ' + (m === 0 ? '' : (m +' dakika'))\r\n }\r\n\r\n const timeOptions = () => {\r\n let items = []\r\n for( let i = 90; i < 1711; i += 30){\r\n items = [\r\n ...items,\r\n i\r\n ]\r\n }\r\n return( items.map( i => {\r\n return(\r\n {fixTime(i)} \r\n )\r\n }))\r\n }\r\n\r\n const handleOk = () => {\r\n setSendingTimeOptions({\r\n sendSeperatedPeriodicallyOptions,\r\n expirationTimeOptions\r\n })\r\n toggle()\r\n }\r\n\r\n return(\r\n \r\n Gelişmiş Gönderim Zamanı Seçenekleri \r\n \r\n \r\n \r\n setSendSeperatedPeriodicallyOptions({...sendSeperatedPeriodicallyOptions, isActive : !sendSeperatedPeriodicallyOptions.isActive}) }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n }\r\n label='Belirli periyodlarla ayrı ayrı paket olarak gönder'\r\n />\r\n \r\n {sendSeperatedPeriodicallyOptions.isActive &&\r\n \r\n \r\n \r\n \r\n \r\n Periyot \r\n \r\n \r\n {\r\n setSendSeperatedPeriodicallyOptions({...sendSeperatedPeriodicallyOptions, period : e.target.value})\r\n }}\r\n displayEmpty\r\n fullWidth\r\n inputProps={{ 'aria-label': 'Kullanılacak alfanumerik' }}\r\n >\r\n 1 dakika \r\n 2 dakika \r\n 3 dakika \r\n 4 dakika \r\n 5 dakika \r\n 6 dakika \r\n 7 dakika \r\n 8 dakika \r\n 9 dakika \r\n 10 dakika \r\n 15 dakika \r\n 20 dakika \r\n 25 dakika \r\n 30 dakika \r\n 35 dakika \r\n 40 dakika \r\n 45 dakika \r\n 50 dakika \r\n 55 dakika \r\n 60 dakika \r\n 65 dakika \r\n 70 dakika \r\n 75 dakika \r\n 80 dakika \r\n 85 dakika \r\n 90 dakika \r\n 95 dakika \r\n 100 dakika \r\n 105 dakika \r\n 110 dakika \r\n 115 dakika \r\n 120 dakika \r\n 125 dakika \r\n 130 dakika \r\n 135 dakika \r\n 140 dakika \r\n 145 dakika \r\n 150 dakika \r\n 155 dakika \r\n 160 dakika \r\n 165 dakika \r\n 170 dakika \r\n 175 dakika \r\n 180 dakika \r\n \r\n \r\n \r\n Her bir periyotta gönderilecek mesaj adedi sınırı \r\n \r\n \r\n {\r\n const value = (e.target.value < 0 ? 0 : (e.target.value > 20000 ? 20000 : (e.target.value < 5 ? 5 : e.target.value)))\r\n setSendSeperatedPeriodicallyOptions({...sendSeperatedPeriodicallyOptions, packageSize : value})\r\n }\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n setSendSeperatedPeriodicallyOptions({...sendSeperatedPeriodicallyOptions, isShiftTimePeriodActive : !sendSeperatedPeriodicallyOptions.isShiftTimePeriodActive}) }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n }\r\n label= { }\r\n />\r\n \r\n \r\n \r\n }\r\n \r\n \r\n setExpirationTimeOptions({...expirationTimeOptions, isActive : !expirationTimeOptions.isActive}) }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n }\r\n label='Geçerlilik zamanını belirle'\r\n />\r\n \r\n { expirationTimeOptions.isActive &&\r\n \r\n \r\n {\r\n setExpirationTimeOptions({...expirationTimeOptions, expirationTimeType : parseInt(e.target.value)}) \r\n }} aria-label=\"gender\" name=\"customized-radios\">\r\n } label={ } />\r\n } label={ } />\r\n \r\n \r\n \r\n }\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n İPTAL\r\n \r\n \r\n TAMAM\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default AdvancedTimeDialog","import React, { useEffect, useState } from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport clsx from 'clsx';\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Box from '@material-ui/core/Box';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n '&:hover': {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n icon: {\r\n borderRadius: '50%',\r\n width: 16,\r\n height: 16,\r\n boxShadow: 'inset 0 0 0 1px rgba(16,22,26,.2), inset 0 -1px 0 rgba(16,22,26,.1)',\r\n backgroundColor: '#f5f8fa',\r\n backgroundImage: 'linear-gradient(180deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0))',\r\n '$root.Mui-focusVisible &': {\r\n outline: '2px auto rgba(19,124,189,.6)',\r\n outlineOffset: 2,\r\n },\r\n 'input:hover ~ &': {\r\n backgroundColor: '#ebf1f5',\r\n },\r\n 'input:disabled ~ &': {\r\n boxShadow: 'none',\r\n background: 'rgba(206,217,224,.5)',\r\n },\r\n },\r\n checkedIcon: {\r\n backgroundColor: '#3c54a5',\r\n backgroundImage: 'linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))',\r\n '&:before': {\r\n display: 'block',\r\n width: 16,\r\n height: 16,\r\n backgroundImage: 'radial-gradient(#fff,#fff 28%,transparent 32%)',\r\n content: '\"\"',\r\n },\r\n 'input:hover ~ &': {\r\n backgroundColor: '#3c54a5',\r\n },\r\n },\r\n textBox : {\r\n maxHeight : 200,\r\n overflowY : 'scroll'\r\n }\r\n}));\r\n\r\nconst EtkDialog = props => {\r\n\r\n const [ MessagingIsUnderLaw, setMessagingIsUnderLaw ] = useState(null)\r\n const [ IsAcceptedTheAgreement, SetIsAcceptedTheAgreement ] = useState(false)\r\n const [ IpAddress ] = useState(null)\r\n\r\n\r\n const { open, toggle, SetEtkAgreementAnswer, sendSmsFunc, setActiveStep, email, MMS } = props\r\n const classes = useStyles();\r\n\r\n const handlClose = () => {\r\n setMessagingIsUnderLaw(null)\r\n SetIsAcceptedTheAgreement(false)\r\n toggle()\r\n }\r\n\r\n const StyledRadio = (props) => {\r\n\r\n return (\r\n }\r\n icon={ }\r\n {...props}\r\n />\r\n );\r\n }\r\n\r\n const handleEtk = (q) => {\r\n SetEtkAgreementAnswer({\r\n MessagingIsUnderLaw,\r\n IsAcceptedTheAgreement,\r\n IpAddress,\r\n ...q\r\n })\r\n }\r\n\r\n const handleSend = () => {\r\n sendSmsFunc()\r\n handlClose()\r\n }\r\n\r\n return(\r\n \r\n ETK Bildirimi ve Onay \r\n \r\n \r\n \r\n \r\n {\r\n setMessagingIsUnderLaw(e.target.value === 'true' ? true : false) \r\n handleEtk({MessagingIsUnderLaw : e.target.value === 'true' ? true : false})\r\n }} aria-label=\"gender\" name=\"customized-radios\">\r\n } \r\n label=\"Yapacağım gönderim, Elektronik Ticaretin Düzenlenmesi Hakkında Kanun ve sair mevzuat kapsamındadır.\" \r\n />\r\n } \r\n label=\"Yapacağım gönderim, Elektronik Ticaretin Düzenlenmesi Hakkında Kanun ve sair mevzuat kapsamında DEĞİLDİR.\" \r\n />\r\n \r\n \r\n \r\n { props.EtkAgreementAnswer && props.EtkAgreementAnswer.MessagingIsUnderLaw &&\r\n <>\r\n \r\n \r\n \r\n 15 Temmuz 2015 günü yürürlüğe giren “Ticari İletişim ve Ticari Elektronik İletiler Hakkında Yönetmelik” kapsamında, elektronik ticari iletilerde uyulması gereken kurallar aşağıda belirtilmiştir. Gönderiminizi başlatmadan önce, lütfen mesaj metninizin ilgili düzenlemelere uygun olduğundan emin olunuz. \r\n Tüm ticari elektronik iletilerde (reklam, pazarlama ve tanıtıma yönelik tüm iletilerde);\r\n \r\n \r\n 1. Mesajın/görselin içeriğinde; tacirler için MERSİS numarası, esnaflar için ise adı ve soyadı ile T.C. kimlik numarası yer almalıdır. \r\n \r\n \r\n 2. Mesajın/görselin niteliği içeriğinden açık bir biçimde anlaşılamıyorsa, mesajın başlangıcında “tanıtım”, “kampanya” ve “bilgilendirme” gibi niteliği belirleyici bir ibare olmalıdır. \r\n \r\n \r\n 3. Kampanya, promosyon, hediye vb. içeriğe sahip mesajlarda, kampanya koşulları açık ve şüpheye yer vermeyecek şekilde bu amaçla hazırlanmış bir URL adresi veya müşteri hizmetleri numarası gibi kolay bir şekilde ulaşılabilecek yöntemlerle sunulmalıdır. \r\n \r\n \r\n 4. Mesaj içeriğinin/görselin en sonunda “Servis sağlayıcı: CODEC” ibaresine yer verilmelidir. \r\n \r\n \r\n 5. Gönderilen her mesajda, tüketicilerin kısa numaraya mesaj atarak çıkış taleplerini iletebilecekleri ücretsiz çıkış kanalı sunulması zorunludur. (Bu servisi henüz kullanmaya başlamadıysanız, aktif hale getirmek için Müşteri Hizmetlerimiz veya Satış Yöneticiniz ile en kısa sürede temasa geçiniz.) \r\n \r\n \r\n CODEC Müşteri Hizmetleri Telefon Numaraları \r\n \r\n \r\n 0212 483 71 14 \r\n \r\n \r\n 0212 483 71 13\r\n \r\n \r\n 0533 704 32 74 \r\n \r\n \r\n Örnek mesaj metni: “KAMPANYA: ABC GİYİM’de %50’ye varan sezon indirimi başladı. Sizi mağazalarımıza bekliyoruz. Detaylar: www.abcgiyim.com/indirim Gönderim listesinden cikmak icin ABCGIYIM yazip 3525’e gönderin. MERSIS:1234567891011213. Servis sağlayıcı: CODEC” \r\n \r\n \r\n 1 Mayıs 2015 tarihinden önce alınan iletişim izinlerine istinaden yapılan ilk gönderimde;\r\n \r\n \r\n Müşteriye ücretsiz veritabanından çıkış hakkı verilmeli ve firmanıza ait veri tabanında kayıtlı olduğuna dair bilgiye yer verilmelidir. \r\n \r\n \r\n Örnek mesaj metni: “KAMPANYA: ABC GİYİM’de %50’ye varan sezon indirimi başladı. Sizi mağazalarımıza bekliyoruz. Detaylar: www.abcgiyim.com/indirim Bu mesaj size ABC GİYİM’in müşteri iletişim listesinde yer aldığınız için gönderilmiştir. Listeden cikmak icin ABCGIYIM yaz 3525’e gönderiniz. MERSIS:1234567891011213. Servis sağlayıcı: CODEC”\r\n \r\n \r\n \r\n \r\n {\r\n SetIsAcceptedTheAgreement(!IsAcceptedTheAgreement)\r\n handleEtk({ IsAcceptedTheAgreement : !IsAcceptedTheAgreement})\r\n }}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n }\r\n label='Yukarıda belirttiğim hususlar hakkında bilgi sahibi olduğumu; gönderim içeriğinin kurallara uygun olduğunu; gönderim içeriği ile ilgili her türlü sorumluluğun şahsıma ve/veya firmama ait olduğunu bildiğimi kabul, beyan ve taahhüt ederim.'\r\n />\r\n \r\n > \r\n }\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n İPTAL\r\n \r\n { props.EtkAgreementAnswer \r\n ? !props.EtkAgreementAnswer.MessagingIsUnderLaw || (props.EtkAgreementAnswer.MessagingIsUnderLaw && props.EtkAgreementAnswer.IsAcceptedTheAgreement )\r\n ? \r\n {email ? \"E-posta\" : MMS ? \"MMS\" : \"SMS\"} GÖNDER\r\n \r\n : null\r\n : null\r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default EtkDialog","export class CustomerCustomFieldPredefinedLookupType {\r\n static ENUM_PREDEFINEDLOOKUPTYPE_UNKNOWN = \"Unknown\";\r\n static ENUM_PREDEFINEDLOOKUPTYPE_INTERACTIVEMESSAGINGACTIONPURPOSEIDENTIFIERCAMPAIGNS = \"InteractiveMessagingActionPurposeIdentifierCampaigns\";\r\n\r\n\r\n static ID_PREDEFINEDLOOKUPTYPE_UNKNOWN = 0;\r\n static ID_PREDEFINEDLOOKUPTYPE_INTERACTIVEMESSAGINGACTIONPURPOSEIDENTIFIERCAMPAIGNS = 1;\r\n}","import { domain } from './domain'\r\nimport axios from 'axios'\r\n\r\nexport const getActionPurposeIdentifierCampaigns = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/InteractiveMessagingService/GetActionPurposeIdentifierCampaigns', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}","import React, { useEffect, useState } from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { Checkbox, FormControlLabel, MenuItem, Select, Table, TableBody, TableCell, TableContainer, TableFooter, TableHead, TableRow } from '@material-ui/core';\r\nimport { alertResponseError } from '_helpers/notification';\r\nimport { checkResponse } from '_helpers/notification';\r\nimport { CustomerCustomFieldPredefinedLookupType } from 'variables/customerCustomFieldPredefinedLookupType';\r\nimport { FileFields } from 'variables/fileFields';\r\nimport CustomInput from 'components/CustomInput/CustomInput';\r\nimport { getCustomerCustomFieldsLookupValues } from '_services/definitions';\r\nimport { getActionPurposeIdentifierCampaigns } from '_services/interactiveMessaging';\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport Swal from 'sweetalert2';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\r\n}));\r\n\r\nconst CustomerCustomParametersInputDialog = props => {\r\n\r\n const { open, handleOk, handleToggle, AuthData, dispatch, customerCustomFields, isShownBeforeSending, isShownBetweenFileImportingAndNewSending } = props\r\n const classes = useStyles();\r\n\r\n const [loading, setLoading] = useState(false)\r\n const [currentCustomerCustomFields, setCurrentCustomerCustomFields] = useState([])\r\n const [isTestCheckboxVisible, setIsTestCheckboxVisible] = useState(false)\r\n const [customerCustomFieldsElements, setCustomerCustomFieldsElements] = useState([])\r\n const [usingCustomerCustomFields, setUsingCustomerCustomFields] = useState([])\r\n const [isTest, setIsTest] = useState(false)\r\n const [lookupValuesList, setLookupValuesList] = useState([])\r\n const [lookupValuesListPermanent, setLookupValuesListPermanent] = useState([])\r\n const [customerCustomFieldsLookupValues, setCustomerCustomFieldsLookupValues] = useState([])\r\n const [getCustomerCustomFieldsLookupValuesFlag, setGetCustomerCustomFieldsLookupValuesFlag] = useState(false)\r\n const [selectedValues, setSelectedValues] = useState({})\r\n\r\n useEffect(() => {\r\n var activeCustomerCustomFields = (customerCustomFields == undefined ? [] : [...customerCustomFields])\r\n if (isShownBeforeSending) {\r\n activeCustomerCustomFields = activeCustomerCustomFields.filter(function (f) {\r\n return f.showBeforeSending;\r\n })\r\n }\r\n\r\n if (isShownBetweenFileImportingAndNewSending) {\r\n activeCustomerCustomFields = activeCustomerCustomFields.filter(function (f) {\r\n return f.showBetweenFileImportingAndNewSending;\r\n })\r\n }\r\n\r\n var requiredAndSkippableFieldCount = activeCustomerCustomFields.filter(function (f) {\r\n return !f.isOptional && f.canBeSkippedOnTest;\r\n }).length;\r\n setIsTestCheckboxVisible(requiredAndSkippableFieldCount > 0)\r\n setCurrentCustomerCustomFields(activeCustomerCustomFields)\r\n }, [customerCustomFields])\r\n\r\n useEffect(() => {\r\n const currentLookupValuesList = []\r\n const currentSelectedValues = selectedValues\r\n const currentCustomerCustomFieldsElements = getCustomerCustomFieldsElements(currentLookupValuesList, currentSelectedValues)\r\n setLookupValuesList(currentLookupValuesList)\r\n setLookupValuesListPermanent((currentLookupValuesList == undefined ? [] : [...currentLookupValuesList]))\r\n setSelectedValues(currentSelectedValues)\r\n setCustomerCustomFieldsElements(currentCustomerCustomFieldsElements)\r\n if (currentCustomerCustomFieldsElements.length > 0) {\r\n setGetCustomerCustomFieldsLookupValuesFlag(true)\r\n }\r\n }, [currentCustomerCustomFields])\r\n\r\n useEffect(() => {\r\n if (getCustomerCustomFieldsLookupValuesFlag) {\r\n callGetCustomerCustomFieldsLookupValues()\r\n setGetCustomerCustomFieldsLookupValuesFlag(false)\r\n\r\n if (lookupValuesList.length == 0) {\r\n const currentSelectedValues = selectedValues\r\n const currentCustomerCustomFieldsElements = getCustomerCustomFieldsElements(lookupValuesListPermanent, currentSelectedValues)\r\n setSelectedValues(currentSelectedValues)\r\n setCustomerCustomFieldsElements(currentCustomerCustomFieldsElements)\r\n }\r\n }\r\n }, [getCustomerCustomFieldsLookupValuesFlag])\r\n\r\n useEffect(() => {\r\n callGetCustomerCustomFieldsLookupValues()\r\n\r\n if (lookupValuesList.length == 0) {\r\n const currentCustomerCustomFieldsElements = getCustomerCustomFieldsElements(lookupValuesListPermanent, selectedValues)\r\n setSelectedValues(selectedValues)\r\n setCustomerCustomFieldsElements(currentCustomerCustomFieldsElements)\r\n }\r\n }, [customerCustomFieldsLookupValues])\r\n\r\n const getCustomLookupTableItems = (customerCustomField) => {\r\n return customerCustomFieldsLookupValues.filter(item => item.customerFieldId === customerCustomField.customerFieldId).map(item => (\r\n {item.customFieldValue} \r\n ))\r\n }\r\n\r\n const getInteractiveMessagingActionPurposeIdentifierCampaignsLookupTableItems = (customerCustomField) => {\r\n return customerCustomFieldsLookupValues.filter(item => item.customerFieldId === customerCustomField.customerFieldId).map(item => (\r\n {getCampaignTitle(item)} \r\n
Anahtar Kelime: {item.keywordDisplayText}Kampanya Süresi: {(item.startDate == null ? '...' : moment(item.startDate).format('DD.MM.YYYY')) + '-' + (item.endDate == null ? '...' : moment(item.endDate).format('DD.MM.YYYY'))}
\r\n ))\r\n }\r\n\r\n const getCampaignKey = (campaign) => {\r\n return (campaign.campaignName || '')\r\n + (campaign.managedCampaignId != undefined && campaign.managedCampaignId != null ? '|' + campaign.managedCampaignId : '')\r\n + (campaign.keywordDisplayText != undefined && campaign.keywordDisplayText != null ? '|' + campaign.keywordDisplayText : '')\r\n }\r\n\r\n const getCampaignValue = (campaign) => {\r\n return (campaign.campaignName || '')\r\n + (campaign.managedCampaignName != undefined && campaign.managedCampaignName != null ? '|' + campaign.managedCampaignName : '')\r\n + (campaign.keywordDisplayText != undefined && campaign.keywordDisplayText != null ? '|' + campaign.keywordDisplayText : '')\r\n }\r\n\r\n const getCampaignTitle = (campaign) => {\r\n return (campaign.campaignName || '...')\r\n + (campaign.isManagedCampaign ? (campaign.managedCampaignName != undefined && campaign.managedCampaignName != null && campaign.managedCampaignName !== '' ? ' (' + campaign.managedCampaignName + ')' : '') : '')\r\n }\r\n\r\n const lookupSetValue = (customerCustomFieldId, customFieldValue) => {\r\n if (customerCustomFieldId == undefined || customerCustomFieldId === 0 || customerCustomFieldId === '0' || customerCustomFieldId === '') return\r\n if (customFieldValue == undefined) return\r\n const currentSelectedValues = selectedValues\r\n currentSelectedValues[customerCustomFieldId] = customFieldValue\r\n setSelectedValues(currentSelectedValues)\r\n }\r\n\r\n const getCustomerCustomFieldsElements = (currentLookupValuesList, currentSelectedValues) => {\r\n return (\r\n currentCustomerCustomFields.map((customerCustomField) => {\r\n const customerCustomFieldCaption = customerCustomField.customFieldCaptionTR\r\n var addingElement\r\n\r\n if (customerCustomField.predefinedLookupType\r\n == CustomerCustomFieldPredefinedLookupType.ID_PREDEFINEDLOOKUPTYPE_INTERACTIVEMESSAGINGACTIONPURPOSEIDENTIFIERCAMPAIGNS) {\r\n currentSelectedValues[customerCustomField.customerFieldId] = ''\r\n var descriptionDropDownList = lookupSetValue(parseInt(e.target.name), e.target.value)}\r\n inputProps={{ 'aria-label': '' }}\r\n >\r\n <SEÇİNİZ> \r\n {\r\n getInteractiveMessagingActionPurposeIdentifierCampaignsLookupTableItems(customerCustomField)\r\n }\r\n ;\r\n currentLookupValuesList.push({ control: descriptionDropDownList, customerCustomFieldId: customerCustomField.customerFieldId, predefinedLookupType: customerCustomField.predefinedLookupType })\r\n addingElement = descriptionDropDownList;\r\n }\r\n else {\r\n if (customerCustomField.hasLookupTable || customerCustomField.hasCustomLookupTable) {\r\n currentSelectedValues[customerCustomField.customerFieldId] = ''\r\n var dropDownList = lookupSetValue(parseInt(e.target.name), e.target.value)}\r\n inputProps={{ 'aria-label': '' }}\r\n >\r\n <SEÇİNİZ> \r\n {\r\n getCustomLookupTableItems(customerCustomField)\r\n }\r\n ;\r\n currentLookupValuesList.push({ control: dropDownList, customerCustomFieldId: customerCustomField.customerFieldId, predefinedLookupType: customerCustomField.predefinedLookupType })\r\n addingElement = dropDownList;\r\n }\r\n else {\r\n switch (customerCustomField.customFieldType) {\r\n default:\r\n case FileFields.ID_FIELDTYPE_TEXT:\r\n case FileFields.ID_FIELDTYPE_IDENTITYNUMBER:\r\n case FileFields.ID_FIELDTYPE_TAXNUMBER:\r\n case FileFields.ID_FIELDTYPE_MOBILEPHONE:\r\n case FileFields.ID_FIELDTYPE_EMAILADDRESS:\r\n case FileFields.ID_FIELDTYPE_UNKNOWN:\r\n var textInput = \r\n addingElement = textInput;\r\n break;\r\n /*\r\n case FileFields.ID_FIELDTYPE_SMSMESSAGE:\r\n var textArea:spark.components.TextArea = new spark.components.TextArea();\r\n textArea.id = \"cf\" + customerCustomField.CustomerFieldId.toString();\r\n textArea.name = customerCustomField.CustomerFieldId.toString();\r\n textArea.percentWidth = 100;\r\n formItem.addElement(textArea);\r\n break;\r\n \r\n case FileFields.ID_FIELDTYPE_DATETIME:\r\n var dateTimePicker:DateTimePicker = new DateTimePicker();\r\n dateTimePicker.id = \"cf\" + customerCustomField.CustomerFieldId.toString();\r\n dateTimePicker.name = customerCustomField.CustomerFieldId.toString();\r\n dateTimePicker.percentWidth = 100;\r\n dateTimePicker.isNullable = true;\r\n dateTimePicker.selectedDate = new Date();\r\n formItem.addElement(dateTimePicker);\r\n break;\r\n \r\n case FileFields.ID_FIELDTYPE_NUMBER:\r\n case FileFields.ID_FIELDTYPE_CURRENCY:\r\n var numericStepper:NumericStepper = new NumericStepper();\r\n numericStepper.id = \"cf\" + customerCustomField.CustomerFieldId.toString();\r\n numericStepper.name = customerCustomField.CustomerFieldId.toString();\r\n numericStepper.percentWidth = 100;\r\n numericStepper.maximum = 100000000;\r\n formItem.addElement(numericStepper);\r\n break;\r\n */\r\n }\r\n }\r\n }\r\n\r\n setUsingCustomerCustomFields([...usingCustomerCustomFields, customerCustomField.customerFieldId])\r\n\r\n const modulus = parseInt(customerCustomField.customerFieldId) % 2\r\n return (\r\n \r\n \r\n {customerCustomFieldCaption}\r\n \r\n \r\n {addingElement}\r\n \r\n \r\n )\r\n })\r\n )\r\n }\r\n\r\n const currentCustomerCustomFieldsLookupValues = (customerCustomFieldsLookupValues == undefined ? [] : [...customerCustomFieldsLookupValues])\r\n const callGetCustomerCustomFieldsLookupValues = () => {\r\n if (lookupValuesList == null || lookupValuesList.length == 0) {\r\n setLoading(false)\r\n }\r\n else {\r\n const lookupValue = lookupValuesList[0];\r\n if (lookupValue != null) {\r\n setLoading(true)\r\n const customerCustomFieldId = lookupValue.customerCustomFieldId\r\n if (lookupValue.predefinedLookupType == CustomerCustomFieldPredefinedLookupType.ID_PREDEFINEDLOOKUPTYPE_INTERACTIVEMESSAGINGACTIONPURPOSEIDENTIFIERCAMPAIGNS) {\r\n const data = { ...AuthData }\r\n getActionPurposeIdentifierCampaigns(data)\r\n .then(res => {\r\n if (checkResponse(res, dispatch, null, 'Müşteri özel alanlar tanım değerleri listesi getirilemedi.')) {\r\n if (res.data.campaignList && res.data.campaignList != null && res.data.campaignList.length > 0) {\r\n res.data.campaignList.forEach(item => item.customerFieldId = customerCustomFieldId)\r\n currentCustomerCustomFieldsLookupValues.push(...res.data.campaignList)\r\n }\r\n lookupValuesList.shift()\r\n setCustomerCustomFieldsLookupValues(currentCustomerCustomFieldsLookupValues)\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Müşteri özel alanlar tanım değerleri listesi getirilemedi.')\r\n })\r\n }\r\n else {\r\n const data = { ...AuthData, customFieldId: customerCustomFieldId }\r\n getCustomerCustomFieldsLookupValues(data)\r\n .then(res => {\r\n if (checkResponse(res, dispatch, null, 'Müşteri özel alanlar tanım değerleri listesi getirilemedi.')) {\r\n if (res.data.customerCustomFieldsLookupValues && res.data.customerCustomFieldsLookupValues != null && res.data.customerCustomFieldsLookupValues.length > 0) {\r\n res.data.customerCustomFieldsLookupValues.forEach(item => item.customerFieldId = customerCustomFieldId)\r\n currentCustomerCustomFieldsLookupValues.push(...res.data.customerCustomFieldsLookupValues)\r\n }\r\n lookupValuesList.shift()\r\n setCustomerCustomFieldsLookupValues(currentCustomerCustomFieldsLookupValues)\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Müşteri özel alanlar tanım değerleri listesi getirilemedi.')\r\n })\r\n }\r\n }\r\n else {\r\n setLoading(false)\r\n }\r\n }\r\n }\r\n\r\n const handleIsTest = () => {\r\n setIsTest(!isTest)\r\n }\r\n\r\n const checkOk = () => {\r\n const customerCustomFieldValues = []\r\n if (selectedValues != null) {\r\n if (customerCustomFields != null && customerCustomFields.length > 0) {\r\n for (const [key, value] of Object.entries(selectedValues)) {\r\n if (key != undefined) {\r\n if (value == undefined || value == null || value === 0 || value === '' || value === '0') {\r\n var customerCustomField = customerCustomFields.find(f => f.customerFieldId === parseInt(key))\r\n if (customerCustomField != null && customerCustomField != undefined) {\r\n if (!customerCustomField.isOptional && (!isTestCheckboxVisible || !isTest || !customerCustomField.canBeSkippedOnTest)) {\r\n Swal.fire({\r\n icon: \"error\",\r\n title: 'Zorunlu Alan.',\r\n text: '\"' + customerCustomField.customFieldCaptionTR + '\" alanının doldurulması zorunludur.'\r\n })\r\n return;\r\n }\r\n }\r\n }\r\n else {\r\n customerCustomFieldValues.push({customFieldId: parseInt(key), customFieldValue: value})\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleOk(customerCustomFieldValues, isTest)\r\n }\r\n }\r\n\r\n return (\r\n {\r\n if (reason !== 'backdropClick') {\r\n handleToggle()\r\n }}}>\r\n Doldurulabilir Özel Alanlar \r\n \r\n <>\r\n \r\n \r\n {loading\r\n ?\r\n \r\n \r\n
:\r\n \r\n \r\n \r\n {customerCustomFieldsElements}\r\n \r\n \r\n \r\n \r\n {isTestCheckboxVisible &&\r\n \r\n }\r\n label=\"Test gönderimi olduğundan bu adımı atlamak istiyorum.\"\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 {!isShownBetweenFileImportingAndNewSending &&\r\n \r\n İPTAL\r\n \r\n }\r\n \r\n TAMAM\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default CustomerCustomParametersInputDialog","import React, { useState, useEffect } from 'react';\r\nimport {\r\n sendingListBuilderClear, sendingListBuilderCopy, updateSendSmsInfoAndGetSummary, sendSms, setPeriodicSms, getPeriodicFirstScheduledDateTime,\r\n getIysMessagingParameterList\r\n} from '../../_services/sms.js'\r\nimport { getSmsSenderList } from '../../_services/sms.js'\r\nimport { connect } from 'react-redux'\r\nimport { timeout } from '../../_actions/user'\r\nimport { canceltwofasms, closeTwofa } from '../../_actions/twofa'\r\nimport { makeStyles, } from '@material-ui/core/styles';\r\nimport Stepper from '@material-ui/core/Stepper';\r\nimport Step from '@material-ui/core/Step';\r\nimport StepButton from '@material-ui/core/StepButton';\r\nimport Button from '@material-ui/core/Button';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Step0 from './Step0.js'\r\nimport Step1 from './Step1.js'\r\nimport Step2 from './Step2.js'\r\nimport Step3 from './Step3.js'\r\nimport Step4 from './Step4.js'\r\nimport Swal from 'sweetalert2'\r\nimport AdvancedTimeDialog from 'components/Sms/AdvancedTimeDialog.js'\r\nimport EtkDialog from 'components/Sms/EtkDialog'\r\nimport TwofaDialog from \"components/Twofa/TwofaDialog.js\";\r\nimport { FileFields } from 'variables/fileFields.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\nimport { alertResponse } from '_helpers/notification.js';\r\nimport { checkResponse } from '_helpers/notification.js';\r\nimport { checkResultResponse } from '_helpers/notification.js';\r\nimport CustomerCustomParametersInputDialog from 'components/Sending/CustomerCustomParametersInputDialog.js';\r\nimport { ServiceType } from 'variables/serviceType.js';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: '100%',\r\n },\r\n button: {\r\n marginRight: theme.spacing(1),\r\n },\r\n instructions: {\r\n marginTop: theme.spacing(1),\r\n marginBottom: theme.spacing(1),\r\n },\r\n}));\r\n\r\nconst getSteps = () => {\r\n return ['Tanım', 'Liste', 'İçerik', 'Zamanlama', \"Özet\"];\r\n}\r\n\r\nconst SmsGonderim = (props) => {\r\n const { defaultKeyFieldType, PbPersonList, PbGroupList, SavedFileIdList, isRedirectedFromSavedFiles } = props.location\r\n\r\n const classes = useStyles();\r\n const [activeStep, setActiveStep] = useState(0);\r\n const [smsCheck, setSmsCheck] = useState(false)\r\n\r\n\r\n //loads\r\n const [summaryLoads, setSummaryLoads] = useState('')\r\n const [smsLoads, setSmsLoads] = useState('')\r\n\r\n //step0\r\n const [slloading, setSlloading] = useState(false)\r\n const [senderList, setSenderList] = useState([])\r\n const [taskName, setTaskName] = useState('')\r\n const [sendDate, setSendDate] = useState('')\r\n const [sendingTimeType, setSendingTimeType] = useState(0)\r\n const [sendingTimeOptions, setSendingTimeOptions] = useState(\r\n {\r\n sendSeperatedPeriodicallyOptions: null,\r\n expirationTimeOptions: null\r\n }\r\n )\r\n const [canUseTurkishCharacters, setCanUseTurkishCharacters] = useState(false)\r\n const [message, setMessage] = useState('')\r\n const [sendingLimit, setSendingLimit] = useState(-1)\r\n const [paymentLimit, setPaymentLimit] = useState(-1)\r\n const [EtkAgreementAnswer, SetEtkAgreementAnswer] = useState(null)\r\n const [smsCharacterset, setSmsCharacterset] = useState(0)\r\n const [dynamicMessageFields, setDynamicMessageFields] = useState([])\r\n\r\n const [SenderInfo, SetSenderInfo] = useState('')\r\n const [SendType, SetSendType] = useState(3)\r\n const [sendTypeManuallySet, SetSendTypeManuallySet] = useState(false)\r\n const [sendSMSData, setSendSMSData] = useState('')\r\n const [SourceTaskId, SetSourceTaskId] = useState('')\r\n\r\n //Step 1\r\n const [defaultPbPersonList, setDefaultPbPersonList] = useState([])\r\n const [defaultPbGroupList, setDefaultPbGroupList] = useState([])\r\n const [defaultSavedFileIdList, setDefaultSavedFileIdList] = useState([])\r\n const [grandTotal, setGrandTotal] = useState(0)\r\n\r\n //Step 2\r\n const [maxCharLength, setMaxCharLength] = useState(160)\r\n const [smsUnit, setSmsUnit] = useState(1)\r\n\r\n //periodic\r\n const [occuranceType, setOccuranceType] = useState(0)\r\n const [occuranceValue, setOccuranceValue] = useState(1)\r\n const [occuranceWeeklyOptionWeekdayValues, setOccuranceWeeklyOptionWeekdayValues] = useState([0])\r\n const [occuranceMonthlyOption, setOccuranceMonthlyOption] = useState(0)\r\n const [occuranceMonthlyOptionDayValue, setOccuranceMonthlyOptionDayValue] = useState(1)\r\n const [occuranceMonthlyOptionWeekdayValue, setOccuranceMonthlyOptionWeekdayValue] = useState(0)\r\n const [startDate, setStartDate] = useState(\"\")\r\n const [endDate, setEndDate] = useState(\"\")\r\n const [isEndDateExist, setIsEndDateExist] = useState(false)\r\n const [sendHour, setSendHour] = useState(10)\r\n const [sendMinute, setSendMinute] = useState(0)\r\n const [lastSendDate, setLastSendDate] = useState(null)\r\n const [checkBlackList, setCheckBlackList] = useState(false)\r\n const [firstScheduledDateTime, setFirstScheduledDateTime] = useState('')\r\n const [nextTop10ScheduledDateTime, setNextTop10ScheduledDateTime] = useState([])\r\n const [dateFieldOption, setDateFieldOption] = useState(0)\r\n const [dateFieldNameOrId, setDateFieldNameOrId] = useState('')\r\n const [advancedTimeDialog, setAdvancedTimeDialog] = useState(false)\r\n const [isDynamic, setIsDynamic] = useState(false)\r\n const [dynamicFieldNames, setDynamicFieldNames] = useState([])\r\n const [dynamicFieldNamesNotIncludes, setDynamicFieldNamesNotIncludes] = useState([])\r\n const [KeyFieldType, SetKeyFieldType] = useState(2)\r\n\r\n\r\n // IYS\r\n const [iysMessageTypeList, setIysMessageTypeList] = useState([])\r\n const [iysRecipientTypeList, setIysRecipientTypeList] = useState([])\r\n const [iysBrandCodeList, setIysBrandCodeList] = useState([])\r\n\r\n const [iysMessageType, setIysMessageType] = useState('')\r\n const [iysRecipientType, setIysRecipientType] = useState('')\r\n const [iysBrandCode, setIysBrandCode] = useState('')\r\n const [iysIsAllowedToPassEmptyByUser, setIysIsAllowedToPassEmptyByUser] = useState(false)\r\n const [isRequiredToSetOtherParameters, setIsRequiredToSetOtherParameters] = useState(false)\r\n\r\n\r\n // CustomerCustomFields\r\n const [customFieldPopupIsShownBeforeSending, setCustomFieldPopupIsShownBeforeSending] = useState(false)\r\n const [customFieldPopupIsShownBetweenFileImportingAndNewSending, setCustomFieldPopupIsShownBetweenFileImportingAndNewSending] = useState(false)\r\n const [openCustomerCustomParametersInputDialog, setOpenCustomerCustomParametersInputDialog] = useState(false)\r\n const [customerCustomFieldsValues, setCustomerCustomFieldsValues] = useState(null)\r\n\r\n const steps = getSteps();\r\n const { dispatch } = props\r\n const { sessionId, contextSessionId, user } = props.userReducer.user\r\n\r\n const AuthData = { sessionId, contextSessionId }\r\n\r\n useEffect(() => {\r\n let keyFieldTypeTemp = keyFieldTypeFix(SendType)\r\n if (keyFieldTypeTemp !== KeyFieldType) {\r\n SetKeyFieldType(keyFieldTypeTemp)\r\n\r\n if (keyFieldTypeTemp !== defaultKeyFieldType) {\r\n clearDefaultLists();\r\n sendingListBuilderClearFromService();\r\n }\r\n }\r\n }, [SendType])\r\n\r\n useEffect(() => {\r\n if (defaultKeyFieldType) {\r\n SetSendType(sendTypeByKeyFieldType(defaultKeyFieldType))\r\n setDefaultLists()\r\n }\r\n }, [defaultKeyFieldType])\r\n\r\n useEffect(() => {\r\n const data = { sessionId, contextSessionId }\r\n getIysMessagingParameterList(data)\r\n .then(res => {\r\n if (checkResponse(res, dispatch, null, 'İYS mesajlaşma parametre listeleri alınamadı.')) {\r\n setIysMessageTypeList(res.data.iysMessageTypeList)\r\n setIysRecipientTypeList(res.data.iysRecipientTypeList)\r\n setIysBrandCodeList(res.data.iysBrandCodeList)\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'İYS mesajlaşma parametre listeleri alınamadı.')\r\n })\r\n\r\n // TODO: Aktifbank onaylamadan yeni arayüzü kullanabilmeleri için aktif edildi\r\n if (isRedirectedFromSavedFiles) {\r\n checkCustomFields(false, true)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (iysMessageTypeList.length > 0) {\r\n for (let i = 0; i < iysMessageTypeList.length; i++) {\r\n if (iysMessageTypeList[i].isDefault) {\r\n setIysMessageType(iysMessageTypeList[i].iysMessageType)\r\n setIsRequiredToSetOtherParameters(iysMessageTypeList[i].isRequiredToSetOtherParameters)\r\n }\r\n }\r\n }\r\n }, [iysMessageTypeList])\r\n\r\n useEffect(() => {\r\n if (iysRecipientTypeList.length > 0) {\r\n for (let i = 0; i < iysRecipientTypeList.length; i++) {\r\n if (iysRecipientTypeList[i].isDefault) {\r\n setIysRecipientType(iysRecipientTypeList[i].iysRecipientType)\r\n }\r\n }\r\n }\r\n }, [iysRecipientTypeList])\r\n\r\n const handleSetSendType = (value) => {\r\n if (SendType !== value) {\r\n SetSendType(value)\r\n }\r\n }\r\n const handleIsRequiredToSetOtherParameters = (value) => {\r\n setIsRequiredToSetOtherParameters(value)\r\n }\r\n\r\n const keyFieldTypeFix = (SendType) => {\r\n switch (SendType) {\r\n case 3:\r\n return 2\r\n case 4:\r\n return 5\r\n case 5:\r\n return 16\r\n default:\r\n return 1\r\n }\r\n }\r\n\r\n const sendTypeByKeyFieldType = (keyFieldType) => {\r\n switch (keyFieldType) {\r\n case FileFields.ID_FIELDTYPE_MOBILEPHONE:\r\n return 3\r\n case FileFields.ID_FIELDTYPE_IDENTITYNUMBER:\r\n return 4\r\n case FileFields.ID_FIELDTYPE_TAXNUMBER:\r\n return 5\r\n default:\r\n return 1\r\n }\r\n }\r\n\r\n const dynamicFieldNamesFixer = () => {\r\n let m = message.split('')\r\n let letter = false\r\n let field = ''\r\n let fields = []\r\n for (let i = 0; i < m.length; i++) {\r\n if (m[i] === ']') {\r\n letter = false\r\n fields = [\r\n ...fields,\r\n field\r\n ]\r\n field = ''\r\n }\r\n if (letter) {\r\n field += m[i]\r\n }\r\n if (m[i] === '[') {\r\n letter = true\r\n }\r\n }\r\n let fixedArray = []\r\n let fixedArrayNotIncludes = []\r\n if (fields && fields.length > 0) {\r\n if (dynamicMessageFields) {\r\n fixedArray = fields.filter(value => dynamicMessageFields.map(f => { return f.fieldDisplayName }).includes(value))\r\n fixedArrayNotIncludes = fields.filter(value => !dynamicMessageFields.map(f => { return f.fieldDisplayName }).includes(value))\r\n }\r\n else {\r\n fixedArrayNotIncludes = fields\r\n }\r\n }\r\n setDynamicFieldNames(fixedArray)\r\n setDynamicFieldNamesNotIncludes(fixedArrayNotIncludes)\r\n if (fixedArray.length > 0) {\r\n setIsDynamic(true)\r\n } else {\r\n setIsDynamic(false)\r\n }\r\n }\r\n\r\n const advancedTimeDialogToggle = () => {\r\n setAdvancedTimeDialog(!advancedTimeDialog)\r\n }\r\n\r\n const [summary, setSummary] = useState({})\r\n const [etkDialog, setEtkDialog] = useState(false)\r\n\r\n const handleEtkDialogToggle = () => {\r\n setEtkDialog(!etkDialog)\r\n }\r\n\r\n useEffect(() => {\r\n sendingListBuilderClearFromService()\r\n setDefaultLists()\r\n }, [])\r\n\r\n const setDefaultLists = () => {\r\n setDefaultPbPersonList(PbPersonList)\r\n setDefaultPbGroupList(PbGroupList)\r\n setDefaultSavedFileIdList(SavedFileIdList)\r\n }\r\n\r\n const clearDefaultLists = () => {\r\n setDefaultPbPersonList([])\r\n setDefaultPbGroupList([])\r\n setDefaultSavedFileIdList([])\r\n }\r\n\r\n const sendingListBuilderClearFromService = () => {\r\n const data = { sessionId, contextSessionId, ServiceType: 1 }\r\n sendingListBuilderClear(data)\r\n .then(res => {\r\n if (checkResultResponse(res, dispatch, null, 'Gönderim listesi temizlenirken bir hata oluştu.')) {\r\n return null\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Gönderim listesi temizlenirken bir hata oluştu.')\r\n })\r\n }\r\n\r\n const getStepContent = (step) => {\r\n switch (step) {\r\n case 0:\r\n return \r\n case 1:\r\n return \r\n case 2:\r\n return \r\n case 3:\r\n return \r\n case 4:\r\n return \r\n default:\r\n return 'Bilinmeyen Adım';\r\n }\r\n }\r\n\r\n const periodicFirstScheduledDateTime = (q) => {\r\n const Definition = {\r\n occuranceType,\r\n occuranceValue,\r\n occuranceWeeklyOptionWeekdayValues,\r\n occuranceMonthlyOption,\r\n occuranceMonthlyOptionDayValue,\r\n occuranceMonthlyOptionWeekdayValue,\r\n startDate,\r\n endDate,\r\n isEndDateExist,\r\n sendHour,\r\n sendMinute,\r\n lastSendDate,\r\n checkBlackList,\r\n ...q\r\n }\r\n const data = {\r\n AuthData, Definition\r\n }\r\n getPeriodicFirstScheduledDateTime(data)\r\n .then(res => {\r\n if (checkResponse(res, dispatch, null, 'İlk periyodik gönderim zamanı hesaplanamadı.')) {\r\n setFirstScheduledDateTime(res.data.firstScheduledDateTime)\r\n setNextTop10ScheduledDateTime(res.data.nextTop10ScheduledDateTime)\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Girilen numaralar eklenemedi.')\r\n })\r\n }\r\n\r\n\r\n const callCopy = () => {\r\n const data = {\r\n sessionId, contextSessionId, ServiceType: 1, SourceTaskId\r\n }\r\n sendingListBuilderCopy(data)\r\n .then(res => {\r\n if (checkResponse(res, dispatch, null, 'Yeni gönderim için son gönderimin kopyası oluşturulamadı, yeniden gönderim yapmak için sayfaya tekrar erişim sağlayınız.')) {\r\n SetSourceTaskId(res.data.newTaskId)\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Girilen numaralar eklenemedi.')\r\n })\r\n }\r\n\r\n const sendSmsAction = (data) => {\r\n if (sendingTimeType === 3) {\r\n setSmsLoads(true)\r\n setPeriodicSms(data)\r\n .then(res => {\r\n setSmsLoads(false)\r\n if (checkResponse(res, dispatch, 'Periyodik mesaj gönderim isteğiniz kaydedilmiştir.', 'Periyodik mesaj gönderim isteğiniz başarısız olmuştur.')) {\r\n setActiveStep(0)\r\n setSendSMSData(JSON.stringify(data))\r\n callCopy()\r\n }\r\n })\r\n .catch(err => {\r\n setSmsLoads(false)\r\n alertResponseError(err, 'Periyodik mesaj gönderim isteğiniz başarısız olmuştur.')\r\n })\r\n } else {\r\n setSmsLoads(true)\r\n sendSms(data)\r\n .then(res => {\r\n setSmsLoads(false)\r\n if (checkResponse(res, dispatch, 'Mesaj gönderim isteğiniz kaydedilmiştir.', 'Mesaj gönderim isteğiniz başarısız olmuştur.')) {\r\n setActiveStep(0)\r\n setSendSMSData(JSON.stringify(data))\r\n callCopy()\r\n }\r\n })\r\n .catch(err => {\r\n setSummaryLoads(false)\r\n alertResponseError(err, 'Mesaj gönderim isteğiniz başarısız olmuştur.')\r\n })\r\n }\r\n }\r\n\r\n const opResolve = id => {\r\n switch (id) {\r\n case 0:\r\n return 'Turkcell'\r\n case 1:\r\n return 'Vodafone'\r\n case 2:\r\n return 'Turk Telekom'\r\n case 3:\r\n return 'Asist'\r\n case 4:\r\n return 'Superonline'\r\n case 5:\r\n return 'Turk Telekom Grup'\r\n default:\r\n return ''\r\n }\r\n }\r\n\r\n const opTypeResolve = id => {\r\n switch (id) {\r\n case 0:\r\n return 'Turkcell'\r\n case 1:\r\n return 'AveaTckn'\r\n case 2:\r\n return 'VFNET'\r\n case 3:\r\n return 'VFXML'\r\n case 4:\r\n return 'VFSMPP'\r\n case 5:\r\n return 'AssistTckn'\r\n case 6:\r\n return 'TurkTelekom'\r\n case 7:\r\n return 'Superonline'\r\n case 8:\r\n return 'TurkTelekomGrupSingle'\r\n case 9:\r\n return 'TurkTelekomGrupBulk'\r\n case 10:\r\n return 'VFFast'\r\n default:\r\n return null\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n let _isMounted = true\r\n if (SenderInfo === '') {\r\n setSlloading(true)\r\n getSmsSenderList(AuthData)\r\n .then(res => {\r\n if (_isMounted || 1 == 1) {\r\n setSlloading(false)\r\n if (checkResponse(res, dispatch, null, 'Başlık listesi getirilirken bir hata oluştu.')) {\r\n setSenderList(res.data.senderList)\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n setSlloading(false)\r\n alertResponseError(err, 'Başlık listesi getirilirken bir hata oluştu.')\r\n })\r\n }\r\n return () => _isMounted = false\r\n }, [SenderInfo])\r\n\r\n const sendSmsFunc = () => {\r\n let SmsRequest = {\r\n KeyFieldType,\r\n taskName,\r\n sendDate,\r\n sendingTimeType,\r\n sendingTimeOptions,\r\n ...SenderInfo,\r\n virtualNumber: SenderInfo.virtualMsisdn ? SenderInfo.virtualMsisdn : null,\r\n operatorName: opResolve(SenderInfo.operator),\r\n operatorType: opTypeResolve(SenderInfo.operatorType),\r\n canUseTurkishCharacters,\r\n message,\r\n sendingLimit,\r\n paymentLimit,\r\n EtkAgreementAnswer,\r\n isDynamic,\r\n dynamicFieldNames,\r\n campaignId: null,\r\n smsCharacterset,\r\n isUsingMedyaMobil: false,\r\n sendingServiceType: \"CodecBulk2Turkcell\",\r\n alsoSendToBlackList: false,\r\n useAlternativeMessage: false,\r\n isLimitedWithSuiteAmount: false,\r\n hasTimeRestrictionOnOperator: false,\r\n iysMessageType,\r\n iysRecipientType,\r\n iysBrandCode,\r\n iysIsAllowedToPassEmptyByUser,\r\n customFieldValues: customerCustomFieldsValues\r\n }\r\n if (sendingTimeType === 3) {\r\n SmsRequest = {\r\n ...SmsRequest,\r\n dateFieldOption,\r\n dateFieldNameOrId,\r\n dateFieldTransition: 0,\r\n recurrenceDefinition: {\r\n occuranceType,\r\n occuranceValue,\r\n occuranceWeeklyOptionWeekdayValues,\r\n occuranceMonthlyOption,\r\n occuranceMonthlyOptionDayValue,\r\n occuranceMonthlyOptionWeekdayValue,\r\n startDate,\r\n endDate,\r\n isEndDateExist,\r\n sendHour,\r\n sendMinute,\r\n lastSendDate,\r\n checkBlackList\r\n }\r\n }\r\n }\r\n const data = { AuthData, SmsRequest }\r\n let interupt = false\r\n if (JSON.stringify(data) === sendSMSData) {\r\n interupt = true\r\n }\r\n if (interupt) {\r\n Swal.fire({\r\n title: 'Bu gönderimi zaten gerçekleştirdiniz. Tekrar göndermek istediğinize emin misiniz?',\r\n showDenyButton: true,\r\n confirmButtonText: `Gönder`,\r\n denyButtonText: `Vazgeç`,\r\n }).then((result) => {\r\n /* Read more about isConfirmed, isDenied below */\r\n if (result.isConfirmed) {\r\n interupt = false\r\n sendSmsAction(data)\r\n } else if (result.isDenied) {\r\n Swal.fire('Gönderim yapılmadı.', '', 'info')\r\n }\r\n })\r\n } else {\r\n sendSmsAction(data)\r\n }\r\n\r\n }\r\n\r\n const handleSendSms = () => {\r\n if (activeStep === 4) {\r\n if (message === '') {\r\n Swal.fire({\r\n title: \"Lütfen mesaj içeriği giriniz.\",\r\n icon: \"info\"\r\n })\r\n setActiveStep(2)\r\n } else if (SenderInfo === '') {\r\n Swal.fire({\r\n title: \"Lütfen bir alfanumerik seçiniz.\",\r\n icon: \"info\"\r\n })\r\n setActiveStep(0)\r\n } else if (sendingTimeType === 0) {\r\n Swal.fire({\r\n title: \"Lütfen gönderim zaman ayarlaması yapınız.\",\r\n icon: \"info\"\r\n })\r\n setActiveStep(3)\r\n } else if (summary.availableSendCount === 0) {\r\n Swal.fire({\r\n title: \"Lütfen gönderim listenize en az bir numara ya da dosya ekleyiniz.\",\r\n icon: \"info\"\r\n })\r\n setActiveStep(1)\r\n }\r\n else {\r\n setEtkDialog(true)\r\n }\r\n }\r\n }\r\n\r\n const getSummary = () => {\r\n setSummaryLoads(true)\r\n const SmsRequest = {\r\n taskName,\r\n sendDate,\r\n sendingTimeType,\r\n sendingTimeOptions,\r\n ...SenderInfo,\r\n virtualNumber: SenderInfo.virtualMsisdn ? SenderInfo.virtualMsisdn : null,\r\n operatorName: opResolve(SenderInfo.operator),\r\n operatorType: opTypeResolve(SenderInfo.operatorType),\r\n canUseTurkishCharacters,\r\n message,\r\n sendingLimit,\r\n paymentLimit,\r\n EtkAgreementAnswer,\r\n isDynamic,\r\n dynamicFieldNames,\r\n campaignId: null,\r\n KeyFieldType,\r\n smsCharacterset,\r\n isUsingMedyaMobil: false,\r\n sendingServiceType: \"CodecBulk2Turkcell\",\r\n alsoSendToBlackList: false,\r\n useAlternativeMessage: false,\r\n isLimitedWithSuiteAmount: false,\r\n hasTimeRestrictionOnOperator: false,\r\n iysMessageType,\r\n iysRecipientType,\r\n iysBrandCode,\r\n iysIsAllowedToPassEmptyByUser,\r\n customFieldValues: customerCustomFieldsValues\r\n }\r\n const data = { AuthData, SmsRequest }\r\n updateSendSmsInfoAndGetSummary(data)\r\n .then(res => {\r\n setSummaryLoads(false)\r\n if (checkResponse(res, dispatch, null, 'Gönderim bilgileri güncellenirken ve özet bilgileri getirilirken bir hata oluştu.')) {\r\n setSummary(res.data)\r\n SetSourceTaskId(res.data.taskId)\r\n // TODO: Aktifbank onaylamadan yeni arayüzü kullanabilmeleri için aktif edildi\r\n checkCustomFields(true, false)\r\n }\r\n })\r\n .catch(err => {\r\n setSummaryLoads(false)\r\n alertResponseError(err, 'Girilen numaralar eklenemedi.')\r\n })\r\n }\r\n\r\n const checkCustomFields = (isShownBeforeSending = true, isShownBetweenFileImportingAndNewSending = false) => {\r\n if (user.customerCustomFields != null && user.customerCustomFields.length > 0) {\r\n var requiredFieldCount = (isShownBetweenFileImportingAndNewSending ?\r\n user.customerCustomFields.filter(function (f) { return !f.isOptional && f.showBetweenFileImportingAndNewSending; }).length\r\n : user.customerCustomFields.filter(function (f) { return !f.isOptional && f.showBeforeSending; }).length)\r\n if (requiredFieldCount > 0) // Eğer hepsi isteğe bağlı alan ise gönderim öncesi bu ekranın çıkmasına gerek olmayacağı düşünüldü. Ana gönderim ekranında istendiğinde tıklanıp açılan bir pencere yapılabilir. İstenmediğinde de hepsi isteğe bağlı alanlar olduğu için zorunlu girilmesi gereken alanlarmış gibi her seferinde gösterilmez.\r\n {\r\n showCustomFieldsPopup(isShownBeforeSending, isShownBetweenFileImportingAndNewSending);\r\n }\r\n }\r\n }\r\n\r\n const showCustomFieldsPopup = (isShownBeforeSending = true, isShownBetweenFileImportingAndNewSending = false) => {\r\n setCustomFieldPopupIsShownBeforeSending(isShownBeforeSending)\r\n setCustomFieldPopupIsShownBetweenFileImportingAndNewSending(isShownBetweenFileImportingAndNewSending)\r\n setOpenCustomerCustomParametersInputDialog(true)\r\n }\r\n\r\n const handleCustomerCustomParametersInputDialogOk = (customerCustomFieldPopupValues, customFieldPopupIsTest) => {\r\n setCustomerCustomFieldsValues(customerCustomFieldPopupValues)\r\n if (customFieldPopupIsShownBeforeSending) {\r\n }\r\n\r\n if (customFieldPopupIsTest) {\r\n const testPrefix = \"(Test) \";\r\n if (message.indexOf(testPrefix) != 0) {\r\n setMessage(testPrefix + message);\r\n }\r\n }\r\n handleCustomerCustomParametersInputDialogToggle()\r\n }\r\n\r\n const handleCustomerCustomParametersInputDialogToggle = () => {\r\n setOpenCustomerCustomParametersInputDialog(!openCustomerCustomParametersInputDialog)\r\n }\r\n\r\n useEffect(() => {\r\n if (activeStep === 3) {\r\n dynamicFieldNamesFixer()\r\n }\r\n if (activeStep === 4) {\r\n if (message === '') {\r\n Swal.fire({\r\n title: \"Lütfen mesaj içeriği giriniz.\",\r\n icon: \"info\"\r\n })\r\n setActiveStep(2)\r\n } else if (SenderInfo === '') {\r\n Swal.fire({\r\n title: \"Lütfen bir alfanumerik seçiniz.\",\r\n icon: \"info\"\r\n })\r\n setActiveStep(0)\r\n } else if (sendingTimeType === 0) {\r\n Swal.fire({\r\n title: \"Lütfen gönderim zaman ayarlaması yapınız.\",\r\n icon: \"info\"\r\n })\r\n setActiveStep(3)\r\n } else {\r\n getSummary()\r\n }\r\n }\r\n }, [activeStep])\r\n\r\n const handleNext = () => {\r\n if (activeStep === 1) {\r\n if (grandTotal === 0) {\r\n Swal.fire({\r\n title: \"Lütfen gönderim listenize en az bir numara ya da dosya ekleyiniz.\",\r\n icon: \"info\"\r\n })\r\n return\r\n }\r\n }\r\n if (activeStep === 0) {\r\n if (iysIsAllowedToPassEmptyByUser) {\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n } else {\r\n if (isRequiredToSetOtherParameters && (iysBrandCode === '' || iysRecipientType === '')) {\r\n if (0) {\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n } else {\r\n Swal.fire({\r\n title: \"Lütfen İYS alıcı tipini ve İYS marka kodunuzu giriniz.\",\r\n icon: \"info\"\r\n })\r\n }\r\n } else if (isRequiredToSetOtherParameters && !/^\\d+$/.test(iysBrandCode)) {\r\n Swal.fire({\r\n title: \"Lütfen İYS marka kodunuzu numerik değer olarak giriniz.\",\r\n icon: \"info\"\r\n })\r\n }\r\n else {\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n }\r\n }\r\n } else {\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n }\r\n };\r\n\r\n const handleBack = () => {\r\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\r\n };\r\n\r\n const handleStep = (step) => () => {\r\n setActiveStep(step);\r\n };\r\n\r\n const handleReset = () => {\r\n setActiveStep(0);\r\n };\r\n\r\n return (\r\n \r\n
\r\n {steps.map((label, index) => (\r\n \r\n \r\n {label}\r\n \r\n {/* {label} */}\r\n \r\n ))}\r\n \r\n
\r\n {activeStep === steps.length ? (\r\n
\r\n \r\n Sms Gönderimi Başarılı!\r\n \r\n \r\n Temizle\r\n \r\n
\r\n ) : (\r\n
\r\n {getStepContent(activeStep)}\r\n
\r\n \r\n GERİ\r\n \r\n {activeStep !== steps.length - 1 &&\r\n \r\n İLERİ\r\n \r\n }\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n
{\r\n dispatch(closeTwofa())\r\n sendSmsFunc()\r\n }}\r\n canceltwofa={() => dispatch(canceltwofasms())}\r\n userData={props.userReducer.user}\r\n />\r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer, twofaReducer, smsReducer } = state\r\n return { userReducer, twofaReducer, smsReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps)(SmsGonderim)","const styles = {\r\n definitionCard : {\r\n //height : '60vh',\r\n },\r\n definitionCardBody : { \r\n display : \"flex\",\r\n justifyContent : \"center\"\r\n }\r\n}\r\n\r\nexport default styles","import { domain } from './domain'\r\nimport axios from 'axios'\r\n\r\nexport const getEmailCreditInfo = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/GetEmailCreditInfo', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getEmailFromList = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/GetEmailFromList', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const sendingListClear = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/SendingListClear', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const sendingListBuilderCrud = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/SendingListBuilderCrud', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const sendTestEmail = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/SendTestEmail', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getSavedAssetListOfUser = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/GetSavedAssetListOfUser', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const uploadAssetToUser = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/octet-stream'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/UploadAssetToUser', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const uploadAttachment = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/octet-stream'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/UploadAttachment', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getSendingListSummary = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/GetSendingListSummary', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const updateSendEmailInfoAndGetSummary = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/UpdateSendEmailInfoAndGetSummary', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const sendEmail = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/SendEmail', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const saveEmailTemplate = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/SaveEmailTemplate', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getEmailTemplateCategories = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/GetEmailTemplateCategories', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getEmailTemplates = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/GetEmailTemplates', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const deleteEmailTemplate = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/DeleteEmailTemplate', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getEmailReportSummary = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/GetEmailReportSummary', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getExcelFile = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/GetExcelFile', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getEmailReportDetail = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/GetEmailReportDetail', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getEmailReportDetailByActivities = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/GetEmailReportDetailByActivities', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getEmailReportAsFile = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/GetEmailReportAsFile', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const htmlContentPreview = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/HtmlContentPreview', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const sendingListBuilderCopy = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/SendingListBuilderCopy', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const deleteScheduledEmail = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/EmailService/DeleteScheduledEmail', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}","import React, { useState, useEffect } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Select, MenuItem } from \"@material-ui/core\"\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport styles from './smsStyles.js'\r\nimport { getEmailFromList } from '_services/email';\r\n\r\nconst useStyles = makeStyles(styles)\r\n\r\nconst Step0 = props => {\r\n const [fromList, setFromList] = useState([])\r\n const [loading, setLoading] = useState(false)\r\n const { data, taskName, setTaskName, fromAddress, setFromAddress, fromAddressDisplayName, setFromAddressDisplayName, fromName, setFromName,\r\n setFromAddress_sendingChannelSupportsInfo_hasSendWhenSupport, setFromAddress_sendingChannelSupportsInfo_hasTextAlternativeSupport, setFromAddress_sendingChannelSupportsInfo_hasTimeToLiveSupport } = props\r\n const classes = useStyles()\r\n\r\n useEffect(() => {\r\n if (data.sessionId && data.contextSessionId) {\r\n setLoading(true)\r\n getEmailFromList(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (res.data && res.data.result && res.data.result.resultCode === 0) {\r\n if (res.data.fromList) {\r\n setFromList(res.data.fromList)\r\n if(res.data.fromList.length === 1){\r\n setFromAddress(res.data.fromList[0].fromAddress)\r\n setFromAddressDisplayName(res.data.fromList[0].displayName)\r\n if (res.data.fromList[0].sendingChannelSupportsInfo != null) {\r\n setFromAddress_sendingChannelSupportsInfo_hasSendWhenSupport(res.data.fromList[0].sendingChannelSupportsInfo.hasSendWhenSupport)\r\n setFromAddress_sendingChannelSupportsInfo_hasTextAlternativeSupport(res.data.fromList[0].sendingChannelSupportsInfo.hasTextAlternativeSupport)\r\n setFromAddress_sendingChannelSupportsInfo_hasTimeToLiveSupport(res.data.fromList[0].sendingChannelSupportsInfo.hasTimeToLiveSupport)\r\n }\r\n }\r\n }\r\n else {\r\n setFromList(null)\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n })\r\n }\r\n }, [])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Tanımı\r\n \r\n \r\n \r\n setTaskName(e.target.value),\r\n }}\r\n />\r\n \r\n \r\n setFromName(e.target.value),\r\n }}\r\n />\r\n \r\n \r\n Gönderen Adresi : \r\n \r\n \r\n {loading\r\n ? \r\n\r\n : fromList && fromList.length === 1\r\n ? {fromList[0].displayName} \r\n : \r\n {\r\n setFromAddress(e.target.value);\r\n if (fromList != null) {\r\n var fromObject = fromList.find(obj => { return obj.fromAddress === e.target.value; });\r\n if (fromObject != null) {\r\n setFromAddressDisplayName(fromObject.displayName);\r\n if (fromObject.sendingChannelSupportsInfo != null) {\r\n setFromAddress_sendingChannelSupportsInfo_hasSendWhenSupport(fromObject.sendingChannelSupportsInfo.hasSendWhenSupport);\r\n setFromAddress_sendingChannelSupportsInfo_hasTextAlternativeSupport(fromObject.sendingChannelSupportsInfo.hasTextAlternativeSupport);\r\n setFromAddress_sendingChannelSupportsInfo_hasTimeToLiveSupport(fromObject.sendingChannelSupportsInfo.hasTimeToLiveSupport);\r\n }\r\n }\r\n }\r\n }}\r\n displayEmpty\r\n fullWidth\r\n inputProps={{ 'aria-label': 'Kullanılacak gönderen adresi tanımı' }}\r\n >\r\n Gönderen Seçiniz \r\n {fromList && fromList.map(item => (\r\n {item.displayName} \r\n ))\r\n }\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Step0","import React from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\r\n}));\r\n\r\nconst AddNumberDialog = props => {\r\n\r\n const { open, handleToggle, NumberList, SetNumberList, handleSubmit, loading } = props\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n E-posta Adresi Girerek Ekle \r\n \r\n {loading\r\n ? <>>\r\n :\r\n <>\r\n \r\n \r\n SetNumberList(e.target.value)}\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n\r\n \r\n >\r\n }\r\n \r\n \r\n {loading\r\n ? \r\n \r\n
\r\n :\r\n <>\r\n \r\n VAZGEÇ\r\n \r\n handleSubmit({})} simple size='lg' block color=\"success\">\r\n Ekle\r\n \r\n >\r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default AddNumberDialog","import React, { useState, useEffect } from 'react'\r\nimport { getGroupList } from '../../_services/phoneBook.js'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Pagination from '@material-ui/lab/Pagination';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Swal from \"sweetalert2\"\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n nameContainer : {\r\n marginBottom : 10\r\n },\r\n rowCont : {\r\n minHeight : 300,\r\n marginBottom : 20\r\n }\r\n}));\r\n\r\nconst GroupRecordsDialog = props => {\r\n const [ alert, setAlert ] = useState('')\r\n const [ filtered, setFiltered ] = useState(false)\r\n const { open, toggle, sourcePBGroupList, sourcePBGroupListLength, firstQuery, PbGroupList, loading } = props\r\n const classes = useStyles();\r\n \r\n const [ selection, setSelection ] = useState([])\r\n const [ PageSize, SetPageSize ] = useState(20)\r\n const [ PageNumber, SetPageNumber ] = useState(1)\r\n const [ search, setSearch ] = useState('')\r\n\r\n\r\n useEffect(() => {\r\n if(PbGroupList.length > 0){\r\n handleAddSelected(PbGroupList)\r\n }\r\n }, [PbGroupList])\r\n\r\n const handleCheck = (id) => {\r\n const index = selection.indexOf(id)\r\n let newSelection = []\r\n if(index > -1){\r\n newSelection = [\r\n ...selection.slice(0,index),\r\n ...selection.slice(index +1)\r\n ]\r\n }else{\r\n newSelection = [ ...selection, id]\r\n }\r\n setSelection(newSelection)\r\n }\r\n\r\n const GroupRows = list => {\r\n return( list.map( item => {\r\n const index = selection.indexOf(item.groupId)\r\n const checked = index > -1 ? true : false\r\n return(\r\n \r\n \r\n \r\n \r\n handleCheck(item.groupId)} name=\"gilad\" color=\"primary\" />\r\n \r\n \r\n \r\n \r\n \r\n {item.groupName} \r\n \r\n \r\n {(item.totalPersonCount || '').toLocaleString(\"tr-TR\")} e-posta adresi\r\n \r\n {(item.description && item.description !== '') &&\r\n \r\n {item.description}\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }))\r\n }\r\n\r\n const handlePageSizeChange = (e) => {\r\n firstQuery({},{ PageSize : e.target.value, PageNumber : 1},{})\r\n SetPageSize(e.target.value)\r\n SetPageNumber(1)\r\n } \r\n \r\n const handlePageChange = (e, value) => {\r\n firstQuery({},{ PageNumber : value, PageSize},{})\r\n SetPageNumber(value)\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n setFiltered(true)\r\n SetPageNumber(1)\r\n SetPageSize(20)\r\n firstQuery({ ReturnDestinationListOption : 1},{SearchExpression : search},{})\r\n }\r\n\r\n const handleAddSelected = (selection) => {\r\n firstQuery(\r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 2,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbGroupIdList : selection\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n props.handleClose()\r\n setSelection([])\r\n }\r\n\r\n const handleAddAll = () => {\r\n firstQuery(\r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 6,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbGroupIdList : null\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n toggle()\r\n }\r\n\r\n const handleAddFiltered = () => {\r\n firstQuery(\r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 4,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbGroupIdList : null\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n SearchExpression : search,\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"GroupName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n toggle()\r\n setFiltered(false)\r\n setSearch('')\r\n }\r\n\r\n return(\r\n \r\n Grup Kayıtlarından Ekle \r\n \r\n { alert !== '' &&\r\n \r\n \r\n
\r\n }\r\n \r\n \r\n {\r\n setFiltered(false)\r\n setSearch(e.target.value)\r\n },\r\n onKeyDown : e => { if(e.keyCode === 13){handleSearchSubmit()} },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n firstQuery({},{SearchExpression : ''},{})\r\n }}>Tümü \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n \r\n {loading\r\n ? \r\n \r\n
\r\n :\r\n GroupRows(sourcePBGroupList)\r\n }\r\n \r\n \r\n \r\n \r\n Sayfada 5 Kayıt Göster \r\n Sayfada 10 Kayıt Göster \r\n Sayfada 20 Kayıt Göster \r\n Sayfada 30 Kayıt Göster \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {selection.length > 0 &&\r\n handleAddSelected(selection)} simple size='lg' block color=\"success\">\r\n SEÇİLİ {selection.length} Kaydı Ekle\r\n \r\n }\r\n { search.length > 0 && filtered &&\r\n \r\n FİLTRELENEN {sourcePBGroupList.length} Kaydı Ekle\r\n \r\n }\r\n \r\n Tüm Kayıtları Ekle\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default GroupRecordsDialog","import React, { useState, useEffect } from 'react'\r\nimport { getGroupList } from '../../_services/phoneBook.js'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Pagination from '@material-ui/lab/Pagination';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Swal from \"sweetalert2\"\r\nimport { numberFormat } from 'formats/number.js';\r\nimport { FileFields } from 'variables/fileFields.js';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n nameContainer: {\r\n marginBottom: 10\r\n },\r\n rowCont: {\r\n minHeight: 300,\r\n marginBottom: 20\r\n }\r\n}));\r\n\r\nconst PersonRecordsDialog = props => {\r\n const [alert, setAlert] = useState('')\r\n const [filtered, setFiltered] = useState(false)\r\n const { open, toggle, sourcePBPersonList, sourcePBPersonListLength, firstQuery, PbPersonList, KeyFieldType, loading } = props\r\n const classes = useStyles();\r\n\r\n const [selection, setSelection] = useState([])\r\n const [PageSize, SetPageSize] = useState(20)\r\n const [PageNumber, SetPageNumber] = useState(1)\r\n const [search, setSearch] = useState('')\r\n\r\n useEffect(() => {\r\n if (PbPersonList.length > 0) {\r\n handleAddSelected(PbPersonList)\r\n }\r\n }, [PbPersonList])\r\n\r\n const handleCheck = (id) => {\r\n const index = selection.indexOf(id)\r\n let newSelection = []\r\n if (index > -1) {\r\n newSelection = [\r\n ...selection.slice(0, index),\r\n ...selection.slice(index + 1)\r\n ]\r\n } else {\r\n newSelection = [...selection, id]\r\n }\r\n setSelection(newSelection)\r\n }\r\n\r\n const PersonRows = list => {\r\n return (list.map(item => {\r\n const index = selection.indexOf(item.recordId)\r\n const checked = index > -1 ? true : false\r\n return (\r\n \r\n \r\n \r\n \r\n handleCheck(item.recordId)} name=\"gilad\" color=\"primary\" />\r\n \r\n \r\n \r\n \r\n \r\n {item.eMail} \r\n \r\n \r\n {(item.name ? item.name : '') + ' ' + (item.surname ? item.surname : \"\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }))\r\n }\r\n\r\n const handlePageSizeChange = (e) => {\r\n firstQuery({}, { PageSize: e.target.value, PageNumber: 1 }, {})\r\n SetPageSize(e.target.value)\r\n SetPageNumber(1)\r\n }\r\n\r\n const handlePageChange = (e, value) => {\r\n firstQuery({}, { PageNumber: value, PageSize }, {})\r\n SetPageNumber(value)\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n setFiltered(true)\r\n SetPageNumber(1)\r\n SetPageSize(20)\r\n firstQuery({ ReturnDestinationListOption: 1 }, { SearchExpression: search }, {})\r\n }\r\n\r\n const handleAddSelected = (selection) => {\r\n firstQuery(\r\n {\r\n NumberListOperation: 0,\r\n PbPersonListOperation: 2,\r\n PbGroupListOperation: 0,\r\n PbCustomFilterPersonListOperation: 0,\r\n SavedFilesListOperation: 0,\r\n PbPersonList: selection\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields: [\r\n {\r\n FieldName: \"Name\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Surname\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"MobilePhone\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount: true,\r\n },\r\n {\r\n PageNumber: 1, PageSize: 20,\r\n SortFields: [\r\n {\r\n FieldName: \"Name\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Surname\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"MobilePhone\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount: true,\r\n }\r\n )\r\n props.handleClose()\r\n setSelection([])\r\n }\r\n\r\n const handleAddAll = () => {\r\n firstQuery(\r\n {\r\n NumberListOperation: 0,\r\n PbPersonListOperation: 6,\r\n PbGroupListOperation: 0,\r\n PbCustomFilterPersonListOperation: 0,\r\n SavedFilesListOperation: 0,\r\n PbPersonList: null\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields: [\r\n {\r\n FieldName: \"Name\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Surname\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"MobilePhone\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount: true,\r\n },\r\n {\r\n PageNumber: 1, PageSize: 20,\r\n SortFields: [\r\n {\r\n FieldName: \"Name\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Surname\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"MobilePhone\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount: true,\r\n }\r\n )\r\n toggle()\r\n }\r\n\r\n const handleAddFiltered = () => {\r\n firstQuery(\r\n {\r\n NumberListOperation: 0,\r\n PbPersonListOperation: 4,\r\n PbGroupListOperation: 0,\r\n PbCustomFilterPersonListOperation: 0,\r\n SavedFilesListOperation: 0,\r\n PbPersonList: null\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields: [\r\n {\r\n FieldName: \"GroupName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Description\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n SearchExpression: search,\r\n CalculateTotalRecordCount: true,\r\n },\r\n {\r\n PageNumber: 1, PageSize: 20,\r\n SortFields: [\r\n {\r\n FieldName: \"GroupName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Description\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount: true,\r\n }\r\n )\r\n toggle()\r\n setFiltered(false)\r\n setSearch('')\r\n }\r\n\r\n return (\r\n \r\n Kişi Kayıtlarından Ekle \r\n \r\n {alert !== '' &&\r\n \r\n \r\n
\r\n }\r\n \r\n \r\n setSearch(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { handleSearchSubmit() } },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n firstQuery({}, { SearchExpression: '' }, {})\r\n }}>Tümü \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n \r\n {loading\r\n ? \r\n \r\n
\r\n :\r\n PersonRows(sourcePBPersonList)\r\n }\r\n \r\n \r\n \r\n \r\n Sayfada 5 Kayıt Göster \r\n Sayfada 10 Kayıt Göster \r\n Sayfada 20 Kayıt Göster \r\n Sayfada 30 Kayıt Göster \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {selection.length > 0 &&\r\n handleAddSelected(selection)} simple size='lg' block color=\"success\">\r\n SEÇİLİ {selection.length} KİŞİYİ Ekle\r\n \r\n }\r\n {search.length > 0 && filtered &&\r\n \r\n FİLTRELENEN {sourcePBPersonList.length} KİŞİYİ Ekle\r\n \r\n }\r\n \r\n Tüm KİŞİLERİ Ekle\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default PersonRecordsDialog","import React, { useState, useEffect } from 'react'\r\nimport { getGroupList } from '../../_services/phoneBook.js'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Pagination from '@material-ui/lab/Pagination';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Swal from \"sweetalert2\"\r\nimport { FileFields } from 'variables/fileFields.js';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n nameContainer: {\r\n marginBottom: 10\r\n },\r\n rowCont: {\r\n minHeight: 300,\r\n marginBottom: 20\r\n }\r\n}));\r\n\r\nconst SavedFilesDialog = props => {\r\n const [alert, setAlert] = useState('')\r\n const [filtered, setFiltered] = useState(false)\r\n const { open, toggle, sourceSavedFileList, sourceSavedFileListLength, firstQuery, SavedFileIdList, KeyFieldType, loading } = props\r\n const classes = useStyles();\r\n\r\n const [selection, setSelection] = useState([])\r\n const [PageSize, SetPageSize] = useState(20)\r\n const [PageNumber, SetPageNumber] = useState(1)\r\n const [search, setSearch] = useState('')\r\n const [saveLoading, setSaveLoading] = useState('')\r\n\r\n useEffect(() => {\r\n if (SavedFileIdList.length > 0) {\r\n handleAddSelected(SavedFileIdList)\r\n }\r\n }, [SavedFileIdList])\r\n\r\n const handleCheck = (id) => {\r\n const index = selection.indexOf(id)\r\n let newSelection = []\r\n if (index > -1) {\r\n newSelection = [\r\n ...selection.slice(0, index),\r\n ...selection.slice(index + 1)\r\n ]\r\n } else {\r\n newSelection = [...selection, id]\r\n }\r\n setSelection(newSelection)\r\n }\r\n\r\n const countRecord = (kt, item) => {\r\n switch (kt) {\r\n case 2:\r\n return item.recordCountMobileNumber\r\n case 5:\r\n return item.recordCountIdentityNumber\r\n case 16:\r\n return item.recordCountTaxNumber\r\n default:\r\n return item.totalPersonCount\r\n }\r\n }\r\n\r\n const GroupRows = list => {\r\n return (list.map(item => {\r\n const index = selection.indexOf(item.groupId)\r\n const checked = index > -1 ? true : false\r\n return (\r\n \r\n \r\n \r\n \r\n handleCheck(item.groupId)} name=\"gilad\" color=\"primary\" />\r\n \r\n \r\n \r\n \r\n \r\n {item.groupName} \r\n \r\n \r\n {countRecord(KeyFieldType, item)} e-posta adresi\r\n \r\n \r\n {item.description}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }))\r\n }\r\n\r\n const FileRows = list => {\r\n return (list.map(item => {\r\n const index = selection.indexOf(item.fileId)\r\n const checked = index > -1 ? true : false\r\n return (\r\n \r\n \r\n \r\n \r\n handleCheck(item.fileId)} name=\"gilad\" color=\"primary\" />\r\n \r\n \r\n \r\n \r\n \r\n {item.fileName}
\r\n {item.defaultKeyField && item.defaultKeyField.fieldName}
\r\n \r\n \r\n {item.recordCountEmailAddress.toLocaleString(\"tr-TR\")} e-posta adresi\r\n \r\n \r\n {item.description}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }))\r\n }\r\n\r\n const handlePageSizeChange = (e) => {\r\n firstQuery({}, { PageSize: e.target.value, PageNumber: 1 }, {})\r\n SetPageSize(e.target.value)\r\n SetPageNumber(1)\r\n }\r\n\r\n const handlePageChange = (e, value) => {\r\n firstQuery({}, { PageNumber: value, PageSize }, {})\r\n SetPageNumber(value)\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n setFiltered(true)\r\n SetPageNumber(1)\r\n SetPageSize(20)\r\n firstQuery({ ReturnDestinationListOption: 1 }, { SearchExpression: search }, {})\r\n }\r\n\r\n const handleAddSelected = (selection) => {\r\n firstQuery(\r\n {\r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 2,\r\n ServiceType: 7,\r\n KeyFieldType,\r\n SavedFileIdList: selection\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields: [\r\n {\r\n FieldName: \"FileName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Description\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount: true,\r\n },\r\n {\r\n PageNumber: 1, PageSize: 20,\r\n SortFields: [\r\n {\r\n FieldName: \"FileName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Description\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount: true,\r\n }\r\n )\r\n props.handleClose()\r\n setSelection([])\r\n }\r\n\r\n const handleAddAll = () => {\r\n firstQuery(\r\n {\r\n NumberListOperation: 0,\r\n PbPersonListOperation: 0,\r\n PbGroupListOperation: 0,\r\n PbCustomFilterPersonListOperation: 0,\r\n SavedFilesListOperation: 6,\r\n SavedFileIdList: null\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields: [\r\n {\r\n FieldName: \"FileName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Description\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount: true,\r\n },\r\n {\r\n PageNumber: 1, PageSize: 20,\r\n SortFields: [\r\n {\r\n FieldName: \"FileName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Description\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount: true,\r\n }\r\n )\r\n toggle()\r\n }\r\n\r\n const handleAddFiltered = () => {\r\n firstQuery(\r\n {\r\n NumberListOperation: 0,\r\n PbPersonListOperation: 0,\r\n PbGroupListOperation: 0,\r\n PbCustomFilterPersonListOperation: 0,\r\n SavedFilesListOperation: 4,\r\n SavedFileIdList: null\r\n },\r\n {\r\n PageNumber, PageSize,\r\n SortFields: [\r\n {\r\n FieldName: \"GroupName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Description\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n SearchExpression: search,\r\n CalculateTotalRecordCount: true,\r\n },\r\n {\r\n PageNumber: 1, PageSize: 20,\r\n SortFields: [\r\n {\r\n FieldName: \"GroupName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Description\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount: true,\r\n }\r\n )\r\n toggle()\r\n setFiltered(false)\r\n setSearch('')\r\n }\r\n\r\n return (\r\n \r\n Kayıtlı Dosyadan Ekle \r\n \r\n {alert !== '' &&\r\n \r\n \r\n
\r\n }\r\n \r\n \r\n setSearch(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { handleSearchSubmit() } },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n firstQuery({}, { SearchExpression: '' }, {})\r\n }}>Tümü \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n \r\n {loading || saveLoading\r\n ? \r\n \r\n
\r\n :\r\n FileRows(sourceSavedFileList)\r\n }\r\n \r\n \r\n \r\n \r\n Sayfada 5 Kayıt Göster \r\n Sayfada 10 Kayıt Göster \r\n Sayfada 20 Kayıt Göster \r\n Sayfada 30 Kayıt Göster \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {selection.length > 0 &&\r\n handleAddSelected(selection)} simple size='lg' block color=\"success\">\r\n SEÇİLİ {selection.length} Dosyayı Ekle\r\n \r\n }\r\n {search.length > 0 && filtered &&\r\n \r\n FİLTRELENEN {sourceSavedFileList.length} Dosyayı Ekle\r\n \r\n }\r\n \r\n Tüm Dosyaları Ekle\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SavedFilesDialog","import React, { useState, useEffect } from 'react'\r\nimport { getSmsMessageTemplates, deleteSMSMessageTemplates } from '../../_services/sms'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Pagination from '@material-ui/lab/Pagination';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Swal from \"sweetalert2\"\r\nimport { FileFields } from 'variables/fileFields';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n nameContainer : {\r\n marginBottom : 10\r\n },\r\n rowCont : {\r\n minHeight : 300,\r\n marginBottom : 20\r\n }\r\n}));\r\n\r\nconst PBGroup = props => {\r\n const { addedSavedFileList, addedSavedFileListLength, firstQuery, loading, keyFieldType } = props\r\n const classes = useStyles();\r\n \r\n const [ PageSize, SetPageSize ] = useState(20)\r\n const [ PageNumber, SetPageNumber ] = useState(1)\r\n\r\n const [ search, setSearch ] = useState('')\r\n\r\n const SavedFileRows = list => {\r\n return( list.map( item => {\r\n return(\r\n \r\n \r\n \r\n {item.fileName} \r\n \r\n \r\n {(item.recordCountEmailAddress).toLocaleString(\"tr-TR\")} e-posta adresi\r\n \r\n \r\n \r\n handleDelete(item.fileId)} >\r\n \r\n \r\n \r\n \r\n {(item.description && item.description !== '') &&\r\n \r\n {item.description}\r\n \r\n }\r\n \r\n \r\n \r\n )\r\n }))\r\n }\r\n\r\n const handleDeleteAll = () => {\r\n firstQuery( \r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 7,\r\n SavedFileIdList : null,\r\n ReturnSourceListOption : 1,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"FileName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"FileName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n }\r\n\r\n const handleDelete = id => {\r\n firstQuery( \r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 3,\r\n SavedFileIdList : [id],\r\n ReturnSourceListOption : 1,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"FileName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"FileName\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Description\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"InsertDate\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n }\r\n\r\n const handlePageSizeChange = (e) => {\r\n firstQuery(\r\n {\r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 1,\r\n SavedFileIdList : null,\r\n ReturnSourceListOption : 1,\r\n },\r\n {},\r\n { PageSize : e.target.value, PageNumber : 1}\r\n )\r\n SetPageSize(e.target.value)\r\n SetPageNumber(1)\r\n } \r\n \r\n const handlePageChange = (e, value) => {\r\n firstQuery(\r\n {\r\n NumberListOperation : 0,\r\n PbPersonListOperation : 0,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 1,\r\n SavedFileIdList : null,\r\n ReturnSourceListOption : 1,\r\n },\r\n {},\r\n { \r\n PageSize, PageNumber : value\r\n }\r\n )\r\n SetPageNumber(value)\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n SetPageNumber(1)\r\n SetPageSize(20)\r\n firstQuery({ SavedFilesListOperation : 1, ReturnSourceListOption : 1},{}, {SearchExpression : search},)\r\n }\r\n\r\n return(\r\n \r\n
\r\n \r\n setSearch(e.target.value),\r\n onKeyDown : e => { if(e.keyCode === 13){handleSearchSubmit()} },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n firstQuery({SavedFilesListOperation : 1}, {}, {SearchExpression : ''})\r\n }}>Tümü \r\n \r\n \r\n \r\n \r\n \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n { loading \r\n ?
\r\n \r\n
\r\n : <>\r\n
\r\n {SavedFileRows(addedSavedFileList)}\r\n \r\n
\r\n \r\n \r\n Sayfada 5 Kayıt Göster \r\n Sayfada 10 Kayıt Göster \r\n Sayfada 20 Kayıt Göster \r\n Sayfada 30 Kayıt Göster \r\n Sayfada 40 Kayıt Göster \r\n Sayfada 50 Kayıt Göster \r\n \r\n \r\n \r\n \r\n \r\n \r\n >\r\n }\r\n
\r\n )\r\n}\r\n\r\nexport default PBGroup","import React, { useState, useEffect } from 'react'\r\nimport { getSmsMessageTemplates, deleteSMSMessageTemplates } from '../../_services/sms'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Pagination from '@material-ui/lab/Pagination';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Swal from \"sweetalert2\"\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n nameContainer: {\r\n marginBottom: 10\r\n },\r\n rowCont: {\r\n minHeight: 300,\r\n marginBottom: 20\r\n }\r\n}));\r\n\r\nconst PBGroup = props => {\r\n const { addedPBGroupList, addedPBGroupListLength, firstQuery, loading, keyFieldType } = props\r\n const classes = useStyles();\r\n\r\n const [PageSize, SetPageSize] = useState(20)\r\n const [PageNumber, SetPageNumber] = useState(1)\r\n\r\n const [search, setSearch] = useState('')\r\n\r\n const GroupRows = list => {\r\n return (list.map(item => {\r\n return (\r\n \r\n \r\n \r\n {item.groupName} \r\n \r\n \r\n {(item.totalPersonCount || '').toLocaleString(\"tr-TR\")} e-posta adresi\r\n \r\n \r\n \r\n handleDelete(item.groupId)} >\r\n \r\n \r\n \r\n \r\n \r\n {item.description}\r\n \r\n \r\n \r\n \r\n )\r\n }))\r\n }\r\n\r\n const handleDeleteAll = () => {\r\n firstQuery(\r\n {\r\n NumberListOperation: 0,\r\n PbPersonListOperation: 0,\r\n PbGroupListOperation: 7,\r\n PbCustomFilterPersonListOperation: 0,\r\n SavedFilesListOperation: 0,\r\n PbGroupIdList: null,\r\n ReturnSourceListOption: 1,\r\n },\r\n {\r\n PageNumber: 1, PageSize: 20,\r\n SortFields: [\r\n {\r\n FieldName: \"GroupName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Description\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount: true,\r\n },\r\n {\r\n PageNumber: 1, PageSize: 20,\r\n SortFields: [\r\n {\r\n FieldName: \"GroupName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Description\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount: true,\r\n }\r\n )\r\n }\r\n\r\n const handleDelete = id => {\r\n firstQuery(\r\n {\r\n NumberListOperation: 0,\r\n PbPersonListOperation: 0,\r\n PbGroupListOperation: 3,\r\n PbCustomFilterPersonListOperation: 0,\r\n SavedFilesListOperation: 0,\r\n PbGroupIdList: [id],\r\n ReturnSourceListOption: 1,\r\n },\r\n {\r\n PageNumber: 1, PageSize: 20,\r\n SortFields: [\r\n {\r\n FieldName: \"GroupName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Description\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount: true,\r\n },\r\n {\r\n PageNumber: 1, PageSize: 20,\r\n SortFields: [\r\n {\r\n FieldName: \"GroupName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Description\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount: true,\r\n }\r\n )\r\n }\r\n\r\n const handlePageSizeChange = (e) => {\r\n firstQuery(\r\n {\r\n NumberListOperation: 0,\r\n PbPersonListOperation: 0,\r\n PbGroupListOperation: 1,\r\n PbCustomFilterPersonListOperation: 0,\r\n SavedFilesListOperation: 0,\r\n PbGroupIdList: null,\r\n ReturnSourceListOption: 1,\r\n },\r\n {},\r\n { PageSize: e.target.value, PageNumber: 1 }\r\n )\r\n SetPageSize(e.target.value)\r\n SetPageNumber(1)\r\n }\r\n\r\n const handlePageChange = (e, value) => {\r\n firstQuery(\r\n {\r\n NumberListOperation: 0,\r\n PbPersonListOperation: 0,\r\n PbGroupListOperation: 1,\r\n PbCustomFilterPersonListOperation: 0,\r\n SavedFilesListOperation: 0,\r\n PbGroupIdList: null,\r\n ReturnSourceListOption: 1,\r\n },\r\n {},\r\n {\r\n PageSize, PageNumber: value\r\n }\r\n )\r\n SetPageNumber(value)\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n SetPageNumber(1)\r\n SetPageSize(20)\r\n firstQuery(\r\n {\r\n NumberListOperation: 0,\r\n PbPersonListOperation: 0,\r\n PbGroupListOperation: 1,\r\n PbCustomFilterPersonListOperation: 0,\r\n SavedFilesListOperation: 0,\r\n PbGroupIdList: null,\r\n ReturnSourceListOption: 1,\r\n },\r\n {\r\n PageNumber: 1, PageSize: 20,\r\n SortFields: [\r\n {\r\n FieldName: \"GroupName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Description\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount: true,\r\n },\r\n {\r\n PageNumber: 1, PageSize: 20,\r\n SortFields: [\r\n {\r\n FieldName: \"GroupName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Description\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Ascending\"\r\n },\r\n ],\r\n SearchExpression: search,\r\n CalculateTotalRecordCount: true,\r\n })\r\n }\r\n\r\n return (\r\n \r\n
\r\n \r\n setSearch(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { handleSearchSubmit() } },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n firstQuery({ PbGroupListOperation: 1 }, {}, { SearchExpression: '' })\r\n }}>Tümü \r\n \r\n \r\n \r\n \r\n \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n {loading\r\n ?
\r\n \r\n
\r\n : <>\r\n
\r\n {GroupRows(addedPBGroupList)}\r\n \r\n
\r\n \r\n \r\n Sayfada 5 Kayıt Göster \r\n Sayfada 10 Kayıt Göster \r\n Sayfada 20 Kayıt Göster \r\n Sayfada 30 Kayıt Göster \r\n Sayfada 40 Kayıt Göster \r\n Sayfada 50 Kayıt Göster \r\n \r\n \r\n \r\n \r\n \r\n \r\n >\r\n }\r\n
\r\n )\r\n}\r\n\r\nexport default PBGroup","import React, { useState, useEffect } from 'react'\r\nimport { getSmsMessageTemplates, deleteSMSMessageTemplates } from '../../_services/sms'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Pagination from '@material-ui/lab/Pagination';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Swal from \"sweetalert2\"\r\nimport { FileFields } from 'variables/fileFields';\r\nimport { numberFormat } from 'formats/number';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n nameContainer : {\r\n marginBottom : 10\r\n },\r\n rowCont : {\r\n minHeight : 300,\r\n marginBottom : 20\r\n }\r\n}));\r\n\r\nconst PBPeople = props => {\r\n const { addedPBPersonList, addedPBPersonListLength, firstQuery, loading, keyFieldType } = props\r\n const classes = useStyles();\r\n \r\n const [ PageSize, SetPageSize ] = useState(20)\r\n const [ PageNumber, SetPageNumber ] = useState(1)\r\n\r\n const [ search, setSearch ] = useState('')\r\n\r\n const PeopleRows = list => {\r\n return( list.map( item => {\r\n return(\r\n \r\n \r\n \r\n {item.eMail} \r\n \r\n \r\n {(item.name ? item.name : '') + ' ' + (item.surname ? item.surname : '')}\r\n \r\n \r\n \r\n handleDelete(item.recordId)} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }))\r\n }\r\n\r\n const handleDeleteAll = () => {\r\n firstQuery( \r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 7,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbPersonList : null,\r\n ReturnSourceListOption : 1,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"Name\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Surname\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"MobilePhone\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"Name\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Surname\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"MobilePhone\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n }\r\n\r\n const handleDelete = id => {\r\n firstQuery( \r\n { \r\n NumberListOperation : 0,\r\n PbPersonListOperation : 3,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbPersonList : [id],\r\n ReturnSourceListOption : 1,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"Name\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Surname\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"MobilePhone\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n },\r\n {\r\n PageNumber : 1, PageSize : 20,\r\n SortFields : [\r\n {\r\n FieldName : \"Name\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"Surname\",\r\n Direction : \"Ascending\"\r\n },\r\n {\r\n FieldName : \"MobilePhone\",\r\n Direction : \"Ascending\"\r\n },\r\n ],\r\n CalculateTotalRecordCount : true,\r\n }\r\n )\r\n }\r\n\r\n const handlePageSizeChange = (e) => {\r\n firstQuery(\r\n {\r\n NumberListOperation : 0,\r\n PbPersonListOperation : 1,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbPersonList : null,\r\n ReturnSourceListOption : 1,\r\n },\r\n {},\r\n { PageSize : e.target.value, PageNumber : 1}\r\n )\r\n SetPageSize(e.target.value)\r\n SetPageNumber(1)\r\n } \r\n \r\n const handlePageChange = (e, value) => {\r\n firstQuery(\r\n {\r\n NumberListOperation : 0,\r\n PbPersonListOperation : 1,\r\n PbGroupListOperation : 0,\r\n PbCustomFilterPersonListOperation : 0,\r\n SavedFilesListOperation : 0,\r\n PbPersonList : null,\r\n ReturnSourceListOption : 1,\r\n },\r\n {},\r\n { \r\n PageSize, PageNumber : value\r\n }\r\n )\r\n SetPageNumber(value)\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n SetPageNumber(1)\r\n SetPageSize(20)\r\n firstQuery({ ReturnSourceListOption : 1},{}, {SearchExpression : search},)\r\n }\r\n\r\n return(\r\n \r\n
\r\n \r\n setSearch(e.target.value),\r\n onKeyDown : e => { if(e.keyCode === 13){handleSearchSubmit()} },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n firstQuery({PbPersonListOperation : 1}, {}, {SearchExpression : ''})\r\n }}>Tümü \r\n \r\n \r\n \r\n \r\n \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n { loading \r\n ?
\r\n \r\n
\r\n : <>\r\n
\r\n {PeopleRows(addedPBPersonList)}\r\n \r\n
\r\n \r\n \r\n Sayfada 5 Kayıt Göster \r\n Sayfada 10 Kayıt Göster \r\n Sayfada 20 Kayıt Göster \r\n Sayfada 30 Kayıt Göster \r\n Sayfada 40 Kayıt Göster \r\n Sayfada 50 Kayıt Göster \r\n \r\n \r\n \r\n \r\n \r\n \r\n >\r\n }\r\n
\r\n )\r\n}\r\n\r\nexport default PBPeople","import React, { useState, useEffect } from 'react'\r\nimport { getSmsMessageTemplates, deleteSMSMessageTemplates } from '../../_services/sms'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Pagination from '@material-ui/lab/Pagination';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Swal from \"sweetalert2\"\r\nimport { FileFields } from 'variables/fileFields.js';\r\nimport { numberFormat } from 'formats/number';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n nameContainer : {\r\n marginBottom : 10\r\n },\r\n rowCont : {\r\n minHeight : 300,\r\n marginBottom : 20\r\n }\r\n}));\r\n\r\nconst AddedNumbers = props => {\r\n const { addedNumberList, addedNumberListLength, handleSubmit, loading } = props\r\n const classes = useStyles();\r\n \r\n const [ PageSize, SetPageSize ] = useState(20)\r\n const [ PageNumber, SetPageNumber ] = useState(1)\r\n\r\n const [ search, setSearch ] = useState('')\r\n\r\n const showNumberRecord = (kt, item) => {\r\n switch(kt){\r\n case FileFields.ID_FIELDTYPE_IDENTITYNUMBER:\r\n case FileFields.ID_FIELDTYPE_TAXNUMBER:\r\n return item\r\n case FileFields.ID_FIELDTYPE_MOBILEPHONE:\r\n default:\r\n return numberFormat(item || '')\r\n }\r\n }\r\n\r\n const NumberRows = list => {\r\n return( list.map( item => {\r\n return(\r\n \r\n \r\n \r\n {item} \r\n \r\n \r\n \r\n handleDelete(item)} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }))\r\n }\r\n\r\n const handleDeleteAll = () => {\r\n handleSubmit({NumberListOperation : 7, ReturnSourceListOption : 1}, {})\r\n }\r\n\r\n const handleDelete = id => {\r\n handleSubmit({NumberListOperation : 3, NumberList : id, ReturnSourceListOption : 1 },{ PageSize, PageNumber : 1})\r\n }\r\n\r\n const handlePageSizeChange = (e) => {\r\n handleSubmit({NumberListOperation : 1, ReturnSourceListOption : 1},{ PageSize : e.target.value, PageNumber : 1})\r\n SetPageSize(e.target.value)\r\n SetPageNumber(1)\r\n } \r\n \r\n const handlePageChange = (e, value) => {\r\n handleSubmit({NumberListOperation : 1, ReturnSourceListOption : 1},{ PageSize, PageNumber : value})\r\n SetPageNumber(value)\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n handleSubmit({NumberListOperation : 1, ReturnSourceListOption : 1}, { SearchExpression : search})\r\n }\r\n\r\n return(\r\n \r\n
\r\n \r\n setSearch(e.target.value),\r\n onKeyDown : e => { if(e.keyCode === 13){handleSearchSubmit()} },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n handleSubmit({NumberListOperation : 1}, {SearchExpression : ''})\r\n }}>Tümü \r\n \r\n \r\n \r\n \r\n \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n { loading \r\n ?
\r\n \r\n
\r\n : <>\r\n
\r\n {NumberRows(addedNumberList)}\r\n \r\n
\r\n \r\n \r\n Sayfada 5 Kayıt Göster \r\n Sayfada 10 Kayıt Göster \r\n Sayfada 20 Kayıt Göster \r\n Sayfada 30 Kayıt Göster \r\n Sayfada 40 Kayıt Göster \r\n Sayfada 50 Kayıt Göster \r\n \r\n \r\n \r\n \r\n \r\n \r\n >\r\n }\r\n
\r\n )\r\n}\r\n\r\nexport default AddedNumbers","import React, { useState, useEffect } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { sendingListBuilderCrud } from '../../_services/email.js'\r\n\r\nimport { sendingListBuilderGetSummary } from '../../_services/sms'\r\n\r\nimport { Typography, ButtonGroup, Button, LinearProgress, Box } from \"@material-ui/core\"\r\nimport Menu from '@material-ui/core/Menu';\r\nimport { timeout } from '../../_actions/user'\r\n\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Accordion from '@material-ui/core/Accordion';\r\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\r\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent\"\r\n\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport AddEmailDialog from \"components/Email/AddEmailDialog\"\r\nimport GroupRecordsDialog from \"components/Email/GroupRecordsDialog.js\"\r\nimport PersonRecordsDialog from \"components/Email/PersonRecordsDialog.js\"\r\nimport SavedFilesDialog from \"components/Email/SavedFilesDialog.js\"\r\nimport SavedFiles from \"components/Email/SavedFiles.js\"\r\nimport PBGroup from \"components/Email/PBGroup.js\"\r\nimport PBPeople from \"components/Email/PBPeople.js\"\r\nimport AddedEmails from \"components/Email/AddedEmails\"\r\nimport { setSendingListLoading, clearSendingListLoading, setSendingSummaryLoading, clearSendingSummaryLoading } from '_actions/smsActions.js';\r\nimport { connect } from 'react-redux';\r\nimport { checkResponse } from '_helpers/notification.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\nimport { checkResultObjectResponse } from '_helpers/notification.js';\r\nimport { ServiceType } from 'variables/serviceType.js';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: '100%',\r\n },\r\n heading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n flexBasis: '33.33%',\r\n flexShrink: 0,\r\n },\r\n secondaryHeading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n color: theme.palette.text.secondary,\r\n },\r\n}));\r\n\r\nconst Step1 = props => {\r\n const classes = useStyles();\r\n const [loading, setLoading] = useState(false)\r\n const [addedNumberList, setAddedNumberList] = useState([])\r\n const [addedNumberListLength, setAddedNumberListLength] = useState(0)\r\n\r\n const [sourcePBGroupList, setSourcePBGroupList] = useState([])\r\n const [sourcePBGroupListLength, setSourcePBGroupListLength] = useState(0)\r\n\r\n const [sourcePBPersonList, setSourcePBPersonList] = useState([])\r\n const [sourcePBPersonListLength, setSourcePBPersonListLength] = useState(0)\r\n\r\n const [sourceSavedFileList, setSourceSavedFileList] = useState([])\r\n const [sourceSavedFileListLength, setSourceSavedFileListLength] = useState(0)\r\n\r\n const [addedPBGroupList, setAddedPBGroupList] = useState([])\r\n const [addedPBGroupListLength, setAddedPBGroupListLength] = useState(0)\r\n\r\n const [addedPBPersonList, setAddedPBPersonList] = useState([])\r\n const [addedPBPersonListLength, setAddedPBPersonListLength] = useState(0)\r\n\r\n const [addedSavedFileList, setAddedSavedFileList] = useState([])\r\n const [addedSavedFileListLength, setAddedSavedFileListLength] = useState(0)\r\n\r\n const [serviceType] = useState(ServiceType.ID_SERVICETYPE_EMAIL)\r\n const [ClearBefore] = useState(false)\r\n const [NumberListOperation] = useState(1)\r\n const [PbPersonListOperation] = useState(1)\r\n const [PbGroupListOperation] = useState(1)\r\n const [SavedFilesListOperation] = useState(1)\r\n const [NumberList, SetNumberList] = useState(\"\")\r\n const [PbPersonList, SetPbPersonList] = useState([])\r\n const [PbGroupIdList, SetPbGroupIdList] = useState([])\r\n const [PbSavedFileIdList, SetPbSavedFileIdList] = useState([])\r\n const [SourceListRequest] = useState({\r\n PageSize: 20,\r\n PageNumber: 1,\r\n SearchExpression: null\r\n })\r\n const [DestinationListRequest] = useState({\r\n PageSize: 20,\r\n PageNumber: 1,\r\n SearchExpression: null\r\n })\r\n const { dispatch, KeyFieldType, getSendingSummary, grandTotal, setGrandTotal, SavedFileIdList, setSummaryLoads, setUsableDynamicMessageFields } = props\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n\r\n const [addNumberDialog, setAddNumberDialog] = useState(false)\r\n const [savedFilesDialog, setSavedFilesDialog] = useState(false)\r\n const [personRecordsDialog, setPersonRecordsDialog] = useState(false)\r\n const [groupRecordsDialog, setGroupRecordsDialog] = useState(false)\r\n\r\n const [expanded, setExpanded] = React.useState(false);\r\n\r\n const handleChange = (panel) => (event, isExpanded) => {\r\n setExpanded(isExpanded ? panel : false);\r\n };\r\n\r\n const addNumberDialogToggle = () => {\r\n setAddNumberDialog(!addNumberDialog)\r\n }\r\n const savedFilesDialogToggle = () => {\r\n setSavedFilesDialog(!savedFilesDialog)\r\n }\r\n const personRecordsDialogToggle = () => {\r\n handleClose()\r\n setPersonRecordsDialog(!personRecordsDialog)\r\n }\r\n const groupRecordsDialogToggle = () => {\r\n handleClose()\r\n setGroupRecordsDialog(!groupRecordsDialog)\r\n }\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const getTotalCount = () => {\r\n const data = { ...props.data, ServiceType: serviceType }\r\n dispatch(setSendingSummaryLoading())\r\n setSummaryLoads(true)\r\n sendingListBuilderGetSummary(data)\r\n .then(res => {\r\n setSummaryLoads(false)\r\n dispatch(clearSendingSummaryLoading())\r\n if (checkResponse(res, dispatch, null, 'Gönderim listesi özeti hesaplanırken bir hata oluştu.')) {\r\n setGrandTotal(res.data.grandTotal)\r\n setUsableDynamicMessageFields(res.data.usableDynamicMessageFields)\r\n }\r\n })\r\n .catch(err => {\r\n setSummaryLoads(false)\r\n dispatch(clearSendingSummaryLoading())\r\n alertResponseError(err, 'Gönderim listesi özeti hesaplanırken bir hata oluştu.')\r\n })\r\n };\r\n\r\n useEffect(() => {\r\n firstQuery({}, {}, {})\r\n }, [])\r\n\r\n const firstQuery = (q, sq, dq) => {\r\n dispatch(setSendingListLoading())\r\n const data = {\r\n ...props.data,\r\n ServiceType : serviceType,\r\n ClearBefore: false,\r\n KeyFieldType : 6,\r\n NumberListOperation: 1,\r\n PbPersonListOperation: 1,\r\n PbGroupListOperation: 1,\r\n PbCustomFilterPersonListOperation: 1,\r\n SavedFilesListOperation: 1,\r\n NumberList: null,\r\n PbPersonList: null,\r\n PbGroupIdList: null,\r\n PbCustomFilterQueryIdListForPerson: null,\r\n PbCustomFilterQueryForPerson: null,\r\n SavedFileIdList,\r\n SavedFileSelectedKeyFieldIdList: null,\r\n ExcludeLust: null,\r\n SourceListRequest: {\r\n PageSize: 20,\r\n PageNumber: 1,\r\n SelectFields: null,\r\n SortFields: {\r\n FieldName: \"Value\",\r\n Direction: \"Ascending\"\r\n },\r\n Includes: null,\r\n SearchExpression: null,\r\n SearchCriterias: null,\r\n SearchQuery: null,\r\n IntersectList: null,\r\n ExceptList: null,\r\n CalculateTotalRecordCount: false,\r\n ...sq\r\n },\r\n DestinationListRequest: {\r\n PageSize: 20,\r\n PageNumber: 1,\r\n SelectFields: null,\r\n SortFields: {\r\n FieldName: \"Value\",\r\n Direction: \"Ascending\"\r\n },\r\n Includes: null,\r\n SearchExpression: null,\r\n SearchCriterias: null,\r\n SearchQuery: null,\r\n IntersectList: null,\r\n ExceptList: null,\r\n CalculateTotalRecordCount: true,\r\n ...dq\r\n },\r\n ReturnSourceListOption: 3,\r\n ReturnDestinationListOption: 3,\r\n ...q\r\n }\r\n sendingListBuilderCrud(data)\r\n .then(res => {\r\n dispatch(clearSendingListLoading())\r\n if (checkResponse(res, dispatch, null, 'Gönderim listesi işleminde bir hata oluştu.')) {\r\n if (res.data.addedNumberList && res.data.addedNumberList.result && res.data.addedNumberList.result.resultCode === 0) {\r\n setAddedNumberList(res.data.addedNumberList.list)\r\n SetNumberList('')\r\n setAddedNumberListLength(res.data.addedNumberList.totalRecordCount)\r\n }\r\n if (res.data.addedPBGroupList && res.data.addedPBGroupList.result && res.data.addedPBGroupList.result.resultCode === 0) {\r\n setAddedPBGroupList(res.data.addedPBGroupList.list)\r\n SetPbGroupIdList([])\r\n setAddedPBGroupListLength(res.data.addedPBGroupList.totalRecordCount)\r\n }\r\n if (res.data.addedPBPersonList && res.data.addedPBPersonList.result && res.data.addedPBPersonList.result.resultCode === 0) {\r\n setAddedPBPersonList(res.data.addedPBPersonList.list)\r\n SetPbPersonList([])\r\n setAddedPBPersonListLength(res.data.addedPBPersonList.totalRecordCount)\r\n }\r\n if (res.data.addedSavedFileList && res.data.addedSavedFileList.result && res.data.addedSavedFileList.result.resultCode === 0) {\r\n setAddedSavedFileList(res.data.addedSavedFileList.list)\r\n SetPbSavedFileIdList([])\r\n setAddedSavedFileListLength(res.data.addedSavedFileList.totalRecordCount)\r\n }\r\n if (res.data.sourcePBGroupList && res.data.sourcePBGroupList.result && res.data.sourcePBGroupList.result.resultCode === 0) {\r\n setSourcePBGroupList(res.data.sourcePBGroupList.list)\r\n setSourcePBGroupListLength(res.data.sourcePBGroupList.totalRecordCount)\r\n }\r\n if (res.data.sourcePBPersonList && res.data.sourcePBPersonList.result && res.data.sourcePBPersonList.result.resultCode === 0) {\r\n setSourcePBPersonList(res.data.sourcePBPersonList.list)\r\n setSourcePBPersonListLength(res.data.sourcePBPersonList.totalRecordCount)\r\n }\r\n if (res.data.sourceSavedFileList && res.data.sourceSavedFileList.result && res.data.sourceSavedFileList.result.resultCode === 0) {\r\n setSourceSavedFileList(res.data.sourceSavedFileList.list)\r\n setSourceSavedFileListLength(res.data.sourceSavedFileList.totalRecordCount)\r\n }\r\n }\r\n })\r\n .then(() => {\r\n getTotalCount()\r\n }\r\n )\r\n .catch(err => {\r\n dispatch(clearSendingListLoading())\r\n alertResponseError(err, 'Gönderim listesi işleminde bir hata oluştu.')\r\n })\r\n }\r\n\r\n const handleNumberListSubmit = (query, desq) => {\r\n dispatch(setSendingListLoading())\r\n const data = {\r\n ...props.data,\r\n ServiceType : serviceType,\r\n ClearBefore: false,\r\n NumberListOperation: 6,\r\n PbPersonListOperation: 0,\r\n PbGroupListOperation: 0,\r\n PbCustomFilterPersonListOperation: 0,\r\n SavedFileListOperation: 0,\r\n NumberList,\r\n KeyFieldType : 6,\r\n PbPersonList: [],\r\n PbGroupIdList: [],\r\n PbSavedFileIdList: [],\r\n SourceListRequest: null,\r\n DestinationListRequest: {\r\n PageSize: 20,\r\n PageNumber: 1,\r\n SelectFields: null,\r\n SortFields: {\r\n FieldName: \"Value\",\r\n Direction: \"Ascending\"\r\n },\r\n Includes: null,\r\n SearchExpression: null,\r\n SearchCriterias: null,\r\n SearchQuery: null,\r\n IntersectList: null,\r\n ExceptList: null,\r\n CalculateTotalRecordCount: true,\r\n ...desq\r\n },\r\n ReturnSourceListOption: 3,\r\n ReturnDestinationListOption: 3,\r\n ...query\r\n }\r\n sendingListBuilderCrud(data)\r\n .then(res => {\r\n dispatch(clearSendingListLoading())\r\n if (checkResponse(res, dispatch, null, 'Girilen numaralar eklenemedi.')) {\r\n if (res.data.addedNumberList \r\n && res.data.addedNumberList.result \r\n && checkResultObjectResponse(res.data.addedNumberList.result, dispatch, null, 'Girilen numaralar eklenemedi.')) {\r\n setAddedNumberList(res.data.addedNumberList.list)\r\n SetNumberList('')\r\n setAddedNumberListLength(res.data.addedNumberList.totalRecordCount)\r\n setAddNumberDialog(false)\r\n }\r\n }\r\n })\r\n .then(() => {\r\n getTotalCount()\r\n getSendingSummary()\r\n }\r\n )\r\n .catch(err => {\r\n dispatch(clearSendingListLoading())\r\n alertResponseError(err, 'Girilen numaralar eklenemedi.')\r\n })\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Listesi\r\n \r\n \r\n \r\n \r\n E-POSTA ADRESİ GİREREK EKLE \r\n TELEFON REHBERİMDEN EKLE \r\n KAYITLI DOSYALARDAN EKLE \r\n \r\n \r\n \r\n {\r\n props.smsReducer.sendingSummaryLoading\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim listesi toplam adeti hesaplanıyor. Lütfen bekleyiniz... \r\n \r\n \r\n \r\n : grandTotal > 0 &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n }\r\n aria-controls=\"panel4bh-content\"\r\n id=\"panel4bh-header\"\r\n >\r\n Eklenen E-posta Adresleri \r\n {props.smsReducer.sendingListLoading\r\n ? \r\n : \r\n {(addedNumberListLength || '0').toLocaleString(\"tr-TR\")} e-posta adresi eklendi\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n aria-controls=\"panel2bh-content\"\r\n id=\"panel2bh-header\"\r\n >\r\n Rehberden Eklenen Gruplar \r\n {props.smsReducer.sendingListLoading\r\n ? \r\n : \r\n {(addedPBGroupListLength || '0').toLocaleString(\"tr-TR\")} grup eklendi\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n aria-controls=\"panel3bh-content\"\r\n id=\"panel3bh-header\"\r\n >\r\n Rehberden Eklenen Kişiler \r\n {props.smsReducer.sendingListLoading\r\n ? \r\n : \r\n {(addedPBPersonListLength || '0').toLocaleString(\"tr-TR\")} kişi eklendi\r\n \r\n }\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n aria-controls=\"panel1bh-content\"\r\n id=\"panel1bh-header\"\r\n >\r\n Eklenen Kayıtlı Dosyalar \r\n {props.smsReducer.sendingListLoading\r\n ? \r\n : \r\n {(addedSavedFileListLength || '0').toLocaleString(\"tr-TR\")} dosya eklendi\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 setGroupRecordsDialog(false)}\r\n sourcePBGroupList={sourcePBGroupList}\r\n sourcePBGroupListLength={sourcePBGroupListLength}\r\n firstQuery={firstQuery}\r\n PbGroupList={props.PbGroupList || []}\r\n loading={props.smsReducer.sendingListLoading}\r\n />\r\n setPersonRecordsDialog(false)}\r\n sourcePBPersonList={sourcePBPersonList}\r\n sourcePBPersonListLength={sourcePBPersonListLength}\r\n firstQuery={firstQuery}\r\n PbPersonList={props.PbPersonList || []}\r\n loading={props.smsReducer.sendingListLoading}\r\n KeyFieldType={6}\r\n />\r\n setSavedFilesDialog(false)}\r\n sourceSavedFileList={sourceSavedFileList}\r\n sourceSavedFileListLength={sourceSavedFileListLength}\r\n firstQuery={firstQuery}\r\n SavedFileIdList={props.SavedFileIdList || []}\r\n loading={props.smsReducer.sendingListLoading}\r\n KeyFieldType={6}\r\n />\r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { smsReducer } = state\r\n return { smsReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps)(Step1)","import React from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\r\n}));\r\n\r\nconst TestInputDialog = props => {\r\n\r\n const { open, toggle, ToList, SetToList, handleSubmit, loading } = props\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n Alıcı(lar) \r\n \r\n Birden fazla alıcı varsa lütfen alıcıları her satırda bir ve en fazla 5 e-posta adresi olacak şekilde ekleyiniz.
\r\n <>\r\n \r\n \r\n SetToList(e.target.value)}\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n\r\n \r\n >\r\n \r\n \r\n {loading\r\n ? \r\n \r\n
\r\n :\r\n <>\r\n \r\n VAZGEÇ\r\n \r\n handleSubmit({})} simple size='lg' block color=\"success\">\r\n GÖNDER\r\n \r\n >\r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default TestInputDialog","import React, { useEffect, useState } from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { getSavedAssetListOfUser } from '_services/email';\r\nimport Swal from 'sweetalert2';\r\nimport SnackbarContent from 'components/Snackbar/SnackbarContent';\r\nimport { Checkbox, FormControlLabel } from '@material-ui/core';\r\nimport moment from 'moment';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\r\n}));\r\n\r\nconst ImageDialog = props => {\r\n const [assets, setAssets] = useState([])\r\n const [url, setUrl] = useState(\"\")\r\n const { open, toggle, AuthData, handleSelectedImage, handleAssetUpload, getImages, taskDate } = props\r\n const classes = useStyles();\r\n const [loading, setLoading] = useState(false)\r\n const [selected, setSelected] = useState({})\r\n const [jusNew, setJustNew] = useState(false)\r\n\r\n useEffect(() => {\r\n if (open) {\r\n setLoading(true)\r\n getSavedAssetListOfUser(AuthData)\r\n .then(res => {\r\n setLoading(false)\r\n if (res.data && res.data.result && res.data.result.resultCode === 0) {\r\n setAssets(res.data.assets)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n })\r\n }\r\n\r\n }, [open])\r\n\r\n useEffect(() => {\r\n if (open) {\r\n setLoading(true)\r\n getSavedAssetListOfUser(AuthData)\r\n .then(res => {\r\n setLoading(false)\r\n if (res.data && res.data.result && res.data.result.resultCode === 0) {\r\n setAssets(res.data.assets)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n })\r\n }\r\n\r\n }, [getImages])\r\n\r\n let filteredAssets = assets\r\n\r\n if (jusNew) {\r\n filteredAssets = filteredAssets.filter(a => moment(a.creationTime).toDate() > taskDate)\r\n }\r\n\r\n return (\r\n \r\n Resim Ekleme \r\n \r\n {loading\r\n ? \r\n \r\n
\r\n : \r\n \r\n Lütfen eklemek istediğiniz görseli seçerek \"Seçili Resmi Ekle\" butonuna basınız. \r\n \r\n \r\n setJustNew(!jusNew)}\r\n name=\"checkedB\"\r\n color=\"primary\"\r\n />\r\n }\r\n label=\"Sadece son eklenenleri göster\"\r\n />\r\n \r\n {filteredAssets.map(asset => {\r\n return (\r\n {\r\n setSelected(asset)\r\n navigator.clipboard.writeText(asset.fileUrl)\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 {loading\r\n ? \r\n \r\n
\r\n :\r\n <>\r\n \r\n KAPAT\r\n \r\n\r\n \r\n Bilgisayardan Yükle\r\n \r\n \r\n {selected.fileUrl &&\r\n handleSelectedImage(selected.fileUrl)} simple size='lg' block color=\"success\">\r\n Seçili Resmi Ekle\r\n \r\n }\r\n >\r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default ImageDialog","import React from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Box from '@material-ui/core/Box';\r\nimport { CircularProgress } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n fields : {\r\n cursor : \"pointer\",\r\n color : \"#fff\",\r\n background : \"#3c54a5\",\r\n borderRadius : 5,\r\n width : '100%',\r\n display : \"flex\",\r\n justifyContent: \"center\",\r\n alignItems : \"center\",\r\n height : 40,\r\n margin : 10,\r\n\r\n }\r\n}));\r\n\r\nconst UsableDynamicEmailFieldsDialog = props => {\r\n\r\n const { open, toggle, usableDynamicMessageFields, handleDynamicField } = props\r\n const loading = props.sendingSummaryLoading\r\n const classes = useStyles();\r\n\r\n const buttons = data => {\r\n return( data.map( d => {\r\n return(\r\n \r\n {\r\n handleDynamicField(d)\r\n }}>{d.fieldDisplayName} \r\n \r\n )\r\n }))\r\n }\r\n\r\n return(\r\n \r\n Kullanılabilir Dinamik Alanlar \r\n \r\n \r\n { loading \r\n ? \r\n : buttons(usableDynamicMessageFields)\r\n }\r\n \r\n \r\n \r\n \r\n Kapat\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default UsableDynamicEmailFieldsDialog","import React from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\r\n}));\r\n\r\nconst AddTempDialog = props => {\r\n\r\n const { open, toggle, CategoryName, SetCategoryName, handleSaveTemp, loading } = props\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n E-posta Şablonları \r\n \r\n Lütfen bir e-posta mesaj şablonu adı giriniz.
\r\n {loading\r\n ? <>>\r\n :\r\n <>\r\n \r\n \r\n SetCategoryName(e.target.value)}\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n\r\n \r\n >\r\n }\r\n \r\n \r\n {loading\r\n ? \r\n \r\n
\r\n :\r\n <>\r\n \r\n VAZGEÇ\r\n \r\n \r\n GÖNDER\r\n \r\n >\r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default AddTempDialog","import React, { useEffect, useState } from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Swal from 'sweetalert2';\r\nimport SnackbarContent from 'components/Snackbar/SnackbarContent';\r\nimport { getEmailTemplateCategories } from '_services/email';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport { getEmailTemplates, deleteEmailTemplate } from '_services/email';\r\nimport { checkResultResponse } from '_helpers/notification';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\r\n}));\r\n\r\nconst TempDialog = props => {\r\n const [categories, setCategories] = useState([])\r\n const [loading, setLoading] = useState(false)\r\n const [temps, setTemps] = useState([])\r\n const [selected, setSelected] = useState({})\r\n const [tempLoading, setTempLoading] = useState(false)\r\n const { open, toggle, AuthData, handleSelectTemp } = props\r\n\r\n\r\n const [value, setValue] = useState(\"1\")\r\n const classes = useStyles();\r\n\r\n useEffect(() => {\r\n if (open) {\r\n setLoading(true)\r\n getEmailTemplateCategories(AuthData)\r\n .then(res => {\r\n setLoading(false)\r\n if (res.data && res.data.result && res.data.result.resultCode === 0) {\r\n setCategories(res.data.emailTemplateCategoryList)\r\n }\r\n })\r\n }\r\n\r\n }, [open])\r\n\r\n const handleValue = e => {\r\n const { value } = e.target\r\n setValue(value)\r\n if (value !== \"1\") {\r\n const data = { ...AuthData, CategoryName: value }\r\n setTempLoading(true)\r\n getEmailTemplates(data)\r\n .then(res => {\r\n setTempLoading(false)\r\n if (res.data && res.data.result && res.data.result.resultCode === 0) {\r\n setTemps(res.data.emailTemplateList)\r\n }\r\n })\r\n .catch(err => {\r\n setTempLoading(false)\r\n })\r\n }\r\n }\r\n\r\n const handleDelete = () => {\r\n const data = { ...AuthData, TemplateName: selected.templateName }\r\n deleteEmailTemplate(data)\r\n .then(res => {\r\n if (checkResultResponse(res, null, null, 'E-posta şablonu silinemedi')) {\r\n Swal.fire({\r\n icon: \"success\",\r\n title: \"E-posta şablonu silindi\"\r\n })\r\n const e = { target: { value: value } }\r\n handleValue(e)\r\n setLoading(true)\r\n setSelected({})\r\n getEmailTemplateCategories(AuthData)\r\n .then(res => {\r\n setLoading(false)\r\n if (res.data && res.data.result && res.data.result.resultCode === 0) {\r\n setCategories(res.data.emailTemplateCategoryList)\r\n }\r\n })\r\n }\r\n })\r\n }\r\n\r\n return (\r\n \r\n E-posta Şablonu Seçme \r\n \r\n {loading\r\n ? \r\n \r\n
\r\n : \r\n \r\n Kategoriler :\r\n \r\n \r\n \r\n Kategori seçiniz \r\n {categories.map(cat => {\r\n return (\r\n {cat.categoryName + \" [\" + cat.templateCount + \"]\"} \r\n )\r\n })}\r\n \r\n \r\n \r\n }\r\n \r\n {tempLoading\r\n ? \r\n \r\n
\r\n : temps.map(temp => {\r\n return (\r\n \r\n setSelected(temp)} style={{ backgroundColor: selected.templateName === temp.templateName ? \"green\" : \"transparent\" }} >\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 KAPAT\r\n \r\n handleSelectTemp(selected)} simple size='lg' block color=\"success\">\r\n Seçili Şablonu Kullan\r\n \r\n {selected !== {} && selected.isCustomCategory &&\r\n \r\n Seçili Şablonu Sil\r\n \r\n }\r\n >\r\n \r\n \r\n )\r\n}\r\n\r\nexport default TempDialog","import React, { useEffect, useState } from 'react'\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport MButton from \"@material-ui/core/Button\"\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport { connect } from 'react-redux'\r\nimport TextField from '@material-ui/core/TextField';\r\n\r\nimport AceEditor from 'react-ace'\r\nimport 'ace-builds/src-noconflict/mode-javascript'\r\n// there are many themes to import, I liked monokai.\r\nimport 'ace-builds/src-noconflict/theme-monokai'\r\n// this is an optional import just improved the interaction.\r\nimport 'ace-builds/src-noconflict/ext-language_tools'\r\nimport 'ace-builds/src-noconflict/ext-beautify'\r\nimport TestInputDialog from 'components/Email/TestInputDialog';\r\nimport ImageDialog from 'components/Email/ImageDialog';\r\nimport Switch from '@material-ui/core/Switch';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport AttachFileIcon from '@material-ui/icons/AttachFile';\r\n\r\nimport { CKEditor } from '@ckeditor/ckeditor5-react';\r\nimport ClassicEditor from '@ckeditor/ckeditor5-build-classic';\r\nimport GeneralHtmlSupport from '@ckeditor/ckeditor5-build-classic';\r\n//import GeneralHtmlSupport from '@ckeditor/ckeditor5-html-support/src/generalhtmlsupport';\r\n//import SourceEditing from '@ckeditor/ckeditor5-source-editing/src/sourceediting';\r\n\r\n\r\nimport { uploadAttachment } from '_services/email';\r\nimport { checkResultResponse } from '_helpers/notification';\r\nimport { alertResponseError } from '_helpers/notification';\r\nimport { uploadAssetToUser } from '_services/email';\r\nimport Swal from 'sweetalert2';\r\nimport { CircularProgress, IconButton } from '@material-ui/core';\r\nimport UsableDynamicEmailFieldsDialog from 'components/Email/UsableDynamicEmailFieldsDialog';\r\n\r\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\r\nimport Grow from '@material-ui/core/Grow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Popper from '@material-ui/core/Popper';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport MenuList from '@material-ui/core/MenuList';\r\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\r\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\r\nimport AddTempDialog from 'components/Email/AddTempDialog';\r\nimport { saveEmailTemplate } from '_services/email';\r\nimport TempDialog from 'components/Email/TempDialog';\r\nimport { htmlContentPreview } from '_services/email';\r\nimport CancelIcon from '@material-ui/icons/Cancel';\r\nimport { Editor } from '@tinymce/tinymce-react';\r\n\r\nconst options = ['Create a merge commit', 'Squash and merge', 'Rebase and merge'];\r\n\r\n\r\nconst Step2 = props => {\r\n const [mode, setMode] = useState(\"HTML\")\r\n const [loading, setLoading] = useState(false)\r\n const [testInputDialog, setTestInputDialog] = useState(false)\r\n const [imageDialog, setImageDialog] = useState(false)\r\n const [ToList, SetToList] = useState(\"\")\r\n const [editorModel, setEditorModel] = useState(null)\r\n const [getImages, setGetImages] = useState(1)\r\n const [assetLoading, setAssetLoading] = useState(false)\r\n const [attachLoading, setAttachLoading] = useState(false)\r\n const [dynamic, setDynamic] = useState(\"title\")\r\n const [dynamicFieldDialog, setDynamicFieldDialog] = useState(false)\r\n const [height, setHeight] = useState(300)\r\n const [tempDialog, setTempDialog] = useState(false)\r\n const [CategoryName, SetCategoryName] = useState(\"\")\r\n const [tempLoading, setTempLoading] = useState(false)\r\n const [showTempDialog, setShowTempDialog] = useState(false)\r\n const [editorLoading, setEditorLoading] = useState(false)\r\n const [open, setOpen] = React.useState(false);\r\n const [attachFileUrl, setAttachFileUrl] = useState(\"\")\r\n const anchorRef = React.useRef(null);\r\n const editorRef = React.useRef(null);\r\n\r\n const { Subject, SetSubject, MessageHtml, SetMessageHtml, MessageText, SetMessageText, handleTestEmail, data, user, getSummary, usableDynamicMessageFields, AttachmentFileName, SetAttachmentFileName,\r\n MessageHtmlIsDynamic, SetMessageHtmlIsDynamic, DynamicFieldNamesHtml, SetDynamicFieldNamesHtml, MessageTextIsDynamic, SetMessageTextIsDynamic, DynamicFieldNamesText, SetDynamicFieldNamesText,\r\n SubjectIsDynamic, SetSubjectIsDynamic, DynamicFieldNamesSubject, SetDynamicFieldNamesSubject, summaryLoads, taskDate, taskId, testLoading, fromAddress_sendingChannelSupportsInfo_hasTextAlternativeSupport\r\n } = props\r\n\r\n const { customerId } = user.customerInfo\r\n const { userId } = user.userInfo\r\n const { sessionId, contextSessionId } = data\r\n\r\n const handleTempDialogToggle = () => {\r\n setTempDialog(!tempDialog)\r\n }\r\n\r\n const handleShowTempDialog = () => {\r\n setShowTempDialog(!showTempDialog)\r\n }\r\n\r\n const handleSaveTemp = () => {\r\n const data = { sessionId, contextSessionId, CategoryName, TemplateContentHtml: MessageHtml, TemplateContentText: MessageText }\r\n setTempLoading(true)\r\n saveEmailTemplate(data)\r\n .then(res => {\r\n if (checkResultResponse(res, null, null, 'E-posta şablonu kaydedilemedi.')) {\r\n Swal.fire({\r\n icon: \"success\",\r\n title: \"E-posta \" + CategoryName + \" adıyla şablon olarak kaydedildi\"\r\n })\r\n }\r\n setTempLoading(false)\r\n setTempDialog(false)\r\n SetCategoryName(\"\")\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'E-posta şablonu kaydedilemedi')\r\n setTempLoading(false)\r\n setTempDialog(false)\r\n SetCategoryName(\"\")\r\n })\r\n }\r\n\r\n const handleDynamicFieldDialogToggle = () => {\r\n setDynamicFieldDialog(!dynamicFieldDialog)\r\n }\r\n\r\n const handleDynamicField = (data) => {\r\n const { fieldDisplayName } = data\r\n if (dynamic === \"text\") {\r\n SetMessageText(MessageText + \" [\" + fieldDisplayName + \"] \")\r\n SetMessageTextIsDynamic(true)\r\n SetDynamicFieldNamesText([...DynamicFieldNamesText, fieldDisplayName])\r\n }\r\n else if (dynamic === \"title\") {\r\n SetSubject(Subject + \" [\" + fieldDisplayName + \"] \")\r\n SetSubjectIsDynamic(true)\r\n SetDynamicFieldNamesSubject([...DynamicFieldNamesSubject, fieldDisplayName])\r\n }\r\n else {\r\n handleAddText(\" [\" + fieldDisplayName + \"] \")\r\n SetMessageHtmlIsDynamic(true)\r\n SetDynamicFieldNamesHtml([...DynamicFieldNamesHtml, fieldDisplayName])\r\n }\r\n handleDynamicFieldDialogToggle()\r\n }\r\n\r\n // useEffect(() => {\r\n // getSen()\r\n // }, [])\r\n\r\n const handleTestInputDialogToggle = () => {\r\n if (Subject === \"\") {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: \"Lütfen bir mesaj konusu belirtiniz.\"\r\n })\r\n return\r\n }\r\n if (MessageHtml === \"\") {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: \"Lütfen HTML mesaj içeriğini giriniz.\"\r\n })\r\n return\r\n }\r\n if (fromAddress_sendingChannelSupportsInfo_hasTextAlternativeSupport && MessageText === \"\") {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: \"Lütfen düz metin içeriğini giriniz.\"\r\n })\r\n return\r\n }\r\n SetToList(\"\")\r\n setTestInputDialog(!testInputDialog)\r\n }\r\n\r\n\r\n const handleImageDialogToggle = () => {\r\n setImageDialog(!imageDialog)\r\n }\r\n\r\n const handleSubmit = () => {\r\n let toList = ToList\r\n toList = toList.split(/\\r?\\n/)\r\n handleTestEmail(toList, handleTestInputDialogToggle)\r\n }\r\n\r\n const editorConfig = {\r\n clipboard: ['clipboard', 'undo'],\r\n toolbar: [ 'heading', '|', 'bold', 'italic', 'blockQuote', 'link', 'numberedList', 'bulletedList', 'insertTable',//'sourceEditing', \r\n 'tableColumn', 'tableRow', 'mergeTableCells', '|', 'undo', 'redo'],\r\n editing: ['find', 'selection', 'spellchecker'],\r\n document: ['mode', 'document', 'doctools'],\r\n // basicstyles: ['basicstyles', 'cleanup'],\r\n paragraph: ['list', 'indent', 'blocks', 'align'],\r\n removeButtons: 'Underline,Subscript,Superscript',\r\n forceSimpleAmpersand: true,\r\n allowedContent: true,\r\n extraAllowedContent: '*{*}',\r\n fullPage: true,\r\n //plugins: ['wysiwygarea'],\r\n //plugins: [ GeneralHtmlSupport],\r\n //removePlugins: ['divarea', 'htmldataprocessor'], //removePlugins: ['htmldataprocessor'],\r\n htmlSupport: {\r\n allow: [\r\n {\r\n name: /.*/,\r\n attributes: true,\r\n classes: true,\r\n styles: true\r\n }\r\n ]\r\n },\r\n };\r\n\r\n const handleSelectedImage = url => {\r\n /*\r\n if (editorModel && editorModel.model) {\r\n let tag = ` `\r\n editorModel.model.change(writer => {\r\n const position = editorModel.model.document.selection.getFirstPosition();\r\n writer.insertText(\"!codec!\", position, 'after');\r\n })\r\n const newHTML = editorModel.getData().replace(\"!codec!\", tag)\r\n SetMessageHtml(newHTML)\r\n handleImageDialogToggle()\r\n } else {\r\n handleImageDialogToggle()\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: \"HTML editör içinde resim eklenecek yeri seçiniz.\"\r\n })\r\n }*/\r\n\r\n if (editorModel) {\r\n let tag = ` `\r\n editorModel.insertContent(\"!codec!\")\r\n const newHTML = editorModel.getContent().replace(\"!codec!\", tag)\r\n SetMessageHtml(newHTML)\r\n handleImageDialogToggle()\r\n } else {\r\n handleImageDialogToggle()\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: \"HTML editör içinde resim eklenecek yeri seçiniz.\"\r\n })\r\n }\r\n }\r\n\r\n const handleAddText = text => {\r\n /*\r\n if (editorModel && editorModel.model) {\r\n editorModel.model.change(writer => {\r\n const position = editorModel.model.document.selection.getFirstPosition();\r\n writer.insertText(text, position, 'after');\r\n })\r\n }\r\n */\r\n editorModel.insertContent(text);\r\n }\r\n\r\n const handleAttachment = (e) => {\r\n const file = e.target.files[0]\r\n const { name } = file\r\n const extension = name.split('.').pop()\r\n const whiteList = [\r\n \"csv\",\r\n \"pdf\",\r\n \"doc\",\r\n \"docx\",\r\n \"xls\",\r\n \"xlsx\",\r\n \"ics\",\r\n \"jpg\",\r\n \"jpeg\",\r\n \"txt\",\r\n \"htm\",\r\n \"gif\",\r\n \"bmp\",\r\n \"png\",\r\n \"mp3\",\r\n \"mp4\",\r\n \"ics\",\r\n \"ppt\",\r\n \"pptx\",\r\n ]\r\n const index = whiteList.indexOf(extension)\r\n if (index > - 1) {\r\n const fd = new FormData();\r\n fd.append('File', file, name)\r\n fd.append('SessionId', sessionId)\r\n fd.append('Filename', name)\r\n fd.append('UserId', userId)\r\n fd.append('ContextSessionId', contextSessionId)\r\n fd.append('CustomerId', customerId)\r\n handleSubmitFile(fd)\r\n } else {\r\n Swal.fire({\r\n icon: \"error\",\r\n title: 'Desteklenmeyen dosya formatı.',\r\n text: ' .csv, .pdf, .doc, .docx, .xls, .xlsx, .ics, .jpg, .jpeg, .txt, .htm, .gif, .bmp, .png, .mp3, .mp4, .ics, .ppt, .ptx uzantılarına sahip dosyaları yükleyebilirsiniz.'\r\n })\r\n }\r\n }\r\n\r\n const handleSubmitFile = fd => {\r\n setAttachLoading(true)\r\n uploadAttachment(fd)\r\n .then(res => {\r\n if (res.data.resultCode === 0) {\r\n setAttachFileUrl(res.data.fileUrl)\r\n SetAttachmentFileName(res.data.uploadedFilename)\r\n }\r\n setAttachLoading(false)\r\n if (checkResultResponse(res, null, null, 'Dosya aktarılırken bir hata oluştu.')) {\r\n Swal.fire({\r\n icon: \"success\",\r\n title: \"Yükleme Başarılı\"\r\n })\r\n }\r\n })\r\n .catch(err => {\r\n setAttachLoading(false)\r\n alertResponseError(err, 'Dosya aktarılırken bir hata oluştu.')\r\n })\r\n }\r\n\r\n const handleAssetUpload = (e) => {\r\n const file = e.target.files[0]\r\n const { name } = file\r\n const extension = name.split('.').pop()\r\n const whiteList = [\r\n \"csv\",\r\n \"pdf\",\r\n \"doc\",\r\n \"docx\",\r\n \"xls\",\r\n \"xlsx\",\r\n \"ics\",\r\n \"jpg\",\r\n \"jpeg\",\r\n \"txt\",\r\n \"htm\",\r\n \"gif\",\r\n \"bmp\",\r\n \"png\",\r\n \"mp3\",\r\n \"mp4\",\r\n \"ics\",\r\n \"ppt\",\r\n \"pptx\",\r\n ]\r\n const index = whiteList.indexOf(extension)\r\n if (index > - 1) {\r\n const fd = new FormData();\r\n fd.append('File', file, name)\r\n fd.append('SessionId', sessionId)\r\n fd.append('Filename', name)\r\n fd.append('UserId', userId)\r\n fd.append('ContextSessionId', contextSessionId)\r\n fd.append('CustomerId', customerId)\r\n handleSubmitAsset(fd)\r\n } else {\r\n Swal.fire({\r\n icon: \"error\",\r\n title: 'Desteklenmeyen dosya formatı.',\r\n text: ' .csv, .pdf, .doc, .docx, .xls, .xlsx, .ics, .jpg, .jpeg, .txt, .htm, .gif, .bmp, .png, .mp3, .mp4, .ics, .ppt, .ptx uzantılarına sahip dosyaları yükleyebilirsiniz.'\r\n })\r\n }\r\n }\r\n\r\n const handleSubmitAsset = fd => {\r\n setAssetLoading(true)\r\n uploadAssetToUser(fd)\r\n .then(res => {\r\n setAssetLoading(false)\r\n if (checkResultResponse(res, null, null, 'Dosya aktarılırken bir hata oluştu.')) {\r\n Swal.fire({\r\n icon: \"success\",\r\n title: \"Yükleme Başarılı\"\r\n })\r\n setGetImages(getImages + 1)\r\n }\r\n })\r\n .catch(err => {\r\n setAssetLoading(false)\r\n alertResponseError(err, 'Dosya aktarılırken bir hata oluştu.')\r\n })\r\n }\r\n\r\n\r\n const handleTogglePopper = () => {\r\n setOpen((prevOpen) => !prevOpen);\r\n };\r\n\r\n const handleToggle = () => {\r\n setOpen((prevOpen) => !prevOpen);\r\n };\r\n\r\n const handleClose = (event) => {\r\n if (anchorRef.current && anchorRef.current.contains(event.target)) {\r\n return;\r\n }\r\n setOpen(false);\r\n };\r\n\r\n const handleSelectTemp = (temp) => {\r\n handleShowTempDialog()\r\n setMode(\"code\")\r\n SetMessageHtml(temp.templateContentHtml)\r\n SetMessageText(temp.templateContentText)\r\n setEditorLoading(true)\r\n setTimeout(() => {\r\n setMode(\"HTML\")\r\n setEditorLoading(false)\r\n }, 500)\r\n }\r\n\r\n const handlePreview = async () => {\r\n await getSummary()\r\n const data = { sessionId, contextSessionId, taskId, status: \"0\", customerId, userId }\r\n htmlContentPreview(data)\r\n .then(res => {\r\n if (checkResultResponse(res, null, null, 'E-posta önizlemesi yapılamadı.')) {\r\n const link = document.createElement('a');\r\n link.setAttribute('href', res.data.previewUrl);\r\n link.setAttribute('target', \"_blank\");\r\n link.innerText = \"link text\";\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'E-posta önizlemesi yapılamadı.')\r\n })\r\n\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n İçerik\r\n \r\n \r\n \r\n {summaryLoads\r\n ? \r\n : usableDynamicMessageFields && usableDynamicMessageFields.length > 0 &&\r\n Dinamik Alanlar \r\n }\r\n \r\n \r\n SetSubject(e.target.value),\r\n onFocus: () => setDynamic(\"title\")\r\n }}\r\n />\r\n \r\n {fromAddress_sendingChannelSupportsInfo_hasTextAlternativeSupport &&\r\n \r\n \r\n \r\n \r\n setMode('HTML')} variant={mode !== 'text' ? \"contained\" : \"outlined\"} block >HTML \r\n setMode('text')} variant={mode === 'text' ? \"contained\" : \"outlined\"} block>Düz Metin \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n {mode === \"HTML\" &&\r\n <>\r\n \r\n Resim Ekle\r\n \r\n {attachLoading\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 E-posta Şablonları\r\n \r\n
\r\n\r\n \r\n {({ TransitionProps, placement }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n {/* setMode('text')}> */}\r\n {mode === \"HTML\" &&\r\n ÖNİZLE \r\n }\r\n {testLoading\r\n ? \r\n : < Button color={'rose'} onClick={handleTestInputDialogToggle}>Test Et\r\n }\r\n \r\n \r\n {mode !== \"text\" &&\r\n \r\n {\r\n if (mode === \"HTML\") {\r\n setMode(\"code\")\r\n } else {\r\n setMode(\"HTML\")\r\n }\r\n }} />}\r\n label={'HTML Kodu'}\r\n />\r\n \r\n }\r\n \r\n \r\n \r\n {editorLoading\r\n ? \r\n \r\n \r\n
\r\n \r\n : \r\n {mode === \"HTML\"\r\n ? <>{/* {\r\n const data = editor.getData();\r\n console.log(data);\r\n // setCursor(editor.model.document.selection.getFirstPosition())\r\n SetMessageHtml(data)\r\n setEditorModel(editor)\r\n // editor.editing.view.change( writer => {\r\n // writer.setStyle( 'height', '800px', editor.editing.view.document.getRoot() );\r\n // } );\r\n // console.log({ event, editor, data });\r\n }}\r\n onReady={(editor) => {\r\n editor.editing.view.change(writer => {\r\n writer.setStyle('min-height', '250px', editor.editing.view.document.getRoot());\r\n writer.setStyle('max-height', '800px', editor.editing.view.document.getRoot());\r\n });\r\n }}\r\n onBlur={(event, editor) => {\r\n // console.log('Blur.', editor);\r\n setEditorModel(editor)\r\n }}\r\n onFocus={(event, editor) => {\r\n // console.log('Focus.', editor);\r\n setEditorModel(editor)\r\n setDynamic(\"html\")\r\n }}\r\n config={editorConfig}\r\n />*/}\r\n editorRef.current = editor}\r\n value={MessageHtml}\r\n init={{\r\n selector: 'textarea',\r\n min_height: 400,\r\n language: 'tr',\r\n menubar: true,\r\n //menubar: 'edit view insert format code',\r\n plugins: [\r\n 'advlist', 'anchor', 'autolink', 'autoresize', 'charmap', 'code',\r\n 'fullscreen', 'help', 'image', 'importcss', 'insertdatetime', 'lists', 'link',\r\n 'media', 'preview', 'searchreplace', 'table', 'visualblocks',\r\n 'wordcount'\r\n ],\r\n menu: {\r\n file: { title: 'File', items: 'newdocument ' },\r\n edit: { title: 'Edit', items: 'undo redo | cut copy paste | selectall | searchreplace' },\r\n view: { title: 'View', items: 'code | visualaid visualchars visualblocks | spellchecker | preview fullscreen' },\r\n insert: { title: 'Insert', items: 'image link media template codesample inserttable | charmap emoticons hr | pagebreak nonbreaking anchor toc | insertdatetime' },\r\n format: { title: 'Format', items: 'bold italic underline strikethrough superscript subscript codeformat | formats blockformats fontformats fontsizes align lineheight | forecolor backcolor | removeformat' },\r\n tools: { title: 'Tools', items: 'code | wordcount' },\r\n table: { title: 'Table', items: 'inserttable | cell row column | tableprops deletetable' },\r\n help: { title: 'Help', items: 'help' }\r\n },\r\n toolbar: [ 'undo redo | blocks fontfamily fontsize | bold italic forecolor backcolor| alignleft aligncenter ' +\r\n 'alignright alignjustify lineheight | bullist numlist outdent indent | ',\r\n 'formatpainter removeformat | link image table | charmap emoticons hr | print preview fullscreen code'],\r\n content_style: 'body { font-family:Helvetica,Arial,sans-serif; font-size:14px }',\r\n promotion: false,\r\n branding: false\r\n }}\r\n onEditorChange={(newValue, editor) => \r\n {\r\n SetMessageHtml(newValue)\r\n setEditorModel(editor)\r\n }}\r\n onBlur={(event, editor) => {\r\n // console.log('Blur.', editor);\r\n setEditorModel(editor)\r\n }}\r\n onFocus={(event, editor) => {\r\n // console.log('Focus.', editor);\r\n setEditorModel(editor)\r\n setDynamic(\"html\")\r\n }}\r\n />>\r\n : mode === \"text\"\r\n ? SetMessageText(e.target.value)}\r\n onFocus={() => setDynamic(\"text\")}\r\n fullWidth\r\n />\r\n : SetMessageHtml(currentCode)}\r\n onLoad={editorInstance => {\r\n editorInstance.container.style.height = \"300px\";\r\n // mouseup = css resize end\r\n document.addEventListener(\"mouseup\", e => (\r\n editorInstance.resize()\r\n ));\r\n }}\r\n fontSize={18}\r\n showPrintMargin={true}\r\n showGutter={true}\r\n highlightActiveLine={true}\r\n setOptions={{\r\n enableBasicAutocompletion: true,\r\n enableLiveAutocompletion: true,\r\n enableSnippets: true,\r\n showLineNumbers: true,\r\n tabSize: 4,\r\n }}\r\n />\r\n }\r\n {AttachmentFileName !== \"\" && AttachmentFileName !== null &&\r\n \r\n }\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { smsReducer } = state\r\n return { smsReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps)(Step2)","import React, { useState, useEffect } from 'react'\r\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\r\nimport { sendingListBuilderGetSummary } from '../../_services/sms'\r\nimport clsx from 'clsx';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Switch from '@material-ui/core/Switch';\r\nimport { Select, MenuItem } from \"@material-ui/core\"\r\nimport { DateTimePicker } from \"@material-ui/pickers\";\r\nimport { timeout } from '../../_actions/user'\r\n\r\n// core components\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport { Typography, ButtonGroup, Button } from '@material-ui/core'\r\nimport { TimePicker } from \"@material-ui/pickers\";\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport { checkResponse } from '_helpers/notification';\r\nimport { alertResponseError } from '_helpers/notification';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n },\r\n textField: {\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n width: 200,\r\n },\r\n radioButtons: {\r\n border: '1px solid lightgray',\r\n borderRadius: 10,\r\n padding: 10,\r\n marginTop: 50\r\n },\r\n button: {\r\n marginTop: 30,\r\n marginBottom: 30\r\n },\r\n root: {\r\n '&:hover': {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n icon: {\r\n borderRadius: '50%',\r\n width: 16,\r\n height: 16,\r\n boxShadow: 'inset 0 0 0 1px rgba(16,22,26,.2), inset 0 -1px 0 rgba(16,22,26,.1)',\r\n backgroundColor: '#f5f8fa',\r\n backgroundImage: 'linear-gradient(180deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0))',\r\n '$root.Mui-focusVisible &': {\r\n outline: '2px auto rgba(19,124,189,.6)',\r\n outlineOffset: 2,\r\n },\r\n 'input:hover ~ &': {\r\n backgroundColor: '#ebf1f5',\r\n },\r\n 'input:disabled ~ &': {\r\n boxShadow: 'none',\r\n background: 'rgba(206,217,224,.5)',\r\n },\r\n },\r\n checkedIcon: {\r\n backgroundColor: '#3c54a5',\r\n backgroundImage: 'linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))',\r\n '&:before': {\r\n display: 'block',\r\n width: 16,\r\n height: 16,\r\n backgroundImage: 'radial-gradient(#fff,#fff 28%,transparent 32%)',\r\n content: '\"\"',\r\n },\r\n 'input:hover ~ &': {\r\n backgroundColor: '#3c54a5',\r\n },\r\n },\r\n}));\r\n\r\nconst Step3 = props => {\r\n const [SendDateTime, SetSendDateTime] = useState(0)\r\n const {\r\n data,\r\n SendingTimeType,\r\n SetSendingTimeType,\r\n SendDate,\r\n SetSendDate,\r\n AbortDate,\r\n SetAbortDate,\r\n sendingTimeOptions,\r\n setSendingTimeOptions,\r\n sendingTimeOptionsValue,\r\n setSendingTimeOptionsValue,\r\n handleSendingTimeOptionsValue,\r\n SetSendLabel,\r\n fromAddress_sendingChannelSupportsInfo_hasSendWhenSupport,\r\n fromAddress_sendingChannelSupportsInfo_hasTimeToLiveSupport\r\n } = props\r\n\r\n const classes = useStyles();\r\n\r\n const StyledRadio = (props) => {\r\n return (\r\n }\r\n icon={ }\r\n {...props}\r\n />\r\n );\r\n }\r\n\r\n const handleChange = (e) => {\r\n const { value } = e.target;\r\n handleSendingTimeOptionsValue(value);\r\n }\r\n\r\n const fixTimePicker = time => {\r\n let arr = time.split(':')\r\n arr[0] = arr[0]\r\n if (arr[1] === '00') {\r\n arr[1] = 0\r\n }\r\n return arr\r\n }\r\n\r\n const handleStartTime = time => {\r\n const arr = fixTimePicker(time)\r\n setSendingTimeOptions({ sendSeperatedPeriodicallyOptions: { ...sendingTimeOptions.sendSeperatedPeriodicallyOptions, shiftTimePeriodStartHour: arr[0], shiftTimePeriodStartMinute: arr[1] } })\r\n }\r\n\r\n const handleEndTime = time => {\r\n const arr = fixTimePicker(time)\r\n setSendingTimeOptions({ sendSeperatedPeriodicallyOptions: { ...sendingTimeOptions.sendSeperatedPeriodicallyOptions, shiftTimePeriodEndHour: arr[0], shiftTimePeriodEndMinute: arr[1] } })\r\n }\r\n\r\n const min = sendingTimeOptions.sendSeperatedPeriodicallyOptions.shiftTimePeriodStartMinute === 0 ? '00' : sendingTimeOptions.sendSeperatedPeriodicallyOptions.shiftTimePeriodStartMinute\r\n const min2 = sendingTimeOptions.sendSeperatedPeriodicallyOptions.shiftTimePeriodEndMinute === 0 ? '00' : sendingTimeOptions.sendSeperatedPeriodicallyOptions.shiftTimePeriodEndMinute\r\n const startValue = sendingTimeOptions.sendSeperatedPeriodicallyOptions.shiftTimePeriodStartHour + ':' + min\r\n const endValue = sendingTimeOptions.sendSeperatedPeriodicallyOptions.shiftTimePeriodEndHour + ':' + min2\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Zamanlama\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n SetSendDate(moment().format('YYYY-MM-DDTHH:mm'))\r\n SetSendingTimeType(\"Instantly\")\r\n }} color={SendingTimeType === \"Instantly\" ? \"secondary\" : \"primary\"} style={{backgroundColor : SendingTimeType === \"Instantly\" ? \"#9c27b0\" : \"inherit\" }} variant={SendingTimeType === \"Instantly\" ? \"contained\" : \"outlined\"} >Hemen Gönder \r\n SetSendingTimeType(\"ExactDateTime\")} style={{backgroundColor : SendingTimeType === \"ExactDateTime\" ? \"#9c27b0\" : \"inherit\" }} color={SendingTimeType === \"ExactDateTime\" ? \"secondary\" : \"primary\"} variant={SendingTimeType === \"ExactDateTime\" ? \"contained\" : \"outlined\"} >İlerİ Tarİh ve Saatte Gönder \r\n \r\n \r\n {SendingTimeType === \"ExactDateTime\" &&\r\n \r\n SetSendDate(moment(date).format('YYYY-MM-DDTHH:mm'))}\r\n format='DD.MM.YYYY HH:mm'\r\n okLabel='TAMAM'\r\n cancelLabel='KAPAT'\r\n />\r\n \r\n }\r\n { (fromAddress_sendingChannelSupportsInfo_hasSendWhenSupport || fromAddress_sendingChannelSupportsInfo_hasTimeToLiveSupport) &&\r\n \r\n \r\n \r\n } label=\"Tüm adreslere gönderim tamamlanana kadar devam etsin\" />\r\n { fromAddress_sendingChannelSupportsInfo_hasTimeToLiveSupport &&\r\n } label=\"Belirli tarih ve saate kadar tamamlanmamış gönderiler iptal edilsin.\" />\r\n }\r\n { fromAddress_sendingChannelSupportsInfo_hasTimeToLiveSupport && sendingTimeOptionsValue === \"2\" &&\r\n \r\n SetAbortDate(moment(date).format('YYYY-MM-DDTHH:mm'))}\r\n format='DD.MM.YYYY HH:mm'\r\n okLabel='TAMAM'\r\n cancelLabel='KAPAT'\r\n />\r\n
\r\n }\r\n { fromAddress_sendingChannelSupportsInfo_hasSendWhenSupport &&\r\n } label=\"Zaman aralığı belirle\" />\r\n }\r\n \r\n \r\n { fromAddress_sendingChannelSupportsInfo_hasSendWhenSupport && sendingTimeOptionsValue === \"3\" &&\r\n \r\n
\r\n \r\n Gönderim yapılacak saat aralığı :
\r\n \r\n \r\n \r\n \r\n \r\n - \r\n \r\n \r\n \r\n \r\n \r\n
\r\n }\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Step3","import React, { useState, useEffect } from 'react'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Table from \"components/Table/Table.js\";\r\nimport Tasks from \"components/Tasks/Tasks.js\";\r\nimport CustomTabs from \"components/CustomTabs/CustomTabs.js\";\r\nimport Danger from \"components/Typography/Danger.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport CardHeader from \"components/Card/CardHeader.js\";\r\nimport CardIcon from \"components/Card/CardIcon.js\";\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport CardFooter from \"components/Card/CardFooter.js\";\r\nimport Swal from 'sweetalert2'\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport { calculateLastSendDate } from '_helpers/sending';\r\nimport SnackbarContent from 'components/Snackbar/SnackbarContent';\r\n\r\nconst Step0 = props => {\r\n const { summary, handleSendEmail, setActiveStep, summaryLoads, emailLoads,\r\n taskName, SendingTimeType, SendDate, fromAddress, fromAddressDisplayName, fromName, SendLabel\r\n } = props\r\n\r\n useEffect(() => {\r\n if (summary.grandTotalWithoutLimits === 0) {\r\n Swal.fire({\r\n title: \"Lütfen gönderim listenize en az bir numara ya da dosya ekleyiniz.\",\r\n icon: \"info\"\r\n })\r\n setActiveStep(1)\r\n }\r\n }, [summary])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {summaryLoads\r\n ? \r\n \r\n
\r\n : \r\n \r\n \r\n Gönderim Özeti\r\n \r\n \r\n \r\n \r\n Gönderim Adı : {taskName} \r\n \r\n \r\n \r\n \r\n Gönderim Zamanlaması : {SendingTimeType === \"Instantly\" ? \"Hemen Gönderilecek\" : \"Belirli tarih ve saatte gönderilecek \" + moment(SendDate).format(\"DD.MM.YYYY HH:mm\")} \r\n \r\n \r\n \r\n \r\n Gönderim Bitiş Zamanı : {SendLabel} \r\n \r\n \r\n \r\n \r\n Kullanılan gönderen adresi : {fromName + \" <\" + fromAddressDisplayName + \">\"} \r\n \r\n \r\n \r\n \r\n Gönderim Yapılacak E-posta Adresi Adedi : {(summary.grandTotalWithoutLimits || '0').toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n {emailLoads\r\n ? \r\n \r\n
\r\n :\r\n \r\n {((summary != null && summary.availableSendCount < summary.grandTotalWithoutLimits) && summary.availableSendCount !== -1 )\r\n ?
Tanımınıza ait limitten {summary.availableSendCount} adet hakkınız kalmıştır. Gönderim listesindeki numara sayısını azaltınız ya da hesap yetkiliniz üzerinden musterihizmetleri@codec.com.tr e-posta adresine limit arttırım talebinde bulununuz.}\r\n color=\"danger\"\r\n />\r\n :\r\n \r\n Kontrol Et ve Onayla\r\n \r\n }\r\n \r\n }\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Step0","import React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux'\r\nimport { canceltwofasms, closeTwofa } from '../../_actions/twofa'\r\nimport { makeStyles, } from '@material-ui/core/styles';\r\nimport Stepper from '@material-ui/core/Stepper';\r\nimport Step from '@material-ui/core/Step';\r\nimport StepButton from '@material-ui/core/StepButton';\r\nimport Button from '@material-ui/core/Button';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Step0 from './Step0.js'\r\nimport Step1 from './Step1.js'\r\nimport Step2 from './Step2.js'\r\nimport Step3 from './Step3.js'\r\nimport Step4 from './Step4.js'\r\nimport Swal from 'sweetalert2'\r\nimport AdvancedTimeDialog from 'components/Sms/AdvancedTimeDialog.js'\r\nimport EtkDialog from 'components/Sms/EtkDialog'\r\nimport TwofaDialog from \"components/Twofa/TwofaDialog.js\";\r\nimport { FileFields } from 'variables/fileFields.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\nimport { checkResponse } from '_helpers/notification.js';\r\nimport { checkResultResponse } from '_helpers/notification.js';\r\nimport SnackbarContent from 'components/Snackbar/SnackbarContent.js';\r\nimport { sendingListClear } from '_services/email.js';\r\nimport { sendTestEmail } from '_services/email.js';\r\nimport moment from 'moment';\r\nimport { getSendingListSummary } from '_services/email.js';\r\nimport { updateSendEmailInfoAndGetSummary } from '_services/email.js';\r\nimport { sendEmail } from '_services/email.js';\r\nimport { sendingListBuilderCopy } from '_services/email';\r\nimport { UserRightVisibility } from 'variables/userRightVisibility';\r\nimport { ServiceType } from 'variables/serviceType';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: '100%',\r\n },\r\n button: {\r\n marginRight: theme.spacing(1),\r\n },\r\n instructions: {\r\n marginTop: theme.spacing(1),\r\n marginBottom: theme.spacing(1),\r\n },\r\n}));\r\n\r\nconst getSteps = () => {\r\n return ['Tanım', 'Liste', 'İçerik', 'Zamanlama', \"Özet\"];\r\n}\r\n\r\nconst EpostaGonderim = (props) => {\r\n const { defaultKeyFieldType, PbPersonList, PbGroupList, SavedFileIdList } = props.location\r\n\r\n const classes = useStyles();\r\n const [activeStep, setActiveStep] = useState(0);\r\n\r\n //loads\r\n const [summaryLoads, setSummaryLoads] = useState('')\r\n const [emailLoads, setEmailLoads] = useState('')\r\n\r\n //step0\r\n const [taskName, setTaskName] = useState('')\r\n const [fromName, setFromName] = useState(\"\")\r\n const [fromAddress, setFromAddress] = useState(\"\")\r\n const [fromAddressDisplayName, setFromAddressDisplayName] = useState(\"\")\r\n const [fromAddress_sendingChannelSupportsInfo_hasSendWhenSupport, setFromAddress_sendingChannelSupportsInfo_hasSendWhenSupport] = useState(false)\r\n const [fromAddress_sendingChannelSupportsInfo_hasTextAlternativeSupport, setFromAddress_sendingChannelSupportsInfo_hasTextAlternativeSupport] = useState(false)\r\n const [fromAddress_sendingChannelSupportsInfo_hasTimeToLiveSupport, setFromAddress_sendingChannelSupportsInfo_hasTimeToLiveSupport] = useState(false)\r\n const [EtkAgreementAnswer, SetEtkAgreementAnswer] = useState(null)\r\n\r\n const [SendType, SetSendType] = useState(3)\r\n const [SourceTaskId, SetSourceTaskId] = useState('')\r\n\r\n const [taskId, setTaskId] = useState(\"\")\r\n\r\n //Step 1\r\n const [grandTotal, setGrandTotal] = useState(0)\r\n const [defaultPbPersonList, setDefaultPbPersonList] = useState([])\r\n const [defaultPbGroupList, setDefaultPbGroupList] = useState([])\r\n const [defaultSavedFileIdList, setDefaultSavedFileIdList] = useState([])\r\n\r\n //Step 2\r\n const [testLoading, setTestLoading] = useState(false)\r\n const [taskDate] = useState(moment().toDate())\r\n const [Subject, SetSubject] = useState(\"\")\r\n const [SubjectIsDynamic, SetSubjectIsDynamic] = useState(false)\r\n const [DynamicFieldNamesSubject, SetDynamicFieldNamesSubject] = useState([])\r\n const [MessageHtml, SetMessageHtml] = useState(\"\")\r\n const [MessageText, SetMessageText] = useState(\"\")\r\n const [MessageHtmlIsDynamic, SetMessageHtmlIsDynamic] = useState(false)\r\n const [DynamicFieldNamesHtml, SetDynamicFieldNamesHtml] = useState([])\r\n const [MessageTextIsDynamic, SetMessageTextIsDynamic] = useState(false)\r\n const [DynamicFieldNamesText, SetDynamicFieldNamesText] = useState([])\r\n\r\n const [UseAlternativeMessage, SetUseAlternativeMessage] = useState(false)\r\n const [AlternativeMessageHtml] = useState(\"\")\r\n const [AlternativeMessageText] = useState(\"\")\r\n const [AlternativeSubject, SetAlternativeSubject] = useState(null)\r\n\r\n const [usableDynamicMessageFields, setUsableDynamicMessageFields] = useState([])\r\n const [SendLabel, SetSendLabel] = useState(\"Tüm adreslere gönderim tamamlanana kadar devam edecek\")\r\n\r\n\r\n // Step 3\r\n const [SendingTimeType, SetSendingTimeType] = useState(\"Instantly\")\r\n const [SendDate, SetSendDate] = useState(moment().toDate())\r\n const [AbortDate, SetAbortDate] = useState(null)\r\n const [AttachmentFileName, SetAttachmentFileName] = useState(null)\r\n const [sendingTimeOptions, setSendingTimeOptions] = useState({\r\n sendSeperatedPeriodicallyOptions: {\r\n isActive: false,\r\n isShiftTimePeriodActive: false,\r\n packageSize: -1,\r\n period: -1,\r\n shiftTimePeriodStartHour: \"09\",\r\n shiftTimePeriodStartMinute: \"00\",\r\n shiftTimePeriodEndHour: \"20\",\r\n shiftTimePeriodEndMinute: \"00\"\r\n }\r\n })\r\n const [sendingTimeOptionsValue, setSendingTimeOptionsValue] = useState(\"1\")\r\n\r\n //periodic\r\n const [advancedTimeDialog, setAdvancedTimeDialog] = useState(false)\r\n const [KeyFieldType, SetKeyFieldType] = useState(6)\r\n\r\n\r\n // IYS\r\n const steps = getSteps();\r\n const { dispatch } = props\r\n const { sessionId, contextSessionId, user } = props.userReducer.user\r\n const { serviceRight_Email } = user.userRights\r\n\r\n const AuthData = { sessionId, contextSessionId }\r\n\r\n useEffect(() => {\r\n let keyFieldTypeTemp = keyFieldTypeFix(SendType)\r\n if (keyFieldTypeTemp !== KeyFieldType) {\r\n SetKeyFieldType(keyFieldTypeTemp)\r\n\r\n if (keyFieldTypeTemp !== defaultKeyFieldType) {\r\n clearDefaultLists();\r\n sendingListBuilderClearFromService();\r\n }\r\n }\r\n }, [SendType])\r\n\r\n const keyFieldTypeFix = (SendType) => {\r\n switch (SendType) {\r\n case 3:\r\n return 2\r\n case 4:\r\n return 5\r\n case 5:\r\n return 16\r\n default:\r\n return 1\r\n }\r\n }\r\n\r\n const sendTypeByKeyFieldType = (keyFieldType) => {\r\n switch (keyFieldType) {\r\n case FileFields.ID_FIELDTYPE_MOBILEPHONE:\r\n return 3\r\n case FileFields.ID_FIELDTYPE_IDENTITYNUMBER:\r\n return 4\r\n case FileFields.ID_FIELDTYPE_TAXNUMBER:\r\n return 5\r\n default:\r\n return 1\r\n }\r\n }\r\n\r\n const advancedTimeDialogToggle = () => {\r\n setAdvancedTimeDialog(!advancedTimeDialog)\r\n }\r\n\r\n const [summary, setSummary] = useState({})\r\n const [etkDialog, setEtkDialog] = useState(false)\r\n\r\n const handleEtkDialogToggle = () => {\r\n setEtkDialog(!etkDialog)\r\n }\r\n\r\n useEffect(() => {\r\n sendingListBuilderClearFromService()\r\n setDefaultLists()\r\n }, [])\r\n\r\n const setDefaultLists = () => {\r\n setDefaultPbPersonList(PbPersonList)\r\n setDefaultPbGroupList(PbGroupList)\r\n setDefaultSavedFileIdList(SavedFileIdList)\r\n }\r\n\r\n const clearDefaultLists = () => {\r\n setDefaultPbPersonList([])\r\n setDefaultPbGroupList([])\r\n setDefaultSavedFileIdList([])\r\n }\r\n\r\n const sendingListBuilderClearFromService = () => {\r\n const data = { sessionId, contextSessionId, ServiceType: 7 }\r\n sendingListClear(data)\r\n .then(res => {\r\n if (checkResultResponse(res, dispatch, null, 'Gönderim listesi temizlenirken bir hata oluştu.')) {\r\n return null\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Gönderim listesi temizlenirken bir hata oluştu.')\r\n })\r\n }\r\n\r\n const handleTestEmail = (ToList, closeModal) => {\r\n const TestEmailRequest = {\r\n TaskName: taskName,\r\n FromAddress: fromAddress,\r\n FromName: fromName,\r\n Subject,\r\n SubjectIsDynamic,\r\n DynamicFieldNamesSubject,\r\n MessageHtml,\r\n MessageText,\r\n MessageHtmlIsDynamic,\r\n DynamicFieldNamesHtml,\r\n MessageTextIsDynamic,\r\n DynamicFieldNamesText,\r\n UseAlternativeMessage: false,\r\n AlternativeMessageHtml: null,\r\n AlternativeMessageText: null,\r\n AttachmentFileName: null,\r\n ToList\r\n }\r\n const data = { AuthData, TestEmailRequest }\r\n setTestLoading(true)\r\n sendTestEmail(data)\r\n .then(res => {\r\n setTestLoading(false)\r\n if (checkResultResponse(res, dispatch, null, 'Test e-posta başarıyla gönderildi.')) {\r\n Swal.fire({\r\n icon: \"success\",\r\n title: \"Test e-posta başarıyla gönderildi.\"\r\n })\r\n closeModal()\r\n } else {\r\n alertResponseError(null, \"Test e-posta gönderilemedi.\")\r\n }\r\n })\r\n .catch(err => {\r\n setTestLoading(false)\r\n alertResponseError(err, \"Test e-posta gönderilemedi.\")\r\n })\r\n }\r\n\r\n const getSendingSummary = () => {\r\n const data = AuthData\r\n setSummaryLoads(true)\r\n getSendingListSummary(data)\r\n .then(res => {\r\n setSummaryLoads(false)\r\n if (res.data && res.data.result && res.data.result.resultCode === 0) {\r\n setUsableDynamicMessageFields(res.data.usableDynamicMessageFields)\r\n setTaskId(res.data.taskId)\r\n } else {\r\n setUsableDynamicMessageFields([])\r\n setTaskId(\"\")\r\n }\r\n })\r\n .catch(err =>\r\n setSummaryLoads(false)\r\n )\r\n }\r\n\r\n const getStepContent = (step) => {\r\n switch (step) {\r\n case 0:\r\n return \r\n case 1:\r\n return \r\n case 2:\r\n return \r\n case 3:\r\n return \r\n case 4:\r\n return \r\n default:\r\n return 'Bilinmeyen Adım';\r\n }\r\n }\r\n\r\n const handleSendEmail = () => {\r\n if (activeStep === 4) {\r\n if (summary.availableSendCount === 0) {\r\n Swal.fire({\r\n title: \"Lütfen gönderim listenize en az bir e-posta adresi ya da e-posta adresi içeren dosya ekleyiniz.\",\r\n icon: \"info\"\r\n })\r\n setActiveStep(1)\r\n }\r\n else {\r\n setEtkDialog(true)\r\n }\r\n }\r\n }\r\n\r\n const sendEmailFunc = () => {\r\n const EmailRequest = {\r\n taskName,\r\n SendDate,\r\n AbortDate,\r\n SendingTimeType,\r\n sendingTimeOptionsProp: {\r\n sendSeperatedPeriodicallyOptions: null,\r\n expirationTimeOptions: null\r\n },\r\n fromAddress,\r\n fromName,\r\n Subject,\r\n SubjectIsDynamic,\r\n DynamicFieldNamesSubject,\r\n MessageHtml,\r\n MessageText,\r\n MessageHtmlIsDynamic,\r\n DynamicFieldNamesHtml,\r\n MessageTextIsDynamic,\r\n DynamicFieldNamesText,\r\n UseAlternativeMessage,\r\n AlternativeSubject,\r\n AlternativeMessageHtml,\r\n AlternativeMessageText,\r\n AttachmentFileName,\r\n IsLimitedWithSuiteAmount: false,\r\n SendingLimit: -1,\r\n PaymentLimit: -1,\r\n AlsoSendToBlackList: false,\r\n CampaignId: null,\r\n SendingListRequest: null,\r\n etkAgreementAnswer: EtkAgreementAnswer\r\n }\r\n const data = { AuthData, EmailRequest }\r\n setEmailLoads(true)\r\n sendEmail(data)\r\n .then(res => {\r\n setSummaryLoads(false)\r\n setEmailLoads(false)\r\n if (checkResponse(res, dispatch, 'E-posta gönderim isteğiniz kaydedilmiştir.', 'E-posta gönderim isteğiniz başarısız olmuştur.')) {\r\n callCopy()\r\n }\r\n SetEtkAgreementAnswer(null)\r\n })\r\n .catch(err => {\r\n setSummaryLoads(false)\r\n setEmailLoads(false)\r\n alertResponseError(err, 'E-posta gönderim isteğiniz başarısız olmuştur.')\r\n })\r\n }\r\n\r\n const callCopy = () => {\r\n const data = {\r\n sessionId, contextSessionId, ServiceType: 7, SourceTaskId\r\n }\r\n sendingListBuilderCopy(data)\r\n .then(res => {\r\n if (checkResponse(res, dispatch, null, 'Yeni gönderim için son gönderimin kopyası oluşturulamadı, yeniden gönderim yapmak için sayfaya tekrar erişim sağlayınız.')) {\r\n SetSourceTaskId(res.data.newTaskId)\r\n setActiveStep(0)\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Yeni gönderim için son gönderimin kopyası oluşturulamadı.')\r\n })\r\n }\r\n\r\n const getSummary = () => {\r\n const EmailRequest = {\r\n taskName,\r\n SendDate,\r\n AbortDate,\r\n SendingTimeType,\r\n sendingTimeOptionsProp: {\r\n sendSeperatedPeriodicallyOptions: null,\r\n expirationTimeOptions: null\r\n },\r\n fromAddress,\r\n fromName,\r\n Subject,\r\n SubjectIsDynamic,\r\n DynamicFieldNamesSubject,\r\n MessageHtml,\r\n MessageText,\r\n MessageHtmlIsDynamic,\r\n DynamicFieldNamesHtml,\r\n MessageTextIsDynamic,\r\n DynamicFieldNamesText,\r\n UseAlternativeMessage,\r\n AlternativeSubject,\r\n AlternativeMessageHtml,\r\n AlternativeMessageText,\r\n AttachmentFileName,\r\n IsLimitedWithSuiteAmount: false,\r\n SendingLimit: -1,\r\n PaymentLimit: -1,\r\n AlsoSendToBlackList: false,\r\n CampaignId: null,\r\n SendingListRequest: null,\r\n etkAgreementAnswer: null\r\n }\r\n const data = { AuthData, EmailRequest }\r\n setSummaryLoads(true)\r\n updateSendEmailInfoAndGetSummary(data)\r\n .then(res => {\r\n setSummaryLoads(false)\r\n if (checkResponse(res, dispatch, null, 'Gönderim bilgileri güncellenirken ve özet bilgileri getirilirken bir hata oluştu.')) {\r\n setSummary(res.data)\r\n SetSourceTaskId(res.data.taskId)\r\n }\r\n })\r\n .catch(err => {\r\n setSummaryLoads(false)\r\n alertResponseError(err, 'Girilen numaralar eklenemedi.')\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n if (activeStep === 4) {\r\n if (grandTotal === 0) {\r\n Swal.fire({\r\n title: \"Lütfen gönderim listenize en az bir e-posta adresi ya da e-posta adresi içeren dosya ekleyiniz.\",\r\n icon: \"info\"\r\n })\r\n setActiveStep(1)\r\n } else {\r\n getSummary()\r\n }\r\n }\r\n }, [activeStep])\r\n\r\n const handleNext = () => {\r\n if (activeStep === 0) {\r\n if (fromName === \"\") {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: \"Lütfen Gönderen Adı giriniz.\"\r\n })\r\n return\r\n }\r\n }\r\n if (activeStep === 1) {\r\n if (grandTotal === 0) {\r\n Swal.fire({\r\n title: \"Lütfen gönderim listenize en az bir e-posta adresi ya da e-posta adresi içeren dosya ekleyiniz.\",\r\n icon: \"info\"\r\n })\r\n return\r\n }\r\n }\r\n if (activeStep === 2) {\r\n if (Subject === \"\") {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: \"Lütfen bir e-posta konusu belirtiniz.\"\r\n })\r\n return\r\n }\r\n if (MessageHtml === \"\") {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: \"Lütfen HTML mesaj içeriğini giriniz.\"\r\n })\r\n return\r\n }\r\n if (fromAddress_sendingChannelSupportsInfo_hasTextAlternativeSupport && MessageText === \"\") {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: \"Lütfen düz metin içeriğini giriniz.\"\r\n })\r\n return\r\n }\r\n\r\n }\r\n\r\n if (activeStep === 3) {\r\n if ((!fromAddress_sendingChannelSupportsInfo_hasSendWhenSupport && sendingTimeOptionsValue === \"2\")\r\n || (!fromAddress_sendingChannelSupportsInfo_hasTimeToLiveSupport && sendingTimeOptionsValue === \"3\")) {\r\n handleSendingTimeOptionsValue(\"1\");\r\n }\r\n }\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n\r\n };\r\n\r\n const handleBack = () => {\r\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\r\n };\r\n\r\n const handleStep = (step) => () => {\r\n setActiveStep(step);\r\n };\r\n\r\n const handleReset = () => {\r\n setActiveStep(0);\r\n };\r\n\r\n const handleSendingTimeOptionsValue = (value) => {\r\n const _default = {\r\n sendSeperatedPeriodicallyOptions: {\r\n isActive: false,\r\n isShiftTimePeriodActive: false,\r\n packageSize: -1,\r\n period: -1,\r\n shiftTimePeriodStartHour: \"09\",\r\n shiftTimePeriodStartMinute: \"00\",\r\n shiftTimePeriodEndHour: \"20\",\r\n shiftTimePeriodEndMinute: \"00\"\r\n }\r\n };\r\n \r\n if (value === \"1\") {\r\n SetAbortDate(null)\r\n setSendingTimeOptions(_default)\r\n SetSendLabel(\"Tüm adreslere gönderim tamamlanana kadar devam edecek\")\r\n }\r\n if (value === \"2\") {\r\n SetSendLabel(\"Belirli tarih ve saate kadar tamamlanmamış gönderiler iptal edilecek.\")\r\n }\r\n if (value === \"3\") {\r\n SetAbortDate(null)\r\n setSendingTimeOptions(_default)\r\n SetSendLabel(\"Zaman aralığı belirlendi\")\r\n }\r\n setSendingTimeOptionsValue(value)\r\n }\r\n\r\n if (serviceRight_Email != UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n
\r\n {steps.map((label, index) => (\r\n \r\n \r\n {label}\r\n \r\n {/* {label} */}\r\n \r\n ))}\r\n \r\n
\r\n {activeStep === steps.length ? (\r\n
\r\n \r\n Sms Gönderimi Başarılı!\r\n \r\n \r\n Temizle\r\n \r\n
\r\n ) : (\r\n
\r\n {getStepContent(activeStep)}\r\n
\r\n \r\n GERİ\r\n \r\n {activeStep !== steps.length - 1 &&\r\n \r\n İLERİ\r\n \r\n }\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n
{\r\n dispatch(closeTwofa())\r\n sendEmailFunc()\r\n }}\r\n canceltwofa={() => dispatch(canceltwofasms())}\r\n userData={props.userReducer.user}\r\n />\r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer, twofaReducer, smsReducer } = state\r\n return { userReducer, twofaReducer, smsReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps)(EpostaGonderim)","const styles = (theme) => ({\r\n appBar: {\r\n position: 'relative',\r\n },\r\n title: {\r\n marginLeft: theme.spacing(2),\r\n flex: 1,\r\n },\r\n container : {\r\n paddingTop : 20,\r\n paddingBottom : 50,\r\n zIndex : 10\r\n },\r\n // dialog : {\r\n // width : '100%',\r\n // oveflowX : \"hidden\"\r\n // },\r\n headRow: {\r\n maxHeight : 40,\r\n },\r\n row : {\r\n height : 100,\r\n },\r\n masterCol : {\r\n minWidth : 200\r\n },\r\n topCol : {\r\n width: \"50%\"\r\n },\r\n col : {\r\n minWidth : 150,\r\n },\r\n evenCol : {\r\n minWidth : 150,\r\n backgroundColor : \"#effeff\",\r\n },\r\n table : {\r\n border : \"1px solid lightgray\"\r\n },\r\n grid : {\r\n overFlow : \"scroll\",\r\n minHeight : 300,\r\n textAlign : \"center\"\r\n },\r\n indicator : {\r\n position : \"absolute\",\r\n left : \"50%\",\r\n top : \"50%\"\r\n },\r\n tableCont : {\r\n width : \"100%\"\r\n },\r\n dialog : {\r\n width : '90%',\r\n marginLeft : \"5%\",\r\n oveflowX : \"hidden\",\r\n }\r\n})\r\n\r\nexport default styles","import React, { useState, useEffect } from 'react';\r\n\r\nimport { getPermissionMarketingItemStatusesHistory } from '../../_services/permissions.js'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport {\r\n PagingState,\r\n CustomPaging,\r\n TableColumnResizing,\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n} from '@devexpress/dx-react-grid-material-ui';\r\nimport Box from '@material-ui/core/Box';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Slide from '@material-ui/core/Slide';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport MuiAlert from '@material-ui/lab/Alert';\r\n\r\n\r\nimport styles from \"assets/jss/material-dashboard-react/components/importFileDialog.js\"\r\nimport { numberFormat } from 'formats/number.js';\r\nimport { checkResponse } from '_helpers/notification.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return ;\r\n});\r\n\r\nfunction Alert(props) {\r\n return ;\r\n}\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\n\r\nconst HistoryModal = (props) => {\r\n const [list, setList] = useState([])\r\n const [count, setCount] = useState(0)\r\n const classes = useStyles()\r\n const [loading, setLoading] = useState(false)\r\n const { open, toggle, destination, sessionId, contextSessionId, ServiceType, SortFields, hasIys } = props\r\n\r\n const [PageSize, SetPageSize] = useState(30)\r\n const [PageNumber, SetPageNumber] = useState(0)\r\n\r\n useEffect(() => {\r\n if (open) {\r\n handleGetData({}, {})\r\n }\r\n }, [open])\r\n\r\n const handleGetData = (q1, q2) => {\r\n let expression = ''\r\n expression += `{destination:${destination}}`\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n ServiceType,\r\n ListRequest: {\r\n PageSize,\r\n PageNumber,\r\n SortFields,\r\n SearchExpression: expression,\r\n CalculateTotalRecordCount: true,\r\n ...q2\r\n },\r\n ...q1\r\n }\r\n setLoading(true)\r\n getPermissionMarketingItemStatusesHistory(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'İzin geçmişi listesi getirilemedi.')) {\r\n setList(res.data.statuses)\r\n setCount(res.data.totalRecordCount)\r\n } else {\r\n setList([])\r\n setCount(0)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n setList([])\r\n setCount(0)\r\n alertResponseError(err, 'İzin geçmişi listesi getirilemedi.')\r\n })\r\n }\r\n\r\n const columns = [\r\n { name: 'destination', title: 'Alıcı' },\r\n { name: 'statusDescription', title: 'Durumu' },\r\n { name: \"sourceDescription\", title: \"Kaynak\" },\r\n { name: \"permissionDate\", title: \"Tarihi\" },\r\n { name: \"consentSource\", title: \"İzin Kaynağı\" },\r\n { name: \"triggerDate\", title: \"Değişim Tarihi\" },\r\n { name: \"iysPushStatus\", title: \"İYS'ye Aktarım Durumu\" },\r\n { name: \"iysPushErr\", title: \"İYS'ye Aktarım Hatası\" },\r\n ];\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: 'destination', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'statusDescription', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'sourceDescription', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'permissionDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'consentSource', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'triggerDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'iysPushStatus', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'iysPushErr', width: 'auto', wordWrapEnabled: true },\r\n ]);\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return {\r\n destination: ServiceType === 'Msisdn' || ServiceType === 'Call' ? numberFormat(l.destination || '') : l.destination,\r\n permissionDate: (l.permissionDate && moment(l.permissionDate).format('DD.MM.YYYY HH:mm')),\r\n statusDescription: l.statusDescription,\r\n sourceDescription: l.sourceDescription,\r\n triggerId: l.triggerId,\r\n consentSource: l.consentSource,\r\n triggerDate: moment(l.triggerDate).format('DD.MM.YYYY HH:mm'),\r\n iysPushStatus: hasIys ? l.iysPushStatus + (l.iysPushStatusDescription ? ' (' + l.iysPushStatusDescription + ')' : '') : 'İYS hizmeti alınmamaktadır',\r\n iysPushErr: hasIys ? l.iysPushErrorCode + (l.iysPushErrorCodeDescription ? ' (' + l.iysPushErrorCodeDescription + ')' : '') : '',\r\n }\r\n })\r\n )\r\n }\r\n\r\n const handlePageSizeChange = (value) => {\r\n SetPageSize(value)\r\n SetPageNumber(0)\r\n handleGetData({}, { PageSize: value, PageNumber: 1 })\r\n }\r\n\r\n const handlePageChange = (value) => {\r\n SetPageNumber(value)\r\n handleGetData({}, { PageNumber: value + 1 })\r\n }\r\n\r\n const handleSort = params => {\r\n // if( params[0].columnName !== 'id'){\r\n // if(Direction === 'Ascending'){\r\n // handleGetData({},{ SortFields : [{FieldName: params[0].columnName, Direction: \"Descending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Descending\"}])\r\n // setSorting(params)\r\n // SetDirection('Descending')\r\n // }else{\r\n // handleGetData({},{ SortFields : [{FieldName: params[0].columnName, Direction: \"Ascending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Ascending\"}])\r\n // setSorting(params)\r\n // SetDirection('Ascending')\r\n // }\r\n // }else{\r\n // setSorting(params)\r\n // return\r\n // }\r\n }\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n İZİNLİ PAZARLAMA - KAYIT GEÇMİŞİ\r\n \r\n \r\n GERİ\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {destination &&\r\n (ServiceType === 'Msisdn' || ServiceType === 'Call' ? numberFormat(destination || '') : destination)}\r\n \r\n \r\n {loading\r\n ? \r\n \r\n \r\n
\r\n \r\n : \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default HistoryModal","import { domain } from './domain'\r\nimport axios from 'axios'\r\n\r\nexport const getPermissionMarketingAccountCounts = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/GetPermissionMarketingAccountCounts', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getPermissionMarketingAccountPrepaidPurchaseInfo = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/GetPermissionMarketingAccountPrepaidPurchaseInfo', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getPermissionMarketingItemStatusDateSummary = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/GetPermissionMarketingItemStatusDateSummary', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getPermissionMarketingItemStatusDateRateSummary = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/GetPermissionMarketingItemStatusDateRateSummary', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getPermissionMarketingItemStatusDateRateWeeklySummary = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/GetPermissionMarketingItemStatusDateRateWeeklySummary', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getPermissionMarketingItemStatuses = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/GetPermissionMarketingItemStatuses', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const setPermissionMarketingItemStatuses = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/SetPermissionMarketingItemStatuses', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const insertPermissionItemFromClipboard = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/InsertPermissionItemFromClipboard', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const uploadFile = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/UploadFile', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getPermissionMarketingBulkFileTransferList = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/GetPermissionMarketingBulkFileTransferList', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const blockedNumberGetList = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/BlockedNumberGetList', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const blockedNumberDeleteList = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/BlockedNumberDeleteList', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const blockedNumberListOperation = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/BlockedNumberListOperation', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getBlockedListExcel = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/GetBlockedListExcel', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getPermissionMarketingItemStatusesHistory = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/GetPermissionMarketingItemStatusesHistory', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getIysPushErrorCodeInfoList = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/GetIysPushErrorCodeInfoList', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getIysPushStatusInfoList = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/GetIysPushStatusInfoList', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getPermissionMarketingListExcel = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Permission/GetPermissionMarketingListExcel', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}","import React, { useState } from 'react'\r\n\r\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\r\nimport { insertPermissionItemFromClipboard } from '../../_services/permissions.js'\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem'\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport MuiTableCell from \"@material-ui/core/TableCell\";\r\nimport { DateTimePicker } from \"@material-ui/pickers\";\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport { checkResultResponse } from '_helpers/notification.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\nimport { CircularProgress } from '@material-ui/core';\r\n\r\n\r\nconst TableCell = withStyles({\r\n root: {\r\n borderBottom: \"none\"\r\n }\r\n})(MuiTableCell);\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n tableCont: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n marginTop: 100\r\n }\r\n}));\r\n\r\nconst InsertPermissionItemFromClipboardDialog = props => {\r\n const [Content, SetContent] = useState('')\r\n const [recipienttype, setRecipienttype] = useState('BIREYSEL')\r\n const [_Date, _SetDate] = useState('')\r\n const [consentsource, setConsentsource] = useState('')\r\n const [status, setStatus] = useState('OptedOut')\r\n const [alert, setAlert] = useState('')\r\n const [saveLoading, setSaveLoading] = useState(false)\r\n const { open, toggle, sessionId, contextSessionId,\r\n openSB, setOpenSB, message, setMessage } = props\r\n const classes = useStyles();\r\n\r\n const handleSubmit = () => {\r\n if (_Date === '' && recipienttype === 'TACIR') _Date = null;\r\n const ClipBoardData = Content.split(/\\r?\\n/)\r\n if (ClipBoardData[0] === '') {\r\n setAlert('Lütfen en az bir numara ya da adres ekleyiniz.')\r\n } else if ((_Date === '' || _Date === null) && recipienttype !== 'TACIR') {\r\n setAlert('Lütfen izin tarihini giriniz.')\r\n } else {\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n ServiceType: \"Msisdn\",\r\n recipienttype,\r\n ConsentDate: _Date,\r\n consentsource,\r\n status,\r\n ClipBoardData\r\n }\r\n setSaveLoading(true)\r\n insertPermissionItemFromClipboard(data)\r\n .then(res => {\r\n setSaveLoading(false)\r\n toggle()\r\n if (checkResultResponse(res, null, null, 'İzin bilgisi işlemi gerçekleştirilemedi.')) {\r\n setOpenSB(true)\r\n setMessage('İşlem başarılı')\r\n SetContent('')\r\n setRecipienttype('BIREYSEL')\r\n _SetDate('')\r\n setConsentsource('')\r\n setStatus('OptedOut')\r\n }\r\n else {\r\n setOpenSB(true)\r\n setMessage('İşlem başarısız')\r\n SetContent('')\r\n setRecipienttype('BIREYSEL')\r\n _SetDate('')\r\n setConsentsource('')\r\n setStatus('OptedOut')\r\n }\r\n })\r\n .catch(err => {\r\n setSaveLoading(false)\r\n alertResponseError(err, 'İzin bilgisi işlemi gerçekleştirilemedi.')\r\n })\r\n }\r\n }\r\n\r\n return (\r\n \r\n İzinli Pazarlama - Yeni Kayıt Ekleme Güncelleme \r\n \r\n \r\n \r\n \r\n Gönderim listenizde bulunan veya bir şekilde daha sonra eklenebilecek numaralardan özellikle gönderime izin verilmesi ya da özellikle gönderime izin verilmemesini istediğiniz\r\n numaraları ekleyerek numaraya gönderime izin verilmesini ya da numara gönderim listenizde bulunsa bile numaraya gönderimin engellenmesini sağlayabilirsiniz.\r\n \r\n \r\n İzin durumu değiştirilecek numaraları her bir satırda tek bir telefon numarası ya da e-posta adresi olacak şekilde girerek değişiklik gerçekleştirebilirsiniz. Tek seferde en fazla 1000 numara üzerinden işlem yapınız.\r\n \r\n \r\n {alert !== '' &&\r\n \r\n \r\n \r\n }\r\n \r\n SetContent(e.target.value)}\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n Alıcı Tipi : \r\n \r\n setRecipienttype(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Bireysel \r\n Tacir \r\n \r\n \r\n \r\n \r\n İzin Durumu Tarihi : \r\n \r\n {\r\n _SetDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n İzin Kaynağı : \r\n \r\n setConsentsource(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Fiziksel Ortam \r\n Islak İmza \r\n WEB \r\n Çağrı Merkezi \r\n Sosyal Medya \r\n Eposta \r\n Mesaj \r\n Mobil \r\n E-ortam \r\n Etkinlik \r\n 1 Mayıs 2015 Öncesi \r\n ATM Cihazı \r\n İYS (3338) \r\n İYS (Çağrı Merkezi) \r\n İYS (Web) \r\n İYS (Web-Yeni) \r\n İYS (Mobil) \r\n İYS (Kısa Link) \r\n \r\n \r\n \r\n \r\n Aksiyon : \r\n \r\n setStatus(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n İzinsiz Ekle/Güncelle \r\n İzinli Ekle/Güncelle \r\n {/* Belirsiz */}\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 {saveLoading\r\n ? \r\n :\r\n \r\n Gönder\r\n \r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default InsertPermissionItemFromClipboardDialog","import React, { useState, useEffect } from 'react'\r\n\r\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\r\nimport { setPermissionMarketingItemStatuses } from '../../_services/permissions.js'\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem'\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport MuiTableCell from \"@material-ui/core/TableCell\";\r\nimport { DateTimePicker } from \"@material-ui/pickers\";\r\nimport { numberFormat } from 'formats/number.js';\r\nimport { CircularProgress } from '@material-ui/core';\r\nimport { checkResultResponse } from '_helpers/notification.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\n\r\nconst TableCell = withStyles({\r\n root: {\r\n borderBottom: \"none\"\r\n }\r\n})(MuiTableCell);\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n tableCont: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n marginTop: 100\r\n }\r\n}));\r\n\r\nconst EditPermissionDialog = props => {\r\n const [Content, SetContent] = useState('')\r\n const [recipienttype, setRecipienttype] = useState('BIREYSEL')\r\n const [_Date, _SetDate] = useState('')\r\n const [consentsource, setConsentsource] = useState('')\r\n const [status, setStatus] = useState(3)\r\n const [saveLoading, setSaveLoading] = useState(false)\r\n\r\n const { open, toggle, sessionId, contextSessionId, record, handleGetData, ServiceType } = props\r\n const classes = useStyles();\r\n\r\n useEffect(() => {\r\n if (record.destination) {\r\n setRecipienttype(record.recipientType)\r\n _SetDate(moment(record.permissionDate).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n setConsentsource(record.consentSource)\r\n setStatus(record.status)\r\n }\r\n }, [record])\r\n\r\n const handleSubmit = () => {\r\n const ClipBoardData = Content.split(/\\r?\\n/)\r\n const AuthData = {\r\n sessionId,\r\n contextSessionId,\r\n }\r\n const data = {\r\n AuthData,\r\n ServiceType,\r\n ChangeStatusItem: {\r\n Destination: record.destination,\r\n Status: status,\r\n ConsentDate: _Date,\r\n ConsentSource: consentsource,\r\n RecipientType: recipienttype\r\n }\r\n }\r\n setSaveLoading(true)\r\n setPermissionMarketingItemStatuses(data)\r\n .then(res => {\r\n setSaveLoading(false)\r\n if (checkResultResponse(res, null, null, 'İzin bilgisinde güncelleme yapılamadı.')) {\r\n toggle()\r\n handleGetData({}, {})\r\n }\r\n })\r\n .catch(err => {\r\n setSaveLoading(false)\r\n alertResponseError(err, 'İzin bilgisinde güncelleme yapılamadı.')\r\n })\r\n }\r\n\r\n\r\n return (\r\n \r\n İzinli Pazarlama - Kayıt Güncelleme \r\n \r\n \r\n \r\n \r\n {ServiceType === 'Msisdn' || ServiceType === 'Call' ? numberFormat(record.destination || '') : record.destination}\r\n \r\n \r\n \r\n \r\n Yukarıdaki {ServiceType === 'Email' ? 'adresin' : 'numaranın'} durumu {record.status == 1 ? '\"İzinli\"' : '\"İzinsiz\"'} olarak kayıtlıdır. Değiştirmek için seçiminizi yapıp \"Kaydet\"e tıklayınız. İzin Durum Tarihini en fazla 3 iş günü içeisinde olacak şekilde giriniz.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Alıcı Tipi : \r\n \r\n setRecipienttype(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'Alıcı Tipi : ' }}\r\n >\r\n Bireysel \r\n Tacir \r\n \r\n \r\n \r\n \r\n İzin Durumu Tarihi : \r\n \r\n {\r\n _SetDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm:ss'\r\n />\r\n \r\n \r\n \r\n İzin Kaynağı : \r\n \r\n setConsentsource(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Kaynağı : ' }}\r\n >\r\n Fiziksel Ortam \r\n Islak İmza \r\n Web \r\n Çağrı Merkezi \r\n Sosyal Medya \r\n Eposta \r\n Mesaj \r\n Mobil \r\n E-ortam \r\n Etkinlik \r\n 1 Mayıs 2015 Öncesi \r\n ATM Cihazı \r\n İYS (Kısa Mesaj) \r\n İYS (Çağrı Merkezi) \r\n İYS (Web) \r\n İYS (Web-Yeni) \r\n İYS (Mobil) \r\n İYS (E-posta) \r\n İYS (AHS Hat Kapama Bildirimi) \r\n \r\n \r\n \r\n \r\n Aksiyon : \r\n \r\n setStatus(parseInt(e.target.value))}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'Aksiyon : ' }}\r\n >\r\n İzinsiz Ekle/Güncelle \r\n İzinli Ekle/Güncelle \r\n {/* Belirsiz */}\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 {saveLoading\r\n ? \r\n :\r\n <>\r\n \r\n KAYDET\r\n \r\n \r\n İPTAL\r\n \r\n >\r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default EditPermissionDialog","import React, { useState, useEffect } from 'react';\r\n\r\nimport {\r\n getPermissionMarketingItemStatuses, getIysPushErrorCodeInfoList, getIysPushStatusInfoList,\r\n getPermissionMarketingListExcel\r\n} from '../../_services/permissions.js'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport {\r\n SortingState,\r\n PagingState,\r\n CustomPaging\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableColumnResizing\r\n} from '@devexpress/dx-react-grid-material-ui';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy'\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport HistoryIcon from '@material-ui/icons/History';\r\nimport Box from '@material-ui/core/Box';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Slide from '@material-ui/core/Slide';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport { DatePicker } from \"@material-ui/pickers\";\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport styles from \"assets/jss/material-dashboard-react/components/importFileDialog.js\"\r\nimport HistoryDialog from './HistoryDialog'\r\nimport InsertPermissionItemFromClipboardDialog from \"./InsertPermissionItemFromClipboardDialog.js\";\r\nimport EditPermissionDialog from \"./EditPermissionDialog.js\";\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport MuiAlert from '@material-ui/lab/Alert';\r\nimport { numberFormat } from '../../formats/number.js'\r\nimport { alertErrorText } from '_helpers/notification.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\nimport { checkResponse } from '_helpers/notification.js';\r\n\r\nfunction Alert(props) {\r\n return ;\r\n}\r\n\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return ;\r\n});\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\n\r\nconst MarketingListDialog = (props) => {\r\n const [list, setList] = useState([])\r\n const [count, setCount] = useState(0)\r\n const [loading, setLoading] = useState(false)\r\n const [iysPushErrorCodeListLoading, setIysPushErrorCodeListLoading] = useState(false)\r\n const [iysPushStatusInfoListLoading, setIysPushStatusInfoListLoading] = useState(false)\r\n const [iysPushErrorCodeInfoList, setIysPushErrorCodeInfoList] = useState([])\r\n const [iysPushStatusInfoList, setIysPushStatusInfoList] = useState([])\r\n\r\n const [historyDialog, setHistoryDialog] = useState(false)\r\n const [permsource, setPermsource] = useState(1)\r\n const [StartDate, SetStartDate] = useState('')\r\n const [EndDate, SetEndDate] = useState('')\r\n const [recipienttype, setRecipienttype] = useState('BIREYSEL')\r\n const [status, setStatus] = useState('')\r\n const [consentsource, setConsentsource] = useState('')\r\n const [destination, setDestination] = useState('')\r\n const [source, setSource] = useState('')\r\n const [iyspushstatus, setIyspushstatus] = useState('')\r\n const [iyspusherrorcode, setIyspusherrorcode] = useState('')\r\n const [fileLoad, setFileLoad] = useState(false)\r\n const [openSB, setOpenSB] = React.useState(false);\r\n const [message, setMessage] = useState('')\r\n const [ServiceType, SetServiceType] = useState(\"Msisdn\")\r\n //grid\r\n const [PageSize, SetPageSize] = useState(30)\r\n const [PageNumber, SetPageNumber] = useState(0)\r\n const [SortFields, SetSortFields] = useState([\r\n {\r\n FieldName: \"PermDate\",\r\n Direction: \"Descending\"\r\n },\r\n {\r\n FieldName: \"Msisdn\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n const [sorting, setSorting] = useState([])\r\n const [Direction, SetDirection] = useState('')\r\n\r\n //dialogs\r\n const [editPermissionDialog, setEditPermissionDialog] = useState(false)\r\n const [record, setRecord] = useState({})\r\n\r\n const [clipBoard, setClipBoard] = useState(false)\r\n\r\n const classes = useStyles()\r\n const { open, toggle, toggle2, contextSessionId, sessionId,\r\n UserId, SysAccountId, CustomerId, hasIys } = props\r\n\r\n useEffect(() => {\r\n const data = { contextSessionId, sessionId }\r\n setIysPushErrorCodeListLoading(true)\r\n getIysPushErrorCodeInfoList(data)\r\n .then(res => {\r\n setIysPushErrorCodeListLoading(false)\r\n if (checkResponse(res, null, null, 'İYS\\'ye aktarım hata kodları listesi getirilemedi.')) {\r\n setIysPushErrorCodeInfoList(res.data.iysPushErrorCodeInfoList)\r\n }\r\n })\r\n .catch(err => {\r\n setIysPushErrorCodeListLoading(false)\r\n alertResponseError(err, 'İYS\\'ye aktarım hata kodları listesi getirilemedi.')\r\n })\r\n }, [])\r\n\r\n useEffect(() => {\r\n const data = { contextSessionId, sessionId }\r\n setIysPushStatusInfoListLoading(true)\r\n getIysPushStatusInfoList(data)\r\n .then(res => {\r\n setIysPushStatusInfoListLoading(false)\r\n if (checkResponse(res, null, null, 'İYS\\'ye aktarım durum kodları listesi getirilemedi.')) {\r\n setIysPushStatusInfoList(res.data.iysPushStatusInfoList)\r\n }\r\n })\r\n .catch(err => {\r\n setIysPushStatusInfoListLoading(false)\r\n alertResponseError(err, 'İYS\\'ye aktarım durum kodları listesi getirilemedi.')\r\n })\r\n }, [])\r\n\r\n const historyDialogToggle = () => {\r\n setHistoryDialog(!historyDialog)\r\n }\r\n\r\n const handleEditPermissionDialogToggle = () => {\r\n setEditPermissionDialog(!editPermissionDialog)\r\n }\r\n\r\n const handleClipBoardToggle = () => {\r\n setClipBoard(!clipBoard)\r\n }\r\n\r\n useEffect(() => {\r\n if (open) {\r\n handleAll()\r\n }\r\n }, [open])\r\n\r\n useEffect(() => {\r\n handleGetData({}, {})\r\n }, [])\r\n\r\n const searchEx = () => {\r\n let expression = ''\r\n expression += `{recipienttype:${recipienttype}}`\r\n if (status !== '') {\r\n expression += `{status:${status}}`\r\n }\r\n if (StartDate !== '' || EndDate !== '') {\r\n expression += `{permdate:${(StartDate !== '' ? moment(StartDate).format('DD.MM.YYYY HH:mm:ss') : '') + '..' + (EndDate !== '' ? moment(EndDate).format('DD.MM.YYYY HH:mm:ss') : '')}}`\r\n }\r\n if (consentsource !== '') {\r\n expression += `{consentsource:${consentsource}}`\r\n }\r\n if (source !== '') {\r\n expression += `{permsource:${source}}`\r\n }\r\n if (destination !== '') {\r\n expression += `{destination:${destination}}`\r\n }\r\n if (iyspushstatus !== '') {\r\n expression += `{iyspushstatus:${iyspushstatus}}`\r\n }\r\n if (iyspusherrorcode !== '') {\r\n expression += `{iyspusherrorcode:${iyspusherrorcode}}`\r\n }\r\n return expression\r\n }\r\n\r\n const handleGetData = (q1, q2) => {\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n ServiceType,\r\n ListRequest: {\r\n PageSize,\r\n PageNumber,\r\n SortFields,\r\n SearchExpression: searchEx(),\r\n CalculateTotalRecordCount: true,\r\n ...q2\r\n },\r\n ...q1\r\n }\r\n setLoading(true)\r\n getPermissionMarketingItemStatuses(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'İzin durumları listesi getirilirken bir problemle karşılaşıldı.')) {\r\n setList(res.data.statuses)\r\n setCount(res.data.totalRecordCount)\r\n }\r\n else {\r\n setList([])\r\n setCount(0)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n setList([])\r\n setCount(0)\r\n alertResponseError(err, 'İzin durumları listesi getirilirken bir problemle karşılaşıldı.')\r\n })\r\n }\r\n\r\n const columns = [\r\n { name: 'destination', title: 'Alıcı' },\r\n { name: 'statusDescription', title: 'Durumu' },\r\n { name: 'sourceDescription', title: 'Kaynak' },\r\n { name: 'permissionDate', title: 'Tarih' },\r\n { name: 'consentSource', title: 'İzin Kaynağı' },\r\n { name: \"iysPushStatus\", title: \"İYS'ye Aktarım Durumu\" },\r\n { name: \"iysPushErr\", title: \"İYS'ye Aktarım Hatası\" },\r\n { name: 'action', title: 'İşlem' },\r\n ];\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: 'destination', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'statusDescription', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'sourceDescription', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'permissionDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'consentSource', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'iysPushStatus', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'iysPushErr', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'action', width: 120, align: 'center' },\r\n ]);\r\n\r\n const handleHistory = (record) => {\r\n setRecord(record)\r\n historyDialogToggle()\r\n }\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return {\r\n destination: ServiceType === 'Msisdn' || ServiceType === 'Call' ? numberFormat(l.destination || '') : l.destination,\r\n statusDescription: l.statusDescription,\r\n sourceDescription: l.sourceDescription,\r\n permissionDate: (l.permissionDate && moment(l.permissionDate).format('DD.MM.YYYY HH:mm')),\r\n iysPushStatus: hasIys ? l.iysPushStatus + (l.iysPushStatusDescription ? ' (' + l.iysPushStatusDescription + ')' : '') : 'İYS hizmeti alınmamaktadır',\r\n consentSource: l.consentSource,\r\n iysPushErr: hasIys ? l.iysPushErrorCode + (l.iysPushErrorCodeDescription ? ' (' + l.iysPushErrorCodeDescription + ')' : \"\") : '',\r\n action: <>\r\n \r\n {\r\n setRecord(l)\r\n handleEditPermissionDialogToggle()\r\n }} >\r\n \r\n \r\n \r\n \r\n handleHistory(l)} >\r\n \r\n \r\n \r\n >\r\n }\r\n })\r\n )\r\n }\r\n\r\n const handleExcelExport = () => {\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n ServiceTypeByDestination: ServiceType,\r\n UserId,\r\n SysAccountId,\r\n CustomerId,\r\n SearchExpression: searchEx()\r\n }\r\n setFileLoad(true)\r\n getPermissionMarketingListExcel(data)\r\n .then((res) => {\r\n setFileLoad(false)\r\n if (res && res.data) {\r\n if (res.data.fileDownloadUrl) {\r\n const link = document.createElement('a');\r\n link.href = res.data.fileDownloadUrl\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n else {\r\n alertErrorText('İzinli pazarlama listesi dosyaya aktarılamadı. İndirme URL\\'i alınamadı.')\r\n }\r\n }\r\n else {\r\n alertErrorText('İzinli pazarlama listesi dosyaya aktarılamadı. Yanıt alınamadı.')\r\n }\r\n }).catch(err => {\r\n setFileLoad(false)\r\n alertResponseError(err, 'İzinli pazarlama listesi dosyaya aktarılamadı.')\r\n })\r\n }\r\n\r\n const handlePageSizeChange = (value) => {\r\n SetPageSize(value)\r\n SetPageNumber(0)\r\n handleGetData({}, { PageSize: value, PageNumber: 1 })\r\n }\r\n\r\n const handlePageChange = (value) => {\r\n SetPageNumber(value)\r\n handleGetData({}, { PageNumber: value + 1 })\r\n }\r\n\r\n const handleSort = params => {\r\n // if( params[0].columnName !== 'id'){\r\n // if(Direction === 'Ascending'){\r\n // handleGetData({},{ SortFields : [{FieldName: params[0].columnName, Direction: \"Descending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Descending\"}])\r\n // setSorting(params)\r\n // SetDirection('Descending')\r\n // }else{\r\n // handleGetData({},{ SortFields : [{FieldName: params[0].columnName, Direction: \"Ascending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Ascending\"}])\r\n // setSorting(params)\r\n // SetDirection('Ascending')\r\n // }\r\n // }else{\r\n // setSorting(params)\r\n // return\r\n // }\r\n }\r\n\r\n const handleAll = () => {\r\n SetStartDate('')\r\n SetEndDate('')\r\n setStatus('')\r\n setConsentsource('')\r\n setSource('')\r\n setDestination('')\r\n setIyspushstatus('')\r\n setIyspusherrorcode('')\r\n SetPageNumber(0)\r\n handleGetData({}, { SearchExpression: \"{recipienttype:BIREYSEL}\" })\r\n }\r\n\r\n const handleClose = (event, reason) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n\r\n setOpenSB(false);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n İZİNLİ PAZARLAMA LİSTESİ\r\n \r\n \r\n {fileLoad\r\n ? \r\n : \r\n \r\n \r\n }\r\n \r\n \r\n Ekle\r\n \r\n {\r\n toggle()\r\n toggle2()\r\n }}>\r\n Dosyadan Ekle\r\n \r\n \r\n GERİ\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n İzin Türü :\r\n \r\n \r\n \r\n {\r\n const { value } = e.target\r\n setPermsource(value)\r\n if (value === 1) {\r\n SetServiceType('Msisdn')\r\n SetSortFields([\r\n {\r\n FieldName: \"PermDate\",\r\n Direction: \"Descending\"\r\n },\r\n {\r\n FieldName: \"Msisdn\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n }\r\n if (value === 2) {\r\n SetServiceType('Email')\r\n SetSortFields([\r\n {\r\n FieldName: \"PermDate\",\r\n Direction: \"Descending\"\r\n },\r\n {\r\n FieldName: \"Email\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n }\r\n if (value === 3) {\r\n SetServiceType('Call')\r\n SetSortFields([\r\n {\r\n FieldName: \"PermDate\",\r\n Direction: \"Descending\"\r\n },\r\n {\r\n FieldName: \"Msisdn\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n }\r\n }}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Mesaj \r\n E-posta \r\n Arama \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Alıcı Tipi :\r\n \r\n \r\n \r\n setRecipienttype(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Bireysel \r\n Tacir \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Durumu :\r\n \r\n \r\n \r\n setStatus(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n İzinsiz \r\n İzinli \r\n Belirsiz \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Ekleme Kaynağı :\r\n \r\n \r\n \r\n setSource(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n SMS \r\n Landing Page \r\n API \r\n Anında Cevap \r\n Firma Özel Talebi \r\n Hatalı Katılım Kontrolü \r\n BİP (MO) \r\n BİP (TKP) \r\n İYS \r\n Web Arayüzü \r\n Web Arayüzü (Dosyadan) \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n İYS'ye Aktarım Durum Kodu :\r\n \r\n \r\n \r\n {iysPushStatusInfoListLoading\r\n ? \r\n \r\n
\r\n :\r\n setIyspushstatus(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n \r\n {iysPushStatusInfoList.map(item => {\r\n return (\r\n {item.iysPushStatus}) {item.explanation} \r\n )\r\n })}\r\n \r\n}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n İYS'ye Aktarım Hata Kodu :\r\n \r\n \r\n \r\n {iysPushErrorCodeListLoading\r\n ? \r\n \r\n
\r\n :\r\n setIyspusherrorcode(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n \r\n {iysPushErrorCodeInfoList.map(item => {\r\n return (\r\n {item.errorCode}) {item.description} \r\n )\r\n })}\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Tarihi :\r\n \r\n \r\n \r\n \r\n \r\n {\r\n SetStartDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n SetEndDate(moment().format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY'\r\n />\r\n \r\n \r\n {\r\n SetEndDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY'\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n İzin Kaynağı :\r\n \r\n \r\n \r\n setConsentsource(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Fiziksel Ortam \r\n Islak İmza \r\n WEB \r\n Çağrı Merkezi \r\n Sosyal Medya \r\n E-posta \r\n Mesaj \r\n Mobil \r\n E-ortam \r\n Etkinlik \r\n 1 Mayıs 2015 Öncesi \r\n ATM Cihazı \r\n İYS (Kısa Mesaj) \r\n İYS (Çağrı Merkezi) \r\n İYS (Web) \r\n İYS (Web-Yeni) \r\n İYS (E-posta) \r\n İYS (AHS Hat Kapama Bildirimi) \r\n \r\n \r\n \r\n \r\n \r\n setDestination(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { handleGetData({}, {}) } }\r\n }}\r\n />\r\n \r\n \r\n handleGetData({}, {})}>\r\n Ara\r\n \r\n \r\n \r\n \r\n Tümü\r\n \r\n \r\n \r\n \r\n \r\n {loading\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 {message}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default MarketingListDialog","import React from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport Box from '@material-ui/core/Box';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n link : {\r\n textAlign: \"center\"\r\n },\r\n bold : {\r\n fontSize : \"bold\"\r\n },\r\n success : {\r\n color : \"green\"\r\n },\r\n danger : {\r\n color : \"red\"\r\n }\r\n}));\r\n\r\nconst ResultDialog = props => {\r\n\r\n const { open, toggle, result } = props\r\n const classes = useStyles();\r\n\r\n const bytesToKilBytes = (bytes, digits) => digits ? (bytes / (1024)).toFixed(digits) : (bytes / (1024)).toFixed(2);\r\n\r\n return(\r\n \r\n Dosya Aktarımı Sonucu \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n İşlem Kodu \r\n \r\n \r\n {result.resultCode}\r\n \r\n \r\n \r\n \r\n Orjinal dosya adı \r\n \r\n \r\n {result.originalFileName}\r\n \r\n \r\n \r\n \r\n Dosya adı \r\n \r\n \r\n {result.uploadedFileName}\r\n \r\n \r\n \r\n \r\n Dosya boyutu \r\n \r\n \r\n {(bytesToKilBytes(result.uploadedFileSize, 2) || '').toLocaleString(\"tr-TR\")} KB\r\n \r\n \r\n \r\n \r\n Toplam Kayıt \r\n \r\n \r\n {(result.totalRecordCount || '').toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n Geçerli Kayıt \r\n \r\n \r\n {(result.validRecordCount || '').toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n Geçersiz Kayıt \r\n \r\n \r\n {(result.invalidRecordCount || '').toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n Hatalı cep telefonu adedi \r\n \r\n \r\n {(result.phoneNumberFormatErrorCount || '').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n \r\n \r\n Tekrarlı cep telefonu adedi \r\n \r\n \r\n {(result.phoneNumberDuplicateErrorCount || '').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n \r\n \r\n Hatalı e-posta adedi \r\n \r\n \r\n {(result.emailAddressIsInvalidErrorCount || '').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n \r\n \r\n Tekrarlı e-posta adedi \r\n \r\n \r\n {(result.emailAddressIsDuplicatedErrorCount || '').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n {result.importDataNoticeListFilePath &&\r\n \r\n \r\n Aktarım Hata ve Uyarıları Listesini İndirmek İçin Tıklayınız\r\n \r\n \r\n }\r\n \r\n \r\n \r\n Kapat\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ResultDialog","import React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux'\r\nimport { uploadFile } from '../../_services/permissions.js'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Box from '@material-ui/core/Box';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Slide from '@material-ui/core/Slide';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport ResultDialog from './ResultDialog.js'\r\nimport Button from '../CustomButtons/Button.js';\r\n\r\n\r\nimport styles from \"assets/jss/material-dashboard-react/components/importFileDialog.js\"\r\nimport { InfoOutlined } from '@material-ui/icons';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\nimport { checkResultResponse } from '_helpers/notification.js';\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return ;\r\n});\r\n\r\nconst BulkFileTransferDialog = (props) => {\r\n const [ServiceTypeByDestination, SetServiceTypeByDestination] = useState(0)\r\n const [iysConsentType, setIysConsentType] = useState('MESAJ')\r\n const [iysRecipientType, setIysRecipientType] = useState('BIREYSEL')\r\n const [isAcceptedByUserSelection, setIsAcceptedByUserSelection] = useState(false)\r\n const [iysCode, setIysCode] = useState('')\r\n const [iysBrandCode, setIysBrandCode] = useState('')\r\n const [resultDialog, setResultDialog] = useState(false)\r\n const [result, setResult] = useState({})\r\n const [loading, setLoading] = useState(false)\r\n const classes = useStyles()\r\n const [alert, setAlert] = useState('')\r\n const { open, toggle, sessionId, contextSessionId } = props\r\n\r\n const user = props.user.user\r\n const { customerInfo, userInfo, customerServiceType, userLoginName } = user\r\n const { customerId, sysAccountId, sysCustomerId, permissionMarketingAccountInfo } = customerInfo\r\n const { userId, sysUserId } = userInfo\r\n\r\n useEffect(() => {\r\n if (permissionMarketingAccountInfo) {\r\n if (permissionMarketingAccountInfo.iysAccountInfo) {\r\n setIysCode(permissionMarketingAccountInfo.iysAccountInfo.iysCode || \"\")\r\n setIysBrandCode(permissionMarketingAccountInfo.iysAccountInfo.iysBrandCode ? permissionMarketingAccountInfo.iysAccountInfo.iysBrandCode[0] : '')\r\n }\r\n }\r\n }, [user])\r\n\r\n const Message = () => {\r\n return (\r\n <>\r\n \r\n Yükleme yaparken aşağıdaki maddelerde belirtilen uyarılara dikkat ediniz. \r\n \r\n \r\n Farklı formatta ya da hatalı girdiler kabul edilmeyecektir ve dosyanız yüklenemeyecektir.\r\n \r\n \r\n \r\n Her izin tipi (MESAJ, EPOSTA, ARAMA) ve varsa alıcı tipi (BIREYSEL, TACIR) için ayrı dosyalar oluşturulmalıdır.\r\n \r\n \r\n Yükleyeceğiniz dosya Excel ya da metin dosyası olabilir. 1 milyon üstü kayıt sayısına sahip olduğu durumda metin dosyası olması tavsiye edilir.\r\n \r\n \r\n Excel dosyası olarak yüklenecekse Excel dosyasında tek sayfa olmalıdır.\r\n \r\n \r\n Metin dosyası olarak yüklenecekse metin dosyasında alanlar TAB karakteri ile birbirinden ayrılmalıdır.\r\n \r\n \r\n Excel ya da metin dosya türünde her bir satırda bir kayıt bulunmalıdır. İlk satır başlık satırı olmalıdır. İkinci satırdan itibaren kayıtlar yer almalıdır.\r\n \r\n \r\n İlk sütunda izin tarihi, ikinci sütunda telefon numarası ya da email adresi, üçüncü sütunda izin kaynağı, dördüncü sütunda izin durumu yer almalıdır. Eğer İYS'de bayi tanımları mevcutsa; beşinci sütunda izin bir bayi üzerinden alındıysa iznin alındığı İYS bayi kodu, altıncı sütunda eğer alınan izin diğer bayilerin erişimine verilecekse bu bayilerin İYS bayi kodları virgülle ayrılmış şekilde girilir. Bayi ile ilgili bir giriş olmayacaksa beşinci ve altıncı sütun boş bırakılabilir.\r\n \r\n \r\n Tarih formatı gg.aa.yyyy HH:mm:ss şeklinde olmalıdır. gg: iki haneli gün, aa: iki haneli harf, yyyy: dört haneli yıl, HH: iki haneli saat, mm: iki haneli dakika, ss: iki haneli saniye şeklindedir. \r\n İzin tarihi aktarım yapılacak zamandan 3 iş günü kadar eski olabilir. Daha eski tarihli izinler kabul edilmemektedir. İYS'ye ilk defa izin yüklenecekse ve izin tarihi 1 Mayıs 2015'ten eski ise izin tarihi 01.05.2015 00:00:00 olarak girilmeli, izin kaynağı olarak da 'HS_2015' girilmelidir.\r\n \r\n \r\n İzin kaynağı 'HS_2015', 'HS_FIZIKSEL_ORTAM', 'HS_ISLAK_IMZA', 'HS_ETKINLIK', 'HS_ATM', 'HS_EORTAM', 'HS_WEB', 'HS_MOBIL', 'HS_MESAJ', 'HS_EPOSTA', 'HS_CAGRI_MERKEZI', 'HS_SOSYAL_MEDYA', 'IYS_KISAMESAJ', 'IYS_CM', 'IYS_WEB', 'IYS_WEB_YENI', 'IYS_MOBIL', 'IYS_EPOSTA', 'IYS_AHS_HAT_KAPATMA' değerlerinden biri olmalıdır.\r\n \r\n \r\n İzin durumu 'ONAY' ya da 'RET' değerlerinden biri olmalıdır.\r\n \r\n \r\n \r\n Örnek Dosya İndirmek İçin Tıklayınız \r\n \r\n >\r\n )\r\n }\r\n\r\n const handleSubmitFile = (fd) => {\r\n setLoading(true)\r\n uploadFile(fd)\r\n .then(res => {\r\n setLoading(false)\r\n handleResultToggle()\r\n setResult(res.data)\r\n if (checkResultResponse(res, null, null, 'Dosya aktarılırken bir hata oluştu.')) {\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Dosya aktarılırken bir hata oluştu.')\r\n })\r\n }\r\n\r\n const handleFileUpload = (e) => {\r\n setAlert('')\r\n const file = e.target.files[0]\r\n const { name } = file\r\n const extension = name.split('.').pop()\r\n const whiteList = [\r\n \"xlsx\",\r\n \"xls\",\r\n \"txt\"\r\n ]\r\n const index = whiteList.indexOf(extension)\r\n if (index > - 1) {\r\n const fd = new FormData();\r\n fd.append('Filename', name)\r\n fd.append('File', file, name)\r\n fd.append('serviceTypeByDestination', ServiceTypeByDestination)\r\n fd.append('iysBrandCode', iysBrandCode)\r\n fd.append('sysUserId', sysUserId)\r\n fd.append('iysConsentType', iysConsentType)\r\n fd.append('customerId', customerId)\r\n fd.append('sysAccountId', sysAccountId)\r\n fd.append('userId', userId)\r\n fd.append('sysCustomerId', sysCustomerId)\r\n fd.append('iysRecipientType', iysRecipientType)\r\n fd.append('acceptedDate', moment().format('DD.MM.YYYY HH:mm:ss'))\r\n fd.append('iysCode', iysCode)\r\n fd.append('customerServiceType', customerServiceType)\r\n fd.append('userLoginName', userLoginName)\r\n fd.append('destination', '')\r\n fd.append('sessionId', sessionId)\r\n fd.append('contextSessionId', contextSessionId)\r\n fd.append('isAcceptedByUserSelection', isAcceptedByUserSelection)\r\n if (name) {\r\n handleSubmitFile(fd)\r\n }\r\n } else {\r\n setAlert('Desteklenmeyen Dosya Formatı')\r\n }\r\n }\r\n\r\n const handleResultToggle = () => {\r\n setResultDialog(!resultDialog)\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Toplu Dosya Transferİ\r\n \r\n \r\n GERİ\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n icon={InfoOutlined}\r\n color=\"warning\"\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 Dosyadaki İzin Tipi :\r\n \r\n \r\n \r\n setIysConsentType(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Mesaj \r\n E-posta \r\n Arama \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Dosyadaki Alıcı Tipi :\r\n \r\n \r\n \r\n setIysRecipientType(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Bireysel \r\n Tacir \r\n \r\n \r\n \r\n \r\n {alert !== '' &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n
İLETİ YÖNETİM SİSTEMİNE DATA AKTARIMI KONUSUNDA YÜKÜMLÜLÜKLER \r\n
\r\n \r\n Firma, kullanıcı adı ve şifrenin kendisi tarafından bildirilen yetkili kişiyle kişiye özel olarak paylaşılmış olduğunu bildiğini, yetkili kişi tarafından gerçekleştirilen bu işlemin kendi nam ve hesabına yapılmış sayıldığını, yetkili kişinin bu kapsamdaki ihlallerinden de doğrudan sorumlu olduğunu, ve bunlar ile yetkisi olmayan kişiler tarafından şifrenin kullanılması nedeniyle ortaya çıkabilecek tüm zararlara ilişkin sorumluluğun kendisine ait olduğunu kabul, beyan ve taahhüt eder.\r\n\r\n \r\n \r\n Firma yükleyeceği dosyadaki verilerin doğru ve eksiksiz olmasından ve verilerin İleti Yönetim Sistemi A.Ş. tarafından belirlenen kriterlere/parametrelere uygun olarak hazırlanmasından münferiden sorumlu olduğunu; Codec arayüzüne yüklenen verilerin teknik entegrasyon vasıtasıyla olduğu gibi İleti Yönetim Sistemi’ne aktarılacağını bildiğini; verilerin yanlış, eksik veya hatalı girilmiş olması sebebiyle toplu data aktarımının tamamen veya kısmen yapılamaması, eksik veya hatalı yapılmasından dolayı doğabilecek tüm zarar ve ziyandan münferiden sorumlu olduğunu; bu sebeple Codec’e karşı her türlü iddia, talep ve davadan peşinen feragat ettiğini kabul, beyan ve taahhüt eder.\r\n\r\n \r\n \r\n Firma, Codec tarafından yapılacak işlemin yalnızca Firma'ya ait izinli veritabanının aktarımına aracılık olduğunu bildiğini; Codec'in söz konusu verilerin hukuken geçerliliği, doğruluğu konusunda herhangi bir sorumluluk üstlenmediğini; veri aktarımına aracılık işlemi ve sonrasında Firma adına herhangi bir izinli veritabanı yönetimi veya karaliste yönetimi gibi bir sorumluluk üstlenmedini kabul, beyan ve taahhüt eder.\r\n\r\n \r\n \r\n Firma, veri aktarımı sırasında İYS AŞ'den kaynaklanan her türlü hizmet kusuru ve tüm aksaklıklar karşısında tek muhatabın İYS A.Ş. olduğunu ve CODEC'in bu durumlardan hiçbir şekilde sorumlu tutulamayacağını bildiğini kabul, beyan ve taahhüt eder. \"\r\n \r\n \r\n
\r\n \r\n \r\n setIsAcceptedByUserSelection(!isAcceptedByUserSelection)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n } label=\"Firma adına bu işlemi yapmaya yetkili olduğumu ve data aktarımına ilişkin yukarıda belirtilen hususları okuduğumu, anladığımı, şahsım ve firmam adına kabul ettiğimi beyan ederim.\" />\r\n \r\n \r\n {loading\r\n ?\r\n \r\n \r\n
\r\n : \r\n Dosya Seç ve Yükle\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer } = state\r\n const { user } = userReducer\r\n return { user }\r\n}\r\n\r\nexport default connect(mapStateToProps)(BulkFileTransferDialog)","import React, { useState, useEffect } from 'react';\r\n\r\nimport { getPermissionMarketingBulkFileTransferList } from '../../_services/permissions.js'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport {\r\n SortingState,\r\n PagingState,\r\n CustomPaging,\r\n // SelectionState\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n // TableSelection,\r\n TableColumnResizing\r\n} from '@devexpress/dx-react-grid-material-ui';\r\n// import IconButton from '@material-ui/core/IconButton';\r\n// import EditIcon from '@material-ui/icons/Edit';\r\n// import Tooltip from '@material-ui/core/Tooltip';\r\n// import HistoryIcon from '@material-ui/icons/History';\r\nimport Box from '@material-ui/core/Box';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Slide from '@material-ui/core/Slide';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\n// import CircularProgress from '@material-ui/core/CircularProgress';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport { DatePicker } from \"@material-ui/pickers\";\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\n// import SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport MuiAlert from '@material-ui/lab/Alert';\r\nimport InsertPermissionItemFromClipboardDialog from \"./InsertPermissionItemFromClipboardDialog.js\";\r\nimport EditPermissionDialog from \"./EditPermissionDialog.js\";\r\nimport styles from \"assets/jss/material-dashboard-react/components/importFileDialog.js\"\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport { checkResponse } from '_helpers/notification.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\nimport { CircularProgress } from '@material-ui/core';\r\n\r\nfunction Alert(props) {\r\n return ;\r\n}\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return ;\r\n});\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\n\r\nconst BulkFileTransferListDialog = (props) => {\r\n const [list, setList] = useState([])\r\n const [count, setCount] = useState(0)\r\n const [loading, setLoading] = useState(false)\r\n\r\n const [iysConsentType, setIysConsentType] = useState('')\r\n const [acceptedDate1, setAcceptedDate1] = useState('')\r\n const [acceptedDate2, setAcceptedDate2] = useState('')\r\n const [iysRecipientType, setIysRecipientType] = useState('')\r\n\r\n //\r\n const [fileName, setFileName] = useState('')\r\n const [iysBrandCode, setIysBrandCode] = useState('')\r\n\r\n const [openSB, setOpenSB] = useState(false)\r\n const [message, setMessage] = useState('')\r\n\r\n //grid\r\n const [PageSize, SetPageSize] = useState(30)\r\n const [PageNumber, SetPageNumber] = useState(0)\r\n const [SortFields, SetSortFields] = useState([\r\n {\r\n FieldName: \"AcceptedDate\",\r\n Direction: \"Descending\"\r\n },\r\n {\r\n FieldName: \"FileName\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n const [sorting, setSorting] = useState([])\r\n const [Direction, SetDirection] = useState('')\r\n\r\n //dialogs\r\n const [editPermissionDialog, setEditPermissionDialog] = useState(false)\r\n const [record, setRecord] = useState({})\r\n\r\n const [clipBoard, setClipBoard] = useState(false)\r\n\r\n const classes = useStyles()\r\n const { open, toggle, toggle2, contextSessionId, sessionId } = props\r\n\r\n const handleEditPermissionDialogToggle = () => {\r\n setEditPermissionDialog(!editPermissionDialog)\r\n }\r\n\r\n const handleClipBoardToggle = () => {\r\n setClipBoard(!clipBoard)\r\n }\r\n\r\n useEffect(() => {\r\n handleGetData({}, {})\r\n }, [])\r\n\r\n const handleGetData = (q1, q2) => {\r\n let legacySearchExpression = ''\r\n if (fileName !== '') {\r\n legacySearchExpression += `{fileName:${fileName}}`\r\n }\r\n if (iysConsentType !== '') {\r\n legacySearchExpression += `{iysConsentType:${iysConsentType}}`\r\n }\r\n if (iysRecipientType !== '') {\r\n legacySearchExpression += `{iysRecipientType:${iysRecipientType}}`\r\n }\r\n if (iysBrandCode !== '') {\r\n legacySearchExpression += `{iysBrandCode:${iysBrandCode}}`\r\n }\r\n if (iysBrandCode !== '') {\r\n legacySearchExpression += `{iysBrandCode:${iysBrandCode}}`\r\n }\r\n if (acceptedDate1 !== '' && acceptedDate2 !== '') {\r\n legacySearchExpression += `{acceptedDate:${acceptedDate1}..${acceptedDate2}}`\r\n }\r\n if (acceptedDate1 === '' && acceptedDate2 !== '') {\r\n legacySearchExpression += `{acceptedDate <= ${acceptedDate2}}`\r\n }\r\n if (acceptedDate1 !== '' && acceptedDate2 === '') {\r\n legacySearchExpression += `{acceptedDate >= ${acceptedDate1}}`\r\n }\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n // ServiceType : \"Msisdn\",\r\n ListRequest: {\r\n PageSize,\r\n PageNumber,\r\n SortFields,\r\n SearchExpression: legacySearchExpression,\r\n CalculateTotalRecordCount: true,\r\n ...q2\r\n },\r\n ...q1\r\n }\r\n setLoading(true)\r\n getPermissionMarketingBulkFileTransferList(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'Dosyadan toplu izin transferi listesi getirilemedi.')) {\r\n setList(res.data.list)\r\n setCount(res.data.totalRecordCount)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Dosyadan toplu izin transferi listesi getirilemedi.')\r\n })\r\n }\r\n\r\n const columns = [\r\n { name: 'fileName', title: 'Dosya Adı' },\r\n { name: 'statusDescription', title: 'Durumu' },\r\n { name: 'totalCount', title: 'Toplam Adet' },\r\n { name: 'insertDate', title: 'Eklenme Tarihi' },\r\n { name: 'iysBrandCode', title: 'Marka Kodu' },\r\n { name: \"iysConsentType\", title: \"İzin Tipi\" },\r\n { name: \"iysRecipientType\", title: \"Alıcı Tipi\" },\r\n ];\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: 'fileName', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'statusDescription', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'totalCount', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'insertDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'iysBrandCode', width: 'auto', align: 'center', wordWrapEnabled: true },\r\n { columnName: 'iysConsentType', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'iysRecipientType', width: 'auto', wordWrapEnabled: true }\r\n ]);\r\n\r\n const handleEdit = (record) => { \r\n }\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return {\r\n fileName: l.fileName,\r\n statusDescription: l.statusDescription,\r\n totalCount: (l.totalCount || '').toLocaleString(\"tr-TR\"),\r\n insertDate: moment(l.insertDate).format('DD.MM.YYYY HH:mm'),\r\n iysBrandCode: l.iysBrandCode,\r\n iysConsentType: l.iysConsentType,\r\n iysRecipientType: l.iysRecipientType,\r\n }\r\n })\r\n )\r\n }\r\n\r\n const handlePageSizeChange = (value) => {\r\n SetPageSize(value)\r\n SetPageNumber(0)\r\n handleGetData({}, { PageSize: value, PageNumber: 1 })\r\n }\r\n\r\n const handlePageChange = (value) => {\r\n SetPageNumber(value)\r\n handleGetData({}, { PageNumber: value + 1 })\r\n }\r\n\r\n const handleSort = params => {\r\n // if( params[0].columnName !== 'id'){\r\n // if(Direction === 'Ascending'){\r\n // handleGetData({},{ SortFields : [{FieldName: params[0].columnName, Direction: \"Descending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Descending\"}])\r\n // setSorting(params)\r\n // SetDirection('Descending')\r\n // }else{\r\n // handleGetData({},{ SortFields : [{FieldName: params[0].columnName, Direction: \"Ascending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Ascending\"}])\r\n // setSorting(params)\r\n // SetDirection('Ascending')\r\n // }\r\n // }else{\r\n // setSorting(params)\r\n // return\r\n // }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n TOPLU DOSYA TRANSFERİ LİSTESİ\r\n \r\n \r\n Ekle\r\n \r\n {\r\n toggle()\r\n toggle2()\r\n }}>\r\n Dosyadan Ekle\r\n \r\n \r\n GERİ\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n setFileName(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { handleGetData({}, {}) } },\r\n name: 'password',\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n İzin Tipi :\r\n \r\n \r\n \r\n setIysConsentType(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Bilinmiyor \r\n Mesaj \r\n E-posta \r\n Arama \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Alıcı Tipi :\r\n \r\n \r\n \r\n setIysRecipientType(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Bilinmiyor \r\n Bireysel \r\n Tacir \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Tarihi :\r\n \r\n \r\n \r\n \r\n \r\n {\r\n setAcceptedDate1(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY'\r\n />\r\n \r\n \r\n {\r\n setAcceptedDate2(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY'\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n e.target.value < 1 ? setIysBrandCode(1) : setIysBrandCode(parseInt(e.target.value))\r\n },\r\n onKeyDown: e => { if (e.keyCode === 13) { handleGetData({}, {}) } },\r\n name: 'password',\r\n }}\r\n />\r\n \r\n \r\n handleGetData({}, {})}>\r\n Ara\r\n \r\n \r\n \r\n \r\n \r\n {loading\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 setOpenSB(false)}>\r\n setOpenSB(false)} severity=\"success\">\r\n {message}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default BulkFileTransferListDialog","import React, { useState, useEffect } from 'react';\r\n\r\nimport { blockedNumberGetList, blockedNumberDeleteList, blockedNumberListOperation, getBlockedListExcel } from '../../_services/permissions.js'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport {\r\n PagingState,\r\n CustomPaging,\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n} from '@devexpress/dx-react-grid-material-ui';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport DeleteOutlineIcon from '@material-ui/icons/DeleteOutline';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy'\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Box from '@material-ui/core/Box';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Slide from '@material-ui/core/Slide';\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport FileDownload from 'js-file-download'\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport MuiAlert from '@material-ui/lab/Alert';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport styles from \"assets/jss/material-dashboard-react/components/importFileDialog.js\"\r\nimport { numberFormat } from '../../formats/number.js'\r\nimport { InfoOutlined } from '@material-ui/icons';\r\nimport { alertResponse } from '_helpers/notification.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\nimport { alertResultResponse } from '_helpers/notification.js';\r\nimport { alertErrorText } from '_helpers/notification.js';\r\nimport { checkResponse } from '_helpers/notification.js';\r\nimport { checkResultResponse } from '_helpers/notification.js';\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return ;\r\n});\r\n\r\nfunction Alert(props) {\r\n return ;\r\n}\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\n\r\nconst NumberStatusDialog = (props) => {\r\n const [list, setList] = useState([])\r\n const [count, setCount] = useState(0)\r\n const [Content, SetContent] = useState('')\r\n const [openSB, setOpenSB] = React.useState(false);\r\n const [message, setMessage] = useState('')\r\n\r\n const [phone, setPhone] = useState('')\r\n const [fileLoad, setFileLoad] = useState(false)\r\n\r\n const [loading, setLoading] = useState(false)\r\n const [submitLoading, setSubmitLoading] = useState(false)\r\n\r\n //grid\r\n const [PageSize, SetPageSize] = useState(30)\r\n const [PageNumber, SetPageNumber] = useState(0)\r\n const [SortFields, SetSortFields] = useState([\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Descending\"\r\n },\r\n {\r\n FieldName: \"Phone\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n const [sorting, setSorting] = useState([])\r\n const [Direction, SetDirection] = useState('')\r\n\r\n //dialogs\r\n const [editPermissionDialog, setEditPermissionDialog] = useState(false)\r\n\r\n const [clipBoard, setClipBoard] = useState(false)\r\n\r\n const classes = useStyles()\r\n const { open, toggle, contextSessionId, sessionId, userId, sysUserId, customerId } = props\r\n\r\n useEffect(() => {\r\n handleGetData({}, {})\r\n }, [])\r\n\r\n const handleGetData = (q1, q2) => {\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n ListRequest: {\r\n PageSize,\r\n PageNumber,\r\n SortFields,\r\n SearchExpression: phone,\r\n CalculateTotalRecordCount: true,\r\n ...q2\r\n },\r\n ...q1\r\n }\r\n setLoading(true)\r\n blockedNumberGetList(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'Engellenen numaralar listesi getirilemedi.')) {\r\n setList(res.data.blockedNumberList)\r\n setCount(res.data.totalRecordCount)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Engellenen numaralar listesi getirilemedi.')\r\n })\r\n }\r\n\r\n const columns = [\r\n { name: 'phone', title: 'Numara' },\r\n { name: 'insertDate', title: 'Eklenme Tarihi' },\r\n { name: \"action\", title: \"İşlem\" },\r\n ];\r\n\r\n const handleDelete = (record) => {\r\n const BlockedNumberList = [\r\n {\r\n selected: true,\r\n recordId: record.recordId,\r\n phone: record.phone,\r\n serviceType: record.serviceType,\r\n insertDate: record.insertDate,\r\n }\r\n ]\r\n const data = {\r\n AuthData: {\r\n sessionId,\r\n contextSessionId,\r\n },\r\n BlockedNumberList\r\n }\r\n setLoading(true)\r\n blockedNumberDeleteList(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResultResponse(res, null, 'Numara listeden çıkartıldı.', 'Numara listeden çıkartılamadı.')) {\r\n handleGetData({}, {})\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Numara listeden çıkartılamadı.')\r\n })\r\n }\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return {\r\n phone: numberFormat(l.phone),\r\n insertDate: moment(l.insertDate).format('DD.MM.YYYY HH:mm'),\r\n action: \r\n handleDelete(l)} >\r\n \r\n \r\n \r\n }\r\n })\r\n )\r\n }\r\n\r\n const handlePageSizeChange = (value) => {\r\n SetPageSize(value)\r\n SetPageNumber(0)\r\n handleGetData({}, { PageSize: value, PageNumber: 1 })\r\n }\r\n\r\n const handlePageChange = (value) => {\r\n SetPageNumber(value)\r\n handleGetData({}, { PageNumber: value + 1 })\r\n }\r\n\r\n const handleSort = params => {\r\n // if( params[0].columnName !== 'id'){\r\n // if(Direction === 'Ascending'){\r\n // handleGetData({},{ SortFields : [{FieldName: params[0].columnName, Direction: \"Descending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Descending\"}])\r\n // setSorting(params)\r\n // SetDirection('Descending')\r\n // }else{\r\n // handleGetData({},{ SortFields : [{FieldName: params[0].columnName, Direction: \"Ascending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Ascending\"}])\r\n // setSorting(params)\r\n // SetDirection('Ascending')\r\n // }\r\n // }else{\r\n // setSorting(params)\r\n // return\r\n // }\r\n }\r\n\r\n const handleSubmit = (action) => {\r\n const Numbers = Content.split(/\\r?\\n/)\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n OperationType: action,\r\n Numbers\r\n }\r\n setSubmitLoading(true)\r\n blockedNumberListOperation(data)\r\n .then(res => {\r\n setSubmitLoading(false)\r\n if (checkResultResponse(res, null, 'Numara engelleme ' + (action === 'ADD' ? 'listesine ekleme' : 'listesinden çıkarma') + ' işlemi başarılı.', 'Numara engelleme ' + (action === 'ADD' ? 'listesine ekleme' : 'listesinden çıkarma') + ' işleminde hata oluştu.')) {\r\n SetContent('')\r\n handleGetData({}, {})\r\n setOpenSB(true)\r\n setMessage('İşlem başarılı')\r\n }\r\n })\r\n .catch(err => {\r\n setSubmitLoading(false)\r\n alertResponseError(err, 'Numara engelleme ' + (action === 'ADD' ? 'listesine ekleme' : 'listesinden çıkarma') + ' işleminde hata oluştu.')\r\n })\r\n }\r\n\r\n\r\n const handleExcelExport = () => {\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n userId,\r\n sysUserId,\r\n customerId\r\n }\r\n setFileLoad(true)\r\n getBlockedListExcel(data)\r\n .then(res => {\r\n setFileLoad(false)\r\n if (res && res.data) {\r\n if (res.data.fileDownloadUrl) {\r\n const link = document.createElement('a');\r\n link.href = res.data.fileDownloadUrl\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n else {\r\n alertErrorText('Engellenen numaralar listesi dosyaya aktarılamadı. İndirme URL\\'i alınamadı.')\r\n }\r\n }\r\n else {\r\n alertErrorText('Engellenen numaralar listesi dosyaya aktarılamadı. Yanıt alınamadı.')\r\n }\r\n }).catch(err => {\r\n setFileLoad(false)\r\n alertResponseError(err, 'Engellenen numaralar listesi dosyaya aktarılamadı.')\r\n })\r\n }\r\n\r\n const handleClose = (event, reason) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n\r\n setOpenSB(false);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n NUMARA ENGELLEME\r\n \r\n \r\n GERİ\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 setPhone(e.target.value)}\r\n fullWidth\r\n />\r\n \r\n \r\n handleGetData({}, {})}> Ara \r\n \r\n \r\n \r\n {fileLoad\r\n ? \r\n : \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n {loading\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 SetContent(e.target.value)}\r\n fullWidth\r\n />\r\n \r\n {submitLoading\r\n ? \r\n \r\n
\r\n :\r\n \r\n handleSubmit('ADD')}> Listeye Ekle \r\n handleSubmit('REMOVE')}> Listeden Çıkart \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {message}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default NumberStatusDialog","import React, { useState, useEffect } from 'react'\r\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\r\nimport { getPermissionMarketingAccountCounts } from '../../_services/permissions'\r\nimport { CircularProgress, Typography } from \"@material-ui/core\";\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\n// import TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport MuiTableCell from \"@material-ui/core/TableCell\";\r\nimport { setSendingListLoading } from '_actions/smsActions';\r\nimport { checkResponse } from '_helpers/notification';\r\nimport { alertResponseError } from '_helpers/notification';\r\n\r\nconst TableCell = withStyles({\r\n root: {\r\n borderBottom: \"none\",\r\n width: 100\r\n }\r\n})(MuiTableCell);\r\n\r\nconst styles = {\r\n\r\n}\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst PermissionMarketingAccount = props => {\r\n const [counts, setCounts] = useState({})\r\n const [loading, setLoading] = useState(false)\r\n\r\n const classes = useStyles()\r\n const { summary, summaryLoading, permissionMarketingAccountInfo, permissionMarketingType, sessionId, contextSessionId } = props\r\n\r\n useEffect(() => {\r\n if (permissionMarketingAccountInfo && permissionMarketingAccountInfo.status) {\r\n const data = { sessionId, contextSessionId }\r\n setLoading(true)\r\n getPermissionMarketingAccountCounts(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'İzin yönetimi hesabı adetleri getirilirken bir hata oluştu.')) {\r\n setCounts(res.data.counts)\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'İzin yönetimi hesabı adetleri getirilirken bir hata oluştu.')\r\n })\r\n }\r\n }, [permissionMarketingAccountInfo])\r\n\r\n const sendFilterSwitch = type => {\r\n switch (type) {\r\n case 1:\r\n return 'İzinli pazarlama izin kontrolü sadece çıkanlar listelerden çıkartılarak sağlanacak'\r\n case 2:\r\n return 'İzinli pazarlama izin kontrolü sadece izinlilere gönderim yapılacak şekilde sağlanacak'\r\n default:\r\n return \"Kontrol ve Filtreleme Yok\"\r\n }\r\n }\r\n\r\n const planTypeSwitch = type => {\r\n switch (type) {\r\n case 1:\r\n return 'Kurgu - 1: Katılım Topla'\r\n case 2:\r\n return 'Kurgu - 2: Katılım Topla ve Gönderimlerde Filtrele'\r\n default:\r\n return \"Yok\"\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n İZİNLİ PAZARLAMA HESAP BİLGİLERİ\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Durum :\r\n \r\n \r\n {permissionMarketingAccountInfo.status ? 'Aktif' : 'Pasif'} \r\n \r\n \r\n \r\n \r\n Plan Tipi :\r\n \r\n \r\n \r\n {planTypeSwitch(permissionMarketingAccountInfo.planType)}\r\n \r\n \r\n \r\n \r\n \r\n Gönderim Filtreleme :\r\n \r\n \r\n {sendFilterSwitch(permissionMarketingType)} \r\n \r\n \r\n \r\n \r\n İYS Modülü :\r\n \r\n \r\n {permissionMarketingAccountInfo.iysAccountInfo &&\r\n permissionMarketingAccountInfo.iysAccountInfo.isIysActive ? 'Aktif' : \"Pasif\"\r\n } \r\n \r\n \r\n \r\n \r\n Başlangıç :\r\n \r\n \r\n {moment(permissionMarketingAccountInfo.startDate).format('DD.MM.YYYY')} \r\n \r\n \r\n \r\n \r\n Bitiş :\r\n \r\n \r\n {permissionMarketingAccountInfo.endDate ? moment(permissionMarketingAccountInfo.endDate).format('DD.MM.YYYY') : 'Yok'} \r\n \r\n \r\n \r\n \r\n Ödeme Tipi :\r\n \r\n \r\n {permissionMarketingAccountInfo.isPrepaid ? 'Ön Ödemeli' : 'Ön Ödemesiz'} \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {permissionMarketingAccountInfo.status &&\r\n \r\n {loading\r\n ? \r\n :\r\n \r\n \r\n \r\n \r\n \r\n Toplam Kayıt :\r\n \r\n \r\n {(counts.totalCount || 0).toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n Toplam İzinli :\r\n \r\n \r\n {(counts.confirmedCount || 0).toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n Toplam İzinsiz :\r\n \r\n \r\n {(counts.rejectedCount || 0).toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n İYS'ye Aktarılan :\r\n \r\n \r\n {(counts.transferedToIysCount || 0).toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n İYS'ye Aktarılmayan :\r\n \r\n \r\n {(counts.notTransferedToIysCount || 0).toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n İYS'ye Aktarılmayı Bekleyen :\r\n \r\n \r\n {(counts.waitingToTransferToIysCount || 0).toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n
\r\n \r\n }\r\n \r\n }\r\n {permissionMarketingAccountInfo.status &&\r\n \r\n {summaryLoading\r\n ? \r\n :\r\n \r\n \r\n \r\n \r\n \r\n Toplam Çıkış Yapan :\r\n \r\n \r\n {(summary.optedOutCount || 0).toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n Son 1 Ay Çıkış Yapan :\r\n \r\n \r\n {(summary.optedOutCountLastOneMonth || 0).toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n Son 1 Hafta Çıkış Yapan :\r\n \r\n \r\n {(summary.optedOutCountLastOneWeek || 0).toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n Son 1 Gün Çıkış Yapan :\r\n \r\n \r\n {(summary.optedOutCountLastOneDay || 0).toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n
\r\n \r\n }\r\n \r\n }\r\n \r\n )\r\n}\r\n\r\nexport default PermissionMarketingAccount","import React, { useState, useEffect } from 'react'\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport {\r\n getPermissionMarketingAccountPrepaidPurchaseInfo\r\n} from '../../_services/permissions'\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport { checkResponse } from '_helpers/notification';\r\nimport { alertResponseError } from '_helpers/notification';\r\nimport { CircularProgress } from '@material-ui/core';\r\nconst styles = {\r\n\r\n}\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst Prepaid = props => {\r\n const [prepaidInfo, setPrepaidInfo] = useState([])\r\n const [loading, setLoading] = useState(false)\r\n\r\n const { sessionId, contextSessionId } = props\r\n\r\n const classes = useStyles()\r\n\r\n const getFirstOpen = () => {\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n }\r\n setLoading(true)\r\n getPermissionMarketingAccountPrepaidPurchaseInfo(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'İzin yönetimi ön ödemeli tanım bilgileri getirilirken bir hata oluştu.')) {\r\n setPrepaidInfo(res.data.purchaseInfo)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'İzin yönetimi ön ödemeli tanım bilgileri getirilirken bir hata oluştu.')\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n getFirstOpen()\r\n }, [])\r\n\r\n\r\n const sourceResolve = id => {\r\n switch (id) {\r\n case 0:\r\n return 'Sms'\r\n case 1:\r\n return 'LandingPage'\r\n case 2:\r\n return 'Api'\r\n case 3:\r\n return \"AnindaCevap\"\r\n case 4:\r\n return \"Manual\"\r\n case 5:\r\n return \"ManualInvalidSubscription\"\r\n case 6:\r\n return \"Bip_MO\"\r\n case 7:\r\n return \"Bip_TKP\"\r\n case 8:\r\n return \"IYS\"\r\n case 7:\r\n return \"Web\"\r\n case 8:\r\n return \"WebFile\"\r\n default:\r\n return 'Bilinmiyor'\r\n }\r\n }\r\n\r\n const serviceTypeResolve = _type => {\r\n switch (_type) {\r\n case 0:\r\n return 'GSM No'\r\n default:\r\n return 'Bilinmiyor'\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n ÖNÖDEMELİ HESAP BİLGİLERİ\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Servis Kullanım Tipi \r\n Kaynak Kullanım Tipi \r\n Yüklenen Miktar \r\n Harcanan Miktar \r\n Kalan Miktar \r\n Başlangıç Tarihi \r\n Bitiş Tarihi \r\n Yükleme Tarihi \r\n \r\n \r\n \r\n {loading\r\n ?\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n :\r\n Array.isArray(prepaidInfo) &&\r\n prepaidInfo.map((row) => (\r\n \r\n \r\n {serviceTypeResolve(row.serviceTypeByDestination)}\r\n \r\n {sourceResolve(row.source)} \r\n {(row.amount || '').toLocaleString(\"tr-TR\")} \r\n {(row.spentAmount || '').toLocaleString(\"tr-TR\")} \r\n {((row.amount - row.spentAmount) || '').toLocaleString(\"tr-TR\")} \r\n {moment(row.startDate).format('DD.MM.YYYY')} \r\n {moment(row.endDate).format('DD.MM.YYYY')} \r\n {moment(row.insertDate).format('DD.MM.YYYY HH:mm')} \r\n \r\n ))\r\n }\r\n \r\n
\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Prepaid","import React, { useState, useEffect } from 'react'\r\nimport {\r\n getPermissionMarketingItemStatusDateSummary,\r\n getPermissionMarketingItemStatusDateRateSummary,\r\n getPermissionMarketingItemStatusDateRateWeeklySummary\r\n} from '../../_services/permissions'\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { DatePicker, DateTimePicker } from \"@material-ui/pickers\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport { Select, MenuItem, Box, CircularProgress } from \"@material-ui/core\"\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport { Line } from 'react-chartjs-2';\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport { checkResponse } from '_helpers/notification';\r\nimport { alertResponseError } from '_helpers/notification';\r\nimport { setSendingSummaryLoading } from '_actions/smsActions';\r\n\r\nconst styles = {\r\n tableCont: {\r\n height: 300,\r\n marginTop: 30,\r\n marginBottom: 30\r\n },\r\n datePickers: {\r\n height: 300,\r\n margin: 30,\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center'\r\n }\r\n}\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst Trends = props => {\r\n const [loading, setLoading] = useState([])\r\n const [summaryByDate, setSummaryByDate] = useState([])\r\n const [rateSummaryByDate, setRateSummaryByDate] = useState([])\r\n\r\n const [trendType, setTrendType] = useState('0')\r\n const [EndDate, SetEndDate] = useState(moment().format('YYYY-MM-DDTHH:mm:ssZ'))\r\n const [StartDate, SetStartDate] = useState(moment().subtract(1, 'months').startOf('day').format('YYYY-MM-DDTHH:mm:ssZ'))\r\n const classes = useStyles()\r\n const { sessionId, contextSessionId, setSummary, setSummaryLoading } = props\r\n\r\n const getDaily = () => {\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n ServiceTypeByDestination: \"Msisdn\",\r\n Source: null,\r\n StartDate,\r\n EndDate\r\n }\r\n setLoading(true)\r\n getPermissionMarketingItemStatusDateRateSummary(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'Trend getirilirken bir problemle karşılaşıldı.')) {\r\n setRateSummaryByDate(res.data.rateSummaryByDate || [])\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Trend getirilirken bir problemle karşılaşıldı.')\r\n })\r\n }\r\n\r\n const getWeekly = () => {\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n ServiceTypeByDestination: \"Msisdn\",\r\n Source: null,\r\n StartDate,\r\n EndDate\r\n }\r\n setLoading(true)\r\n getPermissionMarketingItemStatusDateRateWeeklySummary(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'Haftalık trend getirilirken bir problemle karşılaşıldı.')) {\r\n setRateSummaryByDate(res.data.rateSummaryByDate || [])\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Haftalık trend getirilirken bir problemle karşılaşıldı.')\r\n })\r\n }\r\n\r\n const getFirstOpen = () => {\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n ServiceTypeByDestination: \"Msisdn\",\r\n Source: null,\r\n StartDate,\r\n EndDate\r\n }\r\n setLoading(true)\r\n setSummaryLoading(true)\r\n getPermissionMarketingItemStatusDateSummary(data)\r\n .then(res => {\r\n setLoading(false)\r\n setSummaryLoading(false)\r\n if (checkResponse(res, null, null, 'İzin yönetimi tarih bazında özet bilgileri getirilirken bir hata oluştu.')) {\r\n setSummaryByDate(res.data.summaryByDate || [])\r\n setSummary(res.data.summary)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n setSummaryLoading(false)\r\n alertResponseError(err, 'İzin yönetimi tarih bazında özet bilgileri getirilirken bir hata oluştu.')\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n getFirstOpen()\r\n }, [])\r\n\r\n\r\n const handleQuery = () => {\r\n if (trendType === '0') {\r\n getFirstOpen()\r\n } else if (trendType === '1') {\r\n getWeekly()\r\n } else {\r\n getDaily()\r\n }\r\n }\r\n\r\n const tables = () => {\r\n switch (trendType) {\r\n case '0':\r\n return \r\n case '1':\r\n return \r\n case '2':\r\n return \r\n default:\r\n return \r\n }\r\n }\r\n\r\n const Table0 = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n Tarih \r\n Giriş Yapan \r\n Çıkış Yapan \r\n \r\n \r\n \r\n {summaryByDate.map((row) => (\r\n \r\n \r\n {moment(row.permDate).format('DD.MM.YYYY')}\r\n \r\n {(row.optedInCount || 0).toLocaleString(\"tr-TR\")} \r\n {(row.optedOutCount || 0).toLocaleString(\"tr-TR\")} \r\n \r\n ))}\r\n \r\n
\r\n \r\n )\r\n }\r\n\r\n const Table1 = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n Hafta Başlangıcı \r\n Hafta Bitişi \r\n İletilen Adet \r\n Çıkış Yapan \r\n Oran(%) \r\n \r\n \r\n \r\n {rateSummaryByDate.map((row, i) => (\r\n \r\n \r\n {moment(row.weekStartDate).format('DD.MM.YYYY')}\r\n \r\n \r\n {moment(row.weekEndDate).format('DD.MM.YYYY')}\r\n \r\n {(row.deliveredCount || 0).toLocaleString(\"tr-TR\")} \r\n {(row.optedOutCount || 0).toLocaleString(\"tr-TR\")} \r\n {(row.optOutRate || 0).toLocaleString(\"tr-TR\")} \r\n \r\n ))}\r\n \r\n
\r\n \r\n )\r\n }\r\n\r\n const Table2 = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n Gün \r\n İletilen Adet \r\n Çıkış Yapan \r\n Oran(%) \r\n \r\n \r\n \r\n {rateSummaryByDate.map((row, i) => (\r\n \r\n \r\n {moment(row.sendDate).format('DD.MM.YYYY')}\r\n \r\n {(row.deliveredCount || 0).toLocaleString(\"tr-TR\")} \r\n {(row.optedOutCount || 0).toLocaleString(\"tr-TR\")} \r\n {(row.optOutRate || 0).toLocaleString(\"tr-TR\")} \r\n \r\n ))}\r\n \r\n
\r\n \r\n )\r\n }\r\n\r\n const createChartData = () => {\r\n if (trendType === '0') {\r\n return summaryByDateData()\r\n } else if (trendType === '1') {\r\n return rateSummaryByDate1()\r\n } else {\r\n return rateSummaryByDate2()\r\n }\r\n }\r\n\r\n const summaryByDateData = () => {\r\n let labels = []\r\n let data = []\r\n for (let i = 0; i < summaryByDate.length; i++) {\r\n labels = labels.concat(moment(summaryByDate[i].permDate).format('DD.MM.YY'))\r\n data = data.concat(summaryByDate[i].optedOutCount || 0)\r\n // data = data.concat(i)\r\n }\r\n const chartData = {\r\n labels,\r\n datasets: [\r\n {\r\n label: 'Çıkış Oranı',\r\n backgroundColor: '#3c54a5',\r\n borderColor: '#fff',\r\n borderWidth: 1,\r\n hoverBackgroundColor: '#f44336',\r\n hoverBorderColor: '#26c6da',\r\n data\r\n }\r\n ]\r\n }\r\n return (chartData)\r\n }\r\n\r\n const rateSummaryByDate1 = () => {\r\n let labels = []\r\n let data = []\r\n for (let i = 0; i < rateSummaryByDate.length; i++) {\r\n labels = labels.concat(rateSummaryByDate[i].weekText)\r\n data = data.concat(rateSummaryByDate[i].optOutRate || 0)\r\n }\r\n const chartData = {\r\n labels,\r\n datasets: [\r\n {\r\n label: 'Haftalık Çıkış Oranı',\r\n backgroundColor: '#3c54a5',\r\n borderColor: '#fff',\r\n borderWidth: 1,\r\n hoverBackgroundColor: '#f44336',\r\n hoverBorderColor: '#26c6da',\r\n data\r\n }\r\n ]\r\n }\r\n return (chartData)\r\n }\r\n\r\n const rateSummaryByDate2 = () => {\r\n let labels = []\r\n let data = []\r\n for (let i = 0; i < rateSummaryByDate.length; i++) {\r\n labels = labels.concat(moment(rateSummaryByDate[i].sendDate).format('DD.MM.YY'))\r\n data = data.concat(rateSummaryByDate[i].optOutRate || 0)\r\n }\r\n const chartData = {\r\n labels,\r\n datasets: [\r\n {\r\n label: 'Günlük Çıkış Oranı',\r\n backgroundColor: '#3c54a5',\r\n borderColor: '#fff',\r\n borderWidth: 1,\r\n hoverBackgroundColor: '#f44336',\r\n hoverBorderColor: '#26c6da',\r\n data\r\n }\r\n ]\r\n }\r\n return (chartData || [])\r\n }\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {\r\n setTrendType(e.target.value)\r\n if (e.target.value === '0') {\r\n getFirstOpen()\r\n } else if (e.target.value === '1') {\r\n getWeekly()\r\n } else {\r\n getDaily()\r\n }\r\n }}\r\n displayEmpty\r\n fullWidth\r\n inputProps={{ 'aria-label': 'Tip' }}\r\n >\r\n Gün-Çıkış Yapan Adetleri \r\n Çıkış Trendi (Haftalık) \r\n Çıkış Trendi (Günlük) \r\n \r\n \r\n \r\n\r\n \r\n \r\n {\r\n SetStartDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n {\r\n SetEndDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n Sorgula\r\n \r\n \r\n \r\n \r\n \r\n \r\n {loading\r\n ?\r\n \r\n \r\n
\r\n : tables()\r\n }\r\n \r\n \r\n {loading\r\n ?\r\n \r\n \r\n
\r\n :\r\n \r\n \r\n \r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default Trends","import React, { useState, useEffect } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Paper from '@material-ui/core/Paper'\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport MarketingListDialog from 'components/Izinler/MarketingListDialog'\r\nimport BulkFileTransferDialog from 'components/Izinler/BulkFileTransferDialog'\r\nimport BulkFileTransferListDialog from 'components/Izinler/BulkFileTransferListDialog'\r\nimport NumberStatusDialog from 'components/Izinler/NumberStatusDialog'\r\nimport PermissionMarketingAccount from 'components/Izinler/PermissionMarketingAccount'\r\nimport Prepaid from 'components/Izinler/Prepaid'\r\nimport Trends from 'components/Izinler/Trends'\r\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\r\nimport Swal from 'sweetalert2'\r\n\r\nconst styles = {\r\n clickableDiv : {\r\n width : '100%',\r\n padding: 10,\r\n borderRadius : 10,\r\n cursor : 'pointer',\r\n '& :hover': {\r\n backgroundColor : \"#effeff\"\r\n }\r\n },\r\n container : {\r\n border : '1px solid lightgray',\r\n padding: 20,\r\n borderRadius : 15,\r\n marginBottom : 30\r\n },\r\n containerTop : {\r\n border : '1px solid lightgray',\r\n padding: 20,\r\n borderRadius : 15,\r\n marginBottom : 30,\r\n height : 100,\r\n display: \"flex\",\r\n justifyContent : \"center\",\r\n alignItems : \"center\"\r\n }\r\n}\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst Izinler = props => {\r\n const [ marketingListDialog, setMarketingListDialog ] = useState(false)\r\n const [ bulkFileTransferDialog, setBulkFileTransferDialog ] = useState(false)\r\n const [ bulkFileTransferListDialog, setBulkFileTransferListDialog ] = useState(false)\r\n const [ numberStatusDialog, setNumberStatusDialog ] = useState(false)\r\n const [ permissionMarketingAccountInfoState, setPermissionMarketingAccountInfoState ] = useState({})\r\n const [ summary, setSummary ] = useState({})\r\n const [ summaryLoading, setSummaryLoading ] = useState({})\r\n \r\n const { sessionId, contextSessionId, user } = props.userReducer.user\r\n const { customerInfo, userInfo} = user\r\n const { customerId, sysAccountId, permissionMarketingType, permissionMarketingAccountInfo } = customerInfo\r\n const { userId, sysUserId } = userInfo\r\n\r\n useEffect(() => {\r\n if(permissionMarketingAccountInfo){\r\n setPermissionMarketingAccountInfoState(permissionMarketingAccountInfo)\r\n }\r\n },[user, customerInfo])\r\n\r\n const handleMarketingListDialogToggle = () => {\r\n if(permissionMarketingAccountInfoState && permissionMarketingAccountInfoState.status){\r\n setMarketingListDialog(!marketingListDialog)\r\n }else{\r\n Swal.fire({\r\n icon: \"warning\",\r\n title : \"Kapsam Dışı\",\r\n text : 'Bu özelliği kullanma yetkiniz bulunmuyor. Detaylı bilgi için \"musterihizmetleri@codec.com.tr\" ile iletişime geçebilirsiniz.'\r\n })\r\n }\r\n }\r\n\r\n const handleBulkFileTransferDialogToggle = () => {\r\n if(permissionMarketingAccountInfoState && permissionMarketingAccountInfoState.status){\r\n setBulkFileTransferDialog(!bulkFileTransferDialog)\r\n }else{\r\n Swal.fire({\r\n icon: \"warning\",\r\n title : \"Kapsam Dışı\",\r\n text : 'Bu özelliği kullanma yetkiniz bulunmuyor. Detaylı bilgi için \"musterihizmetleri@codec.com.tr\" ile iletişime geçebilirsiniz.'\r\n })\r\n }\r\n }\r\n\r\n const handleBulkFileTransferListDialogToggle = () => {\r\n if(permissionMarketingAccountInfoState && permissionMarketingAccountInfoState.status){\r\n setBulkFileTransferListDialog(!bulkFileTransferListDialog)\r\n }else{\r\n Swal.fire({\r\n icon: \"warning\",\r\n title : \"Kapsam Dışı\",\r\n text : 'Bu özelliği kullanma yetkiniz bulunmuyor. Detaylı bilgi için \"musterihizmetleri@codec.com.tr\" ile iletişime geçebilirsiniz.'\r\n })\r\n }\r\n }\r\n\r\n const handleNumberStatusDialogToggle = () => {\r\n setNumberStatusDialog(!numberStatusDialog)\r\n }\r\n\r\n const classes = useStyles()\r\n return(\r\n \r\n \r\n \r\n \r\n \r\n İZİNLİ PAZARLAMA LİSTESİ \r\n TOPLU DOSYA TRANSFERİ \r\n TOPLU DOSYA TRANSFER LİSTESİ \r\n NUMARA ENGELLEME \r\n \r\n \r\n \r\n {/* \r\n \r\n \r\n Toplu Dosya Transferi \r\n \r\n Toplu olarak izin bilgilerini yüklemek için tıklayınız. \r\n \r\n */}\r\n \r\n \r\n \r\n \r\n \r\n {permissionMarketingAccountInfoState && permissionMarketingAccountInfoState.isPrepaid &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {permissionMarketingAccountInfoState && permissionMarketingAccountInfoState.status &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n {permissionMarketingAccountInfoState && permissionMarketingAccountInfoState.status &&\r\n \r\n }\r\n {permissionMarketingAccountInfoState && permissionMarketingAccountInfoState.status &&\r\n \r\n }\r\n {permissionMarketingAccountInfoState && permissionMarketingAccountInfoState.status &&\r\n \r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer } = state\r\n return { userReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps)(Izinler)","import { domain } from './domain'\r\nimport axios from 'axios'\r\n\r\nexport const getSmsDeliveryReportDetailErrorCodeList = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/ReportService/GetSmsDeliveryReportDetailErrorCodeList', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getSmsSummaryDeliveryReport = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/ReportService/GetSmsSummaryDeliveryReport', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getSmsDetailedDeliveryReport = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/ReportService/GetSmsDetailedDeliveryReport', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getSmsDeliveryReportErrorSummary = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/ReportService/GetSmsDeliveryReportErrorSummary', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\n\r\nexport const getSummaryDeliveryReportExcel = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/ReportService/GetSummaryDeliveryReportExcel', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getDetailedDeliveryReportExcel = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/ReportService/GetDetailedDeliveryReportExcel', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const changeStartDateOfScheduledSmsTask = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/ReportService/ChangeStartDateOfScheduledSmsTask', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\n\r\nexport const cancelScheduledSmsTask = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/ReportService/CancelScheduledSmsTask', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getSmsPeriodicTaskList = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/ReportService/GetSmsPeriodicTaskList', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const setPassiveSmsPeriodicTaskList = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/ReportService/SetPassiveSmsPeriodicTaskList', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getWaitingConfirmationSmsTaskList = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/ReportService/GetWaitingConfirmationSmsTaskList', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const confirmOrRejectWaitingConfirmationSmsTask = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/ReportService/ConfirmOrRejectWaitingConfirmationSmsTask', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\n\r\nexport const cancelWaitingConfirmationSmsTask = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/ReportService/CancelWaitingConfirmationSmsTask', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\n\r\nexport const getScheduledSmsTaskList = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/ReportService/GetScheduledSmsTaskList', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}","import React, { useState, useEffect } from 'react'\r\nimport clsx from 'clsx';\r\nimport { timeout } from '../../_actions/user'\r\nimport { changeStartDateOfScheduledSmsTask } from '../../_services/reports'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport { Select, MenuItem, Typography } from \"@material-ui/core\"\r\nimport Divider from '@material-ui/core/Divider';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport { TimePicker } from \"@material-ui/pickers\";\r\nimport { DateTimePicker } from \"@material-ui/pickers\";\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport { checkResponse } from '_helpers/notification';\r\nimport { alertResponseError } from '_helpers/notification';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n },\r\n textField: {\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n width: 200,\r\n marginBottom : 20\r\n },\r\n}));\r\n\r\nconst AdvancedTimeDialog = props => {\r\n const [ NewPeriodicallyOptions, SetNewPeriodicallyOptions ] = useState({\r\n isActive : false,\r\n period : 10,\r\n packageSize : 5000,\r\n isShiftTimePeriodActive : false,\r\n shiftTimePeriodStartHour : 12,\r\n shiftTimePeriodStartMinute : 0,\r\n shiftTimePeriodEndHour: 13,\r\n shiftTimePeriodEndMinute : 30\r\n })\r\n const [ NewExpirationTimeOptions, SetNewExpirationTimeOptions ] = useState({\r\n isActive : false,\r\n expirationTimeType : 1,\r\n ExpirationExactHour : 23,\r\n ExpirationExactMinute : 0,\r\n ExpirationTimePeriodMinute : 180\r\n })\r\n const [ loading,setLoading ] = useState(false)\r\n const [ NewStartDate, SetNewStartDate] = useState(props.NewStartDate)\r\n const [newSendValue, setNewSendValue] = React.useState('hemen');\r\n const [ showDatePicker, setShowDatePicker ] = useState(false)\r\n\r\n const { open, toggle, setSendingTimeOptions, sendingTimeOptions, TaskId, AuthData, dispatch, fetchData, currentTaskIsScheduled } = props\r\n const classes = useStyles();\r\n\r\n const handleNewSendValue = (event) => {\r\n if(event.target.value === 'hemen'){\r\n setShowDatePicker(false)\r\n SetNewStartDate(moment().format('YYYY-MM-DDTHH:mm'))\r\n }\r\n else if(event.target.value === 'belirli'){\r\n setShowDatePicker(true)\r\n SetNewStartDate(props.NewStartDate)\r\n }\r\n setNewSendValue(event.target.value);\r\n };\r\n\r\n useEffect(() => {\r\n if(open && sendingTimeOptions.sendSeperatedPeriodicallyOptions){\r\n SetNewPeriodicallyOptions({...NewPeriodicallyOptions, ...sendingTimeOptions.sendSeperatedPeriodicallyOptions})\r\n }\r\n if(open && sendingTimeOptions.expirationTimeOptions){\r\n SetNewExpirationTimeOptions({...NewExpirationTimeOptions, ...sendingTimeOptions.expirationTimeOptions})\r\n }\r\n }, [open, sendingTimeOptions])\r\n\r\n const fixTimePicker = time => {\r\n let arr = time.split(':')\r\n arr[0] = arr[0]\r\n if(arr[1] === '00'){\r\n arr[1] = 0\r\n }\r\n return arr\r\n }\r\n\r\n const handleStartTime = time => {\r\n const arr = fixTimePicker(time)\r\n SetNewPeriodicallyOptions({...NewPeriodicallyOptions, shiftTimePeriodStartHour : arr[0], shiftTimePeriodStartMinute : arr[1]})\r\n }\r\n\r\n const handleEndTime = time => {\r\n const arr = fixTimePicker(time)\r\n SetNewPeriodicallyOptions({...NewPeriodicallyOptions, shiftTimePeriodEndHour : arr[0], shiftTimePeriodEndMinute : arr[1]})\r\n }\r\n\r\n const handleExTime = time => {\r\n const arr = fixTimePicker(time)\r\n SetNewExpirationTimeOptions({...NewExpirationTimeOptions, ExpirationExactHour : arr[0], ExpirationExactMinute : arr[1] })\r\n }\r\n \r\n const StyledRadio = (props) => {\r\n\r\n return (\r\n }\r\n icon={ }\r\n {...props}\r\n />\r\n );\r\n }\r\n\r\n const Label1 = () => {\r\n const min = NewExpirationTimeOptions.ExpirationExactMinute === 0 ? '00' : NewExpirationTimeOptions.ExpirationExactMinute \r\n const value = NewExpirationTimeOptions.ExpirationExactHour +':'+min\r\n return(\r\n \r\n \r\n Saat \r\n \r\n \r\n \r\n \r\n \r\n 'a kadar beklemede olup gönderilmemiş mesajları iptal et. \r\n \r\n \r\n )\r\n }\r\n\r\n const Label2 = () => {\r\n return(\r\n \r\n \r\n Gönderim saatinden itibaren \r\n \r\n \r\n {\r\n SetNewExpirationTimeOptions({...NewExpirationTimeOptions, ExpirationTimePeriodMinute : e.target.value })\r\n }}\r\n displayEmpty\r\n disabled = {NewExpirationTimeOptions.expirationTimeType === 1}\r\n fullWidth\r\n inputProps={{ 'aria-label': 'Kullanılacak alfanumerik' }}\r\n >\r\n 1 saat 15 \r\n {timeOptions()}\r\n \r\n \r\n \r\n sonrasına kadar beklemede olup gönderilmemiş mesajları iptal et. \r\n \r\n \r\n )\r\n }\r\n\r\n const LabelComp = () => {\r\n const min = NewPeriodicallyOptions.shiftTimePeriodStartMinute === 0 ? '00' : NewPeriodicallyOptions.shiftTimePeriodStartMinute \r\n const min2 = NewPeriodicallyOptions.shiftTimePeriodEndMinute === 0 ? '00' : NewPeriodicallyOptions.shiftTimePeriodEndMinute \r\n const startValue = NewPeriodicallyOptions.shiftTimePeriodStartHour +':'+min\r\n const endValue = NewPeriodicallyOptions.shiftTimePeriodEndHour +':'+min2\r\n return(\r\n \r\n \r\n Saat \r\n \r\n \r\n \r\n \r\n \r\n ile \r\n \r\n \r\n \r\n \r\n \r\n arasına denk gelen gönderim paketlerinin gönderim zamanlarını bu zaman aralığının dışına ötele \r\n \r\n \r\n )\r\n }\r\n\r\n const fixTime = i => {\r\n let h = Math.floor(i/60)\r\n let m = 30\r\n if( i % 60 === 0){\r\n m = 0\r\n } \r\n return h + ' saat ' + (m === 0 ? '' : (m +' dakika'))\r\n }\r\n\r\n const timeOptions = () => {\r\n let items = []\r\n for( let i = 90; i < 1711; i += 30){\r\n items = [\r\n ...items,\r\n i\r\n ]\r\n }\r\n return( items.map( i => {\r\n return(\r\n {fixTime(i)} \r\n )\r\n }))\r\n }\r\n\r\n const handleOk = () => {\r\n const data = {\r\n ...AuthData,\r\n TaskId,\r\n NewStartDate,\r\n NewPeriodicallyOptions,\r\n NewExpirationTimeOptions\r\n }\r\n setLoading(true)\r\n changeStartDateOfScheduledSmsTask(data)\r\n .then( res => {\r\n setLoading(false)\r\n if (checkResponse(res, dispatch, 'SMS gönderim tarihi güncellendi. ' + (res && res.data && res.data.resultUserFriendlyDescription ? res.data.resultUserFriendlyDescription : ''), 'SMS gönderim tarihi güncelleme işlemi başarısız.')) {\r\n toggle()\r\n fetchData({})\r\n }\r\n })\r\n .catch( err => {\r\n setLoading(false)\r\n alertResponseError(err, 'SMS gönderim tarihi güncelleme işlemi başarısız.')\r\n })\r\n }\r\n\r\n return(\r\n \r\n Gönderim Zamanı Değiştirme \r\n \r\n \r\n \r\n \r\n \r\n Gönderimin mevcut başlangıç zamanı: \r\n \r\n \r\n {props.NewStartDate && moment(props.NewStartDate).format('DD.MM.YYYY HH:mm')} \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {currentTaskIsScheduled ? 'G' : 'Kalan g' }önderimin yeni başlangıç zamanı: \r\n\r\n \r\n \r\n \r\n } label=\"Hemen Başlat\" />\r\n } label=\"Belirli tarih/saatte başlat\" />\r\n \r\n \r\n \r\n {showDatePicker &&\r\n SetNewStartDate(moment(date).format('YYYY-MM-DDTHH:mm'))}\r\n format = 'DD.MM.YYYY HH:mm'\r\n okLabel = 'TAMAM'\r\n cancelLabel = 'KAPAT'\r\n />\r\n }\r\n \r\n \r\n \r\n\r\n\r\n \r\n SetNewPeriodicallyOptions({...NewPeriodicallyOptions, isActive : !NewPeriodicallyOptions.isActive}) }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n }\r\n label='Belirli periyodlarla ayrı ayrı paket olarak gönder'\r\n />\r\n \r\n {NewPeriodicallyOptions.isActive &&\r\n \r\n \r\n \r\n \r\n \r\n Periyot \r\n \r\n \r\n {\r\n SetNewPeriodicallyOptions({...NewPeriodicallyOptions, period : e.target.value})\r\n }}\r\n displayEmpty\r\n fullWidth\r\n inputProps={{ 'aria-label': 'Periyot' }}\r\n >\r\n 1 dakika \r\n 2 dakika \r\n 3 dakika \r\n 4 dakika \r\n 5 dakika \r\n 6 dakika \r\n 7 dakika \r\n 8 dakika \r\n 9 dakika \r\n 10 dakika \r\n 15 dakika \r\n 20 dakika \r\n 25 dakika \r\n 30 dakika \r\n 35 dakika \r\n 40 dakika \r\n 45 dakika \r\n 50 dakika \r\n 55 dakika \r\n 60 dakika \r\n 65 dakika \r\n 70 dakika \r\n 75 dakika \r\n 80 dakika \r\n 85 dakika \r\n 90 dakika \r\n 95 dakika \r\n 100 dakika \r\n 105 dakika \r\n 110 dakika \r\n 115 dakika \r\n 120 dakika \r\n 125 dakika \r\n 130 dakika \r\n 135 dakika \r\n 140 dakika \r\n 145 dakika \r\n 150 dakika \r\n 155 dakika \r\n 160 dakika \r\n 165 dakika \r\n 170 dakika \r\n 175 dakika \r\n 180 dakika \r\n \r\n \r\n \r\n Her bir periyotta gönderilecek mesaj adedi sınırı \r\n \r\n \r\n {\r\n const value = (e.target.value < 0 ? 0 : (e.target.value > 20000 ? 20000 : (e.target.value < 5 ? 5 : e.target.value)))\r\n SetNewPeriodicallyOptions({...NewPeriodicallyOptions, packageSize : value})\r\n }\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n SetNewPeriodicallyOptions({...NewPeriodicallyOptions, isShiftTimePeriodActive : !NewPeriodicallyOptions.isShiftTimePeriodActive}) }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n }\r\n label= { }\r\n />\r\n \r\n \r\n \r\n }\r\n \r\n \r\n SetNewExpirationTimeOptions({...NewExpirationTimeOptions, isActive : !NewExpirationTimeOptions.isActive}) }\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n }\r\n label='Geçerlilik zamanını belirle'\r\n />\r\n \r\n { NewExpirationTimeOptions.isActive &&\r\n \r\n \r\n {\r\n SetNewExpirationTimeOptions({...NewExpirationTimeOptions, expirationTimeType : parseInt(e.target.value)}) \r\n }} aria-label=\"gender\" name=\"customized-radios\">\r\n } label={ } />\r\n } label={ } />\r\n \r\n \r\n \r\n }\r\n \r\n \r\n\r\n \r\n \r\n \r\n { loading\r\n ? \r\n \r\n \r\n
\r\n \r\n : <>\r\n \r\n İPTAL\r\n \r\n \r\n TAMAM\r\n \r\n >\r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default AdvancedTimeDialog","import React, { useEffect, useState } from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { getCustomerCustomFieldsSendTasksValues } from '_services/definitions';\r\nimport { TableBody, TableCell, TableContainer, TableHead, TableRow } from '@material-ui/core';\r\nimport { default as NewTable } from '@material-ui/core/Table';\r\nimport { alertResponseError } from '_helpers/notification';\r\nimport { checkResponse } from '_helpers/notification';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\r\n}));\r\n\r\nconst CustomerCustomParametersDisplayDialog = props => {\r\n\r\n const { open, toggle, AuthData, taskId, serviceType, dispatch, customerCustomFields } = props\r\n const classes = useStyles();\r\n\r\n const [list, setList] = useState([])\r\n const [loading, setLoading] = useState(false)\r\n\r\n const fetchData = (query) => {\r\n const data = { ...AuthData, taskId, serviceType }\r\n setLoading(true)\r\n getCustomerCustomFieldsSendTasksValues(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, dispatch, null, 'Müşteri özel alanları listesi getirilemedi.')) {\r\n if (res.data.customerCustomFieldsSendTasksValues && res.data.customerCustomFieldsSendTasksValues != null) {\r\n setList(res.data.customerCustomFieldsSendTasksValues.map(l => {\r\n var customFieldCaption = ''\r\n if (customerCustomFields != null && customerCustomFields.length > 0) {\r\n var requiredFieldCount = customerCustomFields.filter(function (f) { return f.customerFieldId === l.customFieldId; })[0] || null;\r\n if (requiredFieldCount) {\r\n customFieldCaption = requiredFieldCount.customFieldCaptionTR\r\n }\r\n }\r\n return {\r\n customFieldId: l.customFieldId,\r\n customFieldName: customFieldCaption,\r\n customFieldValue: l.customFieldValue\r\n }\r\n }))\r\n }\r\n else {\r\n setList([])\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Müşteri özel alanları listesi getirilemedi.')\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n fetchData({})\r\n }, [])\r\n\r\n return (\r\n \r\n Girilen Özel Alanlar \r\n \r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n Alan Adı \r\n Girilen/Seçilen Değer \r\n \r\n \r\n \r\n {loading\r\n ? \r\n :\r\n list.map((row) => (\r\n \r\n \r\n {row.customFieldName}\r\n \r\n {row.customFieldValue} \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 TAMAM\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default CustomerCustomParametersDisplayDialog","import React, { useState, useEffect } from 'react';\r\nimport {\r\n getSmsDeliveryReportDetailErrorCodeList,\r\n getSmsDetailedDeliveryReport,\r\n getSmsDeliveryReportErrorSummary, getDetailedDeliveryReportExcel,\r\n cancelScheduledSmsTask,\r\n} from '../../_services/reports'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport {\r\n SortingState,\r\n PagingState,\r\n CustomPaging\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableRowDetail,\r\n TableColumnResizing\r\n} from '@devexpress/dx-react-grid-material-ui';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy'\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Box from '@material-ui/core/Box';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Slide from '@material-ui/core/Slide';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport { DateTimePicker } from \"@material-ui/pickers\";\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport styles from \"assets/jss/material-dashboard-react/components/importFileDialog.js\"\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport MuiAlert from '@material-ui/lab/Alert';\r\nimport { numberFormat } from '../../formats/number.js'\r\nimport Swal from 'sweetalert2'\r\nimport { RowDetailState } from '@devexpress/dx-react-grid';\r\nimport { Doughnut } from 'react-chartjs-2';\r\nimport { default as NewTable } from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport ChangeTimeDialog from './ChangeTimeDialog.js'\r\nimport { checkResponse } from '_helpers/notification';\r\nimport { alertResponseError } from '_helpers/notification';\r\nimport { alertErrorText } from '_helpers/notification';\r\nimport { FileFields } from 'variables/fileFields';\r\nimport CustomerCustomParametersDisplayDialog from 'components/Sending/CustomerCustomParametersDisplayDialog';\r\nimport { ServiceType } from 'variables/serviceType';\r\nimport { InfoOutlined } from '@material-ui/icons';\r\n\r\nfunction Alert(props) {\r\n return ;\r\n}\r\n\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return ;\r\n});\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\n\r\nconst DetailsDialog = (props) => {\r\n const [list, setList] = useState([])\r\n const [errList, setErrList] = useState([])\r\n const [count, setCount] = useState(0)\r\n const [loading, setLoading] = useState(false)\r\n const [errorListLoading, setErrorListLoading] = useState(false)\r\n const [cancelTaskLoading, setCancelTaskLoading] = useState(false)\r\n const [MSISDN, setMSISDN] = useState('')\r\n const [content, setContent] = useState('')\r\n const [messageStatus, setMessageStatus] = useState('')\r\n const [errorCode, setErrorCode] = useState('')\r\n\r\n const [StartDate, SetStartDate] = useState('')\r\n const [EndDate, SetEndDate] = useState('')\r\n const [fileLoad, setFileLoad] = useState(false)\r\n\r\n const [openSB, setOpenSB] = React.useState(false);\r\n const [message, setMessage] = useState('')\r\n //grid\r\n const [PageSize, SetPageSize] = useState(30)\r\n const [PageNumber, SetPageNumber] = useState(0)\r\n const [SortFields, SetSortFields] = useState([\r\n {\r\n FieldName: \"MessageId\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"SendDate\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n const [sorting, setSorting] = useState([])\r\n const [Direction, SetDirection] = useState('')\r\n\r\n //dialogs\r\n const [chartPage, SetChartPage] = useState(false)\r\n const [errorList, SetErrorList] = useState([])\r\n const [getSendDate, SetGetSendDate] = useState('')\r\n\r\n const [openChangeTimeDialog, setOpenChangeTimeDialog] = useState(false)\r\n const [expandedRowIds, setExpandedRowIds] = useState([])\r\n\r\n const [hasCustomerCustomFields, setHasCustomerCustomFields] = useState(false)\r\n const [customerCustomParametersDisplayDialog, setCustomerCustomParametersDisplayDialog] = useState(false)\r\n\r\n\r\n const classes = useStyles()\r\n const { open, toggle, AuthData, dispatch,\r\n taskId,\r\n taskName,\r\n taskMessage,\r\n taskTotalMessageCount,\r\n taskTotalDelivered,\r\n taskTotalUndelivered,\r\n taskTotalWaiting,\r\n taskKeyFieldType,\r\n taskMessageIsDynamic,\r\n taskSendingTimeOptions,\r\n taskIysMessageTypeDisplay,\r\n taskIysRecipientTypeDisplay,\r\n taskIysBrandCode,\r\n customerCustomFields,\r\n cancelButtonStatus,\r\n changeDateButtonStatus,\r\n userId,\r\n customerId,\r\n currentTaskIsScheduled\r\n } = props\r\n\r\n const handleChangeTimeDialogOpen = () => {\r\n setOpenChangeTimeDialog(!openChangeTimeDialog)\r\n }\r\n\r\n const handleCustomerCustomParametersDisplayDialogToggle = () => {\r\n setCustomerCustomParametersDisplayDialog(!customerCustomParametersDisplayDialog)\r\n }\r\n\r\n useEffect(() => {\r\n if (open) {\r\n getSmsDeliveryReportDetailErrorCodeList(AuthData)\r\n .then(res => {\r\n if (checkResponse(res, dispatch, null, 'SMS iletim hata kodları listesi alınamadı.')) {\r\n setErrList(res.data.list)\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'SMS iletim hata kodları listesi alınamadı.')\r\n })\r\n\r\n // TODO: Aktifbank onayladığında aktif et\r\n //setHasCustomerCustomFields(customerCustomFields != null && customerCustomFields.length > 0)\r\n }\r\n }, [open])\r\n\r\n useEffect(() => {\r\n setList([])\r\n setCount(0)\r\n setMSISDN('')\r\n setContent('')\r\n setMessageStatus('')\r\n setErrorCode('')\r\n if (open) {\r\n fetchData({})\r\n fetchErrorData()\r\n }\r\n }, [open])\r\n\r\n const columns = [\r\n { name: 'messageId', title: 'Sıra No' },\r\n { name: 'msisdn', title: 'Gönderilen Numara' },\r\n { name: 'name', title: 'Adı Soyadı' },\r\n { name: 'messageStatus', title: 'İletilme Durumu' },\r\n { name: 'errorCode', title: 'Hata Kodu' },\r\n { name: \"errorCodeDescription\", title: \"Hata Kodu Açıklaması\" },\r\n { name: \"sendDate\", title: \"Gönderim Tarihi\" },\r\n ];\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: 'messageId', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'msisdn', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'name', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'messageStatus', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'errorCode', width: 'auto', align: 'center', wordWrapEnabled: true },\r\n { columnName: 'errorCodeDescription', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'sendDate', width: 'auto', align: 'right', wordWrapEnabled: true }\r\n ]);\r\n\r\n const messageStatusArray = [\r\n { value: 1, description: 'İletildi' },\r\n { value: 2, description: 'İletilemedi' },\r\n { value: 3, description: 'İletim Raporu Bekleniyor' },\r\n { value: 4, description: 'Raporlama Talep Edilmedi' },\r\n { value: 5, description: 'Geçersiz' },\r\n { value: 6, description: 'Limit Aşıldı' },\r\n ]\r\n\r\n const handleExcelExport = () => {\r\n let data = {\r\n ...AuthData,\r\n userId,\r\n customerId,\r\n IsUsingMedyaMobil: false,\r\n SearchExpression: setExpression()\r\n }\r\n if (taskId) {\r\n data = { ...data, TaskId: taskId }\r\n } else {\r\n data = { ...data, TaskId: '00000000-0000-0000-0000-000000000000' }\r\n }\r\n setFileLoad(true)\r\n getDetailedDeliveryReportExcel(data)\r\n .then((res) => {\r\n setFileLoad(false)\r\n if (res && res.data) {\r\n if (res.data.fileDownloadUrl) {\r\n const link = document.createElement('a');\r\n link.href = res.data.fileDownloadUrl\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n else {\r\n alertErrorText('SMS gönderim detay listesi dosyaya aktarılamadı. İndirme URL\\'i alınamadı.')\r\n }\r\n }\r\n else {\r\n alertErrorText('SMS gönderim detay listesi dosyaya aktarılamadı. Yanıt alınamadı.')\r\n }\r\n }).catch(err => {\r\n setFileLoad(false)\r\n alertResponseError(err, 'SMS gönderim detay listesi dosyaya aktarılamadı.')\r\n })\r\n }\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return {\r\n messageId: l.messageId + 1,\r\n msisdn: (taskKeyFieldType === FileFields.ID_FIELDTYPE_MOBILEPHONE ? numberFormat(l.msisdn) : l.msisdn),\r\n name: ((l.name ? l.name : '') + (l.name && l.surname ? ' ' : '') + (l.surname ? l.surname : '')),\r\n messageStatus: l.messageStatusDescription,\r\n errorCodeDescription: l.errorCodeDescription,\r\n errorCode: l.errorCode,\r\n sendDate: moment(l.sendDate).format('DD.MM.YYYY HH:mm'),\r\n content: (l.content || '').replaceAll('#*#n', '⏎').replaceAll('\\n', '⏎').replaceAll('»', '⏎')\r\n }\r\n })\r\n )\r\n }\r\n\r\n const setExpression = () => {\r\n let expression = ''\r\n if (MSISDN !== '') {\r\n expression += `{msisdn:${MSISDN}}`\r\n }\r\n if (content !== '') {\r\n expression += `{content CONTAINS ${content}}`\r\n }\r\n if (messageStatus !== '') {\r\n expression += `{messageStatus:${messageStatus}}`\r\n }\r\n if (errorCode !== '') {\r\n expression += `{errorCode:${errorCode}}`\r\n }\r\n if (StartDate !== '' && EndDate !== '') {\r\n expression += `{sendDate:${StartDate}..${EndDate}}`\r\n }\r\n /*\r\n if (StartDate === '' && EndDate !== '') {\r\n expression += `{sendDate <= ${EndDate}}`\r\n }\r\n if (StartDate !== '' && EndDate === '') {\r\n expression += `{sendDate >= ${StartDate}}`\r\n }\r\n */\r\n return expression\r\n }\r\n\r\n const fetchData = (q) => {\r\n const ListRequest = {\r\n PageSize,\r\n PageNumber,\r\n SortFields: SortFields,\r\n SearchExpression: setExpression(),\r\n CalculateTotalRecordCount: true,\r\n ...q\r\n }\r\n let data = {\r\n AuthData,\r\n ListRequest\r\n }\r\n if (taskId) {\r\n data = { ...data, TaskId: taskId }\r\n } else {\r\n data = { ...data, TaskId: '00000000-0000-0000-0000-000000000000' }\r\n }\r\n setLoading(true)\r\n setList([])\r\n setCount(0)\r\n getSmsDetailedDeliveryReport(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, dispatch, null, 'SMS gönderim detay listesi getirilemedi.')) {\r\n SetGetSendDate(res.data.list && res.data.list[0] && res.data.list[0].sendDate)\r\n setList(res.data.list)\r\n setCount(res.data.totalRecordCount)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'SMS gönderim detay listesi getirilemedi.')\r\n })\r\n }\r\n\r\n\r\n const fetchErrorData = () => {\r\n const data = {\r\n ...AuthData,\r\n TaskId: taskId\r\n }\r\n setErrorListLoading(true)\r\n getSmsDeliveryReportErrorSummary(data)\r\n .then(res => {\r\n setErrorListLoading(false)\r\n if (checkResponse(res, dispatch, null, 'SMS gönderim hataları özet bilgisi getirilemedi.')) {\r\n SetErrorList(res.data.list)\r\n }\r\n })\r\n .catch(err => {\r\n setErrorListLoading(false)\r\n alertResponseError(err, 'SMS gönderim hataları özet bilgisi getirilemedi.')\r\n })\r\n }\r\n\r\n\r\n const handlePageSizeChange = (value) => {\r\n SetPageSize(value)\r\n SetPageNumber(0)\r\n fetchData({ PageSize: value, PageNumber: 1 })\r\n }\r\n\r\n const handlePageChange = (value) => {\r\n SetPageNumber(value)\r\n fetchData({ PageNumber: value + 1 })\r\n }\r\n\r\n const handleSort = params => {\r\n // if( params[0].columnName !== 'id'){\r\n // if(Direction === 'Ascending'){\r\n // handleGetData({},{ SortFields : [{FieldName: params[0].columnName, Direction: \"Descending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Descending\"}])\r\n // setSorting(params)\r\n // SetDirection('Descending')\r\n // }else{\r\n // handleGetData({},{ SortFields : [{FieldName: params[0].columnName, Direction: \"Ascending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Ascending\"}])\r\n // setSorting(params)\r\n // SetDirection('Ascending')\r\n // }\r\n // }else{\r\n // setSorting(params)\r\n // return\r\n // }\r\n }\r\n\r\n const handleAll = () => {\r\n setMSISDN('')\r\n setContent('')\r\n setMessageStatus('')\r\n setErrorCode('')\r\n SetStartDate('')\r\n SetEndDate('')\r\n SetPageNumber(0)\r\n fetchData({ SearchExpression: null })\r\n }\r\n\r\n const handleCancel = () => {\r\n //console.log(moment((moment(getSendDate).format('YYYY-MM-DD'))).isAfter((moment().format('YYYY-MM-DD'))))\r\n\r\n }\r\n\r\n const handleClose = (event, reason) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n\r\n setOpenSB(false);\r\n };\r\n\r\n const handleChartPage = () => {\r\n SetChartPage(!chartPage)\r\n }\r\n\r\n const RowDetail = ({ row }) => (\r\n \r\n {(row.content || '').replaceAll('#*#n', '⏎').replaceAll('\\n', '⏎').replaceAll('»', '⏎')}\r\n
\r\n );\r\n\r\n const data = {\r\n labels: [\r\n 'İletilen',\r\n 'İletilmeyen',\r\n 'İletim Raporu Beklenen',\r\n ],\r\n datasets: [{\r\n data: [\r\n taskTotalDelivered,\r\n taskTotalUndelivered,\r\n taskTotalWaiting,\r\n ],\r\n backgroundColor: [\r\n '#0AD500',\r\n '#FF0000',\r\n '#FFAE00'\r\n ],\r\n hoverBackgroundColor: [\r\n '#0AD500',\r\n '#FF0000',\r\n '#FFAE00'\r\n ]\r\n }]\r\n };\r\n\r\n const handleCancelTask = () => {\r\n const data = {\r\n ...AuthData,\r\n TaskId: taskId\r\n }\r\n Swal.fire({\r\n title: `${taskName} adlı SMS gönderim kaydını iptal etmek istediğinize emin misiniz?`,\r\n showDenyButton: true,\r\n confirmButtonText: 'Evet, İptal Et',\r\n denyButtonText: 'Vazgeç',\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n setCancelTaskLoading(true)\r\n cancelScheduledSmsTask(data)\r\n .then(res => {\r\n setCancelTaskLoading(false)\r\n if (checkResponse(res, dispatch, 'SMS gönderimi iptal edildi. ' + (res && res.data && res.data.resultUserFriendlyDescription ? res.data.resultUserFriendlyDescription : ''), 'SMS gönderim iptal işlemi başarısız.')) {\r\n fetchData({})\r\n }\r\n })\r\n .catch(err => {\r\n setCancelTaskLoading(false)\r\n alertResponseError(err, 'SMS gönderim iptal işlemi başarısız.')\r\n })\r\n } else if (result.isDenied) {\r\n Swal.fire('SMS gönderim iptali işleminden vazgeçildi.', '', 'info')\r\n }\r\n })\r\n }\r\n\r\n return (\r\n {\r\n SetChartPage(false)\r\n toggle()\r\n setList([])\r\n }}\r\n TransitionComponent={Transition} style={{ zIndex: 800 }}>\r\n \r\n \r\n {\r\n SetChartPage(false)\r\n toggle()\r\n setList([])\r\n }} aria-label=\"close\">\r\n \r\n \r\n \r\n SMS ULAŞIM RAPOR DETAYI\r\n \r\n {/*\r\n TODO: CustomerCustomFields\r\n {hasCustomerCustomFields &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n */}\r\n \r\n {fileLoad\r\n ? \r\n : \r\n \r\n \r\n }\r\n \r\n {\r\n SetChartPage(false)\r\n toggle()\r\n setList([])\r\n }}>\r\n GERİ\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {taskId &&\r\n \r\n \r\n \r\n \r\n {(taskTotalMessageCount || 0).toLocaleString(\"tr-TR\")}\r\n \r\n \r\n {'Toplam Mesaj Adedi'}\r\n \r\n \r\n \r\n \r\n {(taskTotalDelivered || 0).toLocaleString(\"tr-TR\")}\r\n \r\n \r\n {'İletilen'}\r\n \r\n \r\n \r\n \r\n {(taskTotalUndelivered || 0).toLocaleString(\"tr-TR\")}\r\n \r\n \r\n {'İletilemeyen'}\r\n \r\n \r\n \r\n \r\n {(taskTotalWaiting || 0).toLocaleString(\"tr-TR\")}\r\n \r\n \r\n {'İletim Raporu Beklenen'}\r\n \r\n \r\n \r\n }\r\n\r\n {chartPage &&\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 Hata Kodu \r\n Hata Açıklaması \r\n Adedi \r\n \r\n \r\n \r\n {cancelTaskLoading\r\n ? \r\n :\r\n errorList.map((row) => (\r\n \r\n \r\n {row.errorCode}\r\n \r\n {row.errorCodeDescription} \r\n {(row.errorCount || 0).toLocaleString(\"tr-TR\")} \r\n \r\n ))\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n {taskId && !taskMessageIsDynamic &&\r\n \r\n Mesaj Metni : {taskMessage} \r\n \r\n }\r\n\r\n {taskId &&\r\n \r\n \r\n \r\n \r\n İYS Mesaj Tipi: {taskIysMessageTypeDisplay}\r\n \r\n \r\n \r\n \r\n İYS Alıcı Tipi: {taskIysRecipientTypeDisplay}\r\n \r\n \r\n \r\n \r\n İYS Marka Kodu: {taskIysBrandCode}\r\n \r\n \r\n \r\n }\r\n\r\n \r\n \r\n \r\n \r\n Numara :\r\n \r\n \r\n \r\n setMSISDN(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Mesaj İçeriği :\r\n \r\n \r\n \r\n setContent(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Durumu :\r\n \r\n \r\n \r\n setMessageStatus(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Belirsiz \r\n {messageStatusArray.map(m => {\r\n return (\r\n {m.description} \r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Hata Kodu :\r\n \r\n \r\n \r\n {errorListLoading ?\r\n \r\n :\r\n setErrorCode(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Seçiniz \r\n {errList.map(err => {\r\n return (\r\n {err.errorCode}) {err.errorDescription} \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 Gönderim Tarihi :\r\n \r\n \r\n \r\n \r\n \r\n {\r\n SetStartDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n {\r\n SetEndDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n \r\n Ara\r\n \r\n */}\r\n \r\n {\r\n changeDateButtonStatus && (!list || list.length == 0 || (list && list[0] && list[0].messageStatus !== 7)) &&\r\n \r\n {currentTaskIsScheduled ? 'BAŞLANGIÇ TARİHİNİ DEĞİŞTİR' : 'Kalan Gönderimlerin Zamanlamasını Değiştir'}\r\n \r\n }\r\n \r\n \r\n {\r\n cancelButtonStatus && (!list || list.length == 0 || (list && list[0] && list[0].messageStatus !== 7)) &&\r\n (cancelTaskLoading\r\n ? \r\n :\r\n \r\n {currentTaskIsScheduled ? 'GÖNDERİMİ İPTAL ET' : 'Gönderimi Durdur'}\r\n \r\n )\r\n }\r\n \r\n \r\n fetchData({})}>\r\n SORGULA\r\n \r\n \r\n \r\n \r\n TÜMÜ\r\n \r\n \r\n\r\n \r\n \r\n \r\n {loading\r\n ? \r\n \r\n
\r\n : \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!taskId || taskMessageIsDynamic ?\r\n :\r\n null\r\n }\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n {message}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default DetailsDialog"," export class DateUtils {\r\n static buildTimeString(hour, minute) {\r\n return hour.toString().padStart(2, '0') + \":\" + minute.toString().padStart(2, '0');\r\n }\r\n\r\n static getHourFromTimeString(time) {\r\n var timeArray = time.split(\":\");\r\n if (timeArray.length > 0 && !isNaN(timeArray[0])) {\r\n return parseInt(timeArray[0]);\r\n }\r\n return 0;\r\n }\r\n\r\n static getMinuteFromTimeString(time) {\r\n var timeArray = time.split(\":\");\r\n if (timeArray.length > 1 && !isNaN(timeArray[1])) {\r\n return parseInt(timeArray[1]);\r\n }\r\n return 0;\r\n }\r\n\r\n static getSecondFromTimeString(time) {\r\n var timeArray = time.split(\":\");\r\n if (timeArray.length > 2 && !isNaN(timeArray[2])) {\r\n return parseInt(timeArray[2]);\r\n }\r\n return 0;\r\n }\r\n}","export class SmsSendTaskStatus {\r\n static ENUM_SMSSENDTASKSTATUS_UNKNOWN = \"Unknown\";\r\n static ENUM_SMSSENDTASKSTATUS_PASSIVE = \"Passive\";\r\n static ENUM_SMSSENDTASKSTATUS_APPROVED = \"Approved\";\r\n static ENUM_SMSSENDTASKSTATUS_PROCESSING = \"Processing\";\r\n static ENUM_SMSSENDTASKSTATUS_SENT = \"Sent\";\r\n static ENUM_SMSSENDTASKSTATUS_ERRORED = \"Errored\";\r\n static ENUM_SMSSENDTASKSTATUS_REPORTISNOTCREATED = \"ReportIsNotCreated\";\r\n static ENUM_SMSSENDTASKSTATUS_REPORTISUPDATED = \"ReportIsUpdated\";\r\n static ENUM_SMSSENDTASKSTATUS_REPORTINGCOMPLETED = \"ReportingCompleted\";\r\n static ENUM_SMSSENDTASKSTATUS_WAITINGCONFIRMATION = \"WaitingConfirmation\";\r\n static ENUM_SMSSENDTASKSTATUS_REJECTEDBYUSER = \"RejectedByUser\";\r\n static ENUM_SMSSENDTASKSTATUS_CANCELED = \"Canceled\";\r\n static ENUM_SMSSENDTASKSTATUS_CANCELEDAFTERITSSENT = \"CanceledAfterItsSent\";\r\n static ENUM_SMSSENDTASKSTATUS_WAITINGCODECCONFIRMATION = \"WaitingCodecConfirmation\";\r\n static ENUM_SMSSENDTASKSTATUS_REJECTEDBYCODEC = \"RejectedByCodec\";\r\n static ENUM_SMSSENDTASKSTATUS_WAITINGWEBCONFIRMATION = \"WaitingWebConfirmation\";\r\n static ENUM_SMSSENDTASKSTATUS_ = \"\";\r\n\r\n\r\n static ID_SMSSENDTASKSTATUS_UNKNOWN = 0;\r\n static ID_SMSSENDTASKSTATUS_PASSIVE = 1;\r\n static ID_SMSSENDTASKSTATUS_APPROVED = 2;\r\n static ID_SMSSENDTASKSTATUS_PROCESSING = 3;\r\n static ID_SMSSENDTASKSTATUS_SENT = 4;\r\n static ID_SMSSENDTASKSTATUS_ERRORED = 5;\r\n static ID_SMSSENDTASKSTATUS_REPORTISNOTCREATED = 6;\r\n static ID_SMSSENDTASKSTATUS_REPORTISUPDATED = 7;\r\n static ID_SMSSENDTASKSTATUS_REPORTINGCOMPLETED = 8;\r\n static ID_SMSSENDTASKSTATUS_WAITINGCONFIRMATION = 9;\r\n static ID_SMSSENDTASKSTATUS_REJECTEDBYUSER = 10;\r\n static ID_SMSSENDTASKSTATUS_CANCELED = 11;\r\n static ID_SMSSENDTASKSTATUS_CANCELEDAFTERITSSENT = 12;\r\n static ID_SMSSENDTASKSTATUS_WAITINGCODECCONFIRMATION = 13;\r\n static ID_SMSSENDTASKSTATUS_REJECTEDBYCODEC = 14;\r\n static ID_SMSSENDTASKSTATUS_WAITINGWEBCONFIRMATION = 15;\r\n}","export class SendingTimeType {\r\n static ENUM_SENDINGTIMETYPE_UNKNOWN = \"Unknown\";\r\n static ENUM_SENDINGTIMETYPE_INSTANTLY = \"Instantly\";\r\n static ENUM_SENDINGTIMETYPE_EXACTDATETIME = \"ExactDateTime\";\r\n static ENUM_SENDINGTIMETYPE_SETPERIODICSENDING = \"SetPeriodicSending\";\r\n\r\n static ID_SENDINGTIMETYPE_UNKNOWN = 0;\r\n static ID_SENDINGTIMETYPE_INSTANTLY = 1;\r\n static ID_SENDINGTIMETYPE_EXACTDATETIME = 2;\r\n static ID_SENDINGTIMETYPE_SETPERIODICSENDING = 3;\r\n\r\n\r\n static ENUM_SENDINGEXPIRATIONTIMEOPTION_UNKNOWN = \"Unknown\";\r\n static ENUM_SENDINGEXPIRATIONTIMEOPTION_EXACTTIME = \"ExactTime\";\r\n static ENUM_SENDINGEXPIRATIONTIMEOPTION_TIMEPERIOD = \"TimePeriod\";\r\n\r\n static ID_SENDINGEXPIRATIONTIMEOPTION_UNKNOWN = 0;\r\n static ID_SENDINGEXPIRATIONTIMEOPTION_EXACTTIME = 1;\r\n static ID_SENDINGEXPIRATIONTIMEOPTION_TIMEPERIOD = 2;\r\n}","import React, { useState, useEffect, useRef } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport { getDetailedDeliveryReportExcel, getSmsSummaryDeliveryReport, getSummaryDeliveryReportExcel } from '../../_services/reports.js'\r\nimport { getSmsSenderList } from '../../_services/sms.js'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\n\r\n\r\nimport Select from '@material-ui/core/Select';\r\nimport Box from '@material-ui/core/Box';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport { DateTimePicker } from \"@material-ui/pickers\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport {\r\n SortingState,\r\n PagingState,\r\n CustomPaging,\r\n SelectionState,\r\n IntegratedSelection\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableSelection,\r\n TableColumnResizing\r\n} from '@devexpress/dx-react-grid-material-ui';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy'\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport { FileFields } from '../../variables/fileFields'\r\nimport DetailsDialog from 'components/Reports/DetailsDialog.js'\r\nimport { DateUtils } from '_helpers/dateUtils.js'\r\nimport { withStyles } from '@material-ui/core'\r\nimport { alertResponseError } from '_helpers/notification.js'\r\nimport { checkResponse } from '_helpers/notification.js'\r\nimport { alertErrorText } from '_helpers/notification.js'\r\nimport { calculateLastSendDate } from '_helpers/sending.js'\r\nimport Swal from 'sweetalert2'\r\nimport { ClearAll, Folder } from '@material-ui/icons'\r\nimport iconTurkcell from \"assets/img/operators/icon-16x16-turkcell.png\";\r\nimport iconSuperonline from \"assets/img/operators/icon-16x16-superonline.png\";\r\nimport iconTurkTelekom from \"assets/img/operators/icon-16x16-turktelekom.png\";\r\nimport iconVodafone from \"assets/img/operators/icon-16x16-vodafone.png\";\r\nimport { SmsSendTaskStatus } from 'variables/smsSendTaskStatus.js'\r\nimport { SendingTimeType } from 'variables/sendingTimeType.js'\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\nconst SmsRaporlari = props => {\r\n const [senderList, setSenderList] = useState([])\r\n const [taskName, setTaskName] = useState('')\r\n const [sender, setSender] = useState(null)\r\n const [message, setMessage] = useState('')\r\n const [iysBrandCode, setIysBrandCode] = useState('')\r\n const [StartDate, SetStartDate] = useState(moment().startOf('day').format('YYYY-MM-DDTHH:mm:ssZ'))\r\n const [EndDate, SetEndDate] = useState(moment().endOf('day').format('YYYY-MM-DDTHH:mm:ssZ'))\r\n const [StartDate2, SetStartDate2] = useState('')\r\n const [EndDate2, SetEndDate2] = useState('')\r\n const [fileLoad, setFileLoad] = useState(false)\r\n\r\n //Detail\r\n const [taskId, setTaskId] = useState('')\r\n const [currentTaskTaskName, setCurrentTaskTaskName] = useState('')\r\n const [currentTaskMessage, SetCurrentTaskMessage] = useState('')\r\n const [currentTaskTotalMessageCount, SetCurrentTaskTotalMessageCount] = useState('')\r\n const [currentTaskTotalDelivered, SetCurrentTaskTotalDelivered] = useState('')\r\n const [currentTaskTotalUndelivered, SetCurrentTaskTotalUndelivered] = useState('')\r\n const [currentTaskTotalWaiting, SetCurrentTaskTotalWaiting] = useState('')\r\n const [currentTaskKeyFieldType, SetCurrentTaskKeyFieldType] = useState(FileFields.ID_FIELDTYPE_MOBILEPHONE)\r\n const [currentTaskMessageIsDynamic, SetCurrentTaskMessageIsDynamic] = useState(false)\r\n const [currentTaskSendingTimeOptions, SetCurrentTaskSendingTimeOptions] = useState({})\r\n const [currentTaskIysMessageTypeDisplay, SetCurrentTaskIysMessageTypeDisplay] = useState('')\r\n const [currentTaskIysRecipientTypeDisplay, SetCurrentTaskIysRecipientTypeDisplay] = useState('')\r\n const [currentTaskIysBrandCode, SetCurrentTaskIysBrandCode] = useState('')\r\n const [currentTaskIsScheduled, setCurrentTaskIsScheduled] = useState(false)\r\n const [currentTaskIsSendSeperatedPeriodicallyOptionsActive, setCurrentTaskIsSendSeperatedPeriodicallyOptionsActive] = useState(false)\r\n const [currentTaskLastSendDate, setCurrentTaskLastSendDate] = useState(new Date())\r\n const [detailDialog, setDetailDialog] = useState(false)\r\n\r\n const refCurrentTaskIsScheduled = useRef(false)\r\n const refTaskIsSendSeperatedPeriodicallyOptionsActive = useRef(false)\r\n const refTaskLastSendDate = useRef(moment())\r\n const refTaskCancelButtonStatus = useRef(false)\r\n\r\n const [loading, setLoading] = useState(false)\r\n const [list, setList] = useState([])\r\n const [count, setCount] = useState(0)\r\n const [PageSize, SetPageSize] = useState(30)\r\n const [PageNumber, SetPageNumber] = useState(0)\r\n const [selection, setSelection] = useState([])\r\n const [SortFields, SetSortFields] = useState([\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Descending\"\r\n },\r\n {\r\n FieldName: \"TaskName\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n const [sorting, setSorting] = useState([])\r\n const [Direction, SetDirection] = useState('')\r\n const [cancelButtonStatus, SetCancelButtonStatus] = useState(false)\r\n const [changeDateButtonStatus, SetChangeDateButtonStatus] = useState(false)\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: 'taskName', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'operatorNameAndKeyFieldTypeAndVirtualNumber', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'sender', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'sendDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'insertDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'totalMessageCount', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'totalDelivered', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'totalUndelivered', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'totalWaiting', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'action', width: 55, align: 'center' },\r\n ]);\r\n\r\n const columns = [\r\n { name: 'taskName', title: 'Gönderim Adı' },\r\n { name: 'operatorNameAndKeyFieldTypeAndVirtualNumber', title: 'Operatör-Tip-Sanal No' },\r\n { name: 'sender', title: 'Başlık' },\r\n { name: 'sendDate', title: 'Gönderim Tarihi' },\r\n { name: 'insertDate', title: 'Ekleme Tarihi' },\r\n { name: \"totalMessageCount\", title: \"Mesaj Sayısı\" },\r\n { name: \"totalDelivered\", title: \"İletilen\" },\r\n { name: 'totalUndelivered', title: 'İletilmeyen' },\r\n { name: 'totalWaiting', title: 'Rapor Bekleniyor' },\r\n { name: 'action', title: 'İşlem' },\r\n\r\n ];\r\n\r\n \r\n const opResolve = id => {\r\n switch (id) {\r\n case 0:\r\n return ( Turkcell )\r\n case 1:\r\n return ( Vodafone )\r\n case 2:\r\n return ( Türk Telekom )\r\n case 3:\r\n return (Asist )\r\n case 4:\r\n return ( Superonline )\r\n case 5:\r\n return ( Türk Telekom Grup )\r\n default:\r\n return ''\r\n }\r\n }\r\n\r\n const opDisplayResolver = (op) => {\r\n switch (op) {\r\n case 'Turkcell':\r\n return ( Turkcell )\r\n case 'Vodafone':\r\n return ( Vodafone )\r\n case 'TurkTelekom':\r\n return ( Türk Telekom )\r\n case 'Asist':\r\n return (Asist )\r\n case 'Superonline':\r\n return ( Superonline )\r\n case 'TurkTelekomGrup':\r\n return ( Türk Telekom Grup )\r\n default:\r\n return ''\r\n }\r\n };\r\n\r\n const Root = (props) => {\r\n return ;\r\n };\r\n\r\n const TotalMessageCountCell = ({ value, style, ...restProps }) => (\r\n \r\n \r\n {value}\r\n \r\n \r\n );\r\n\r\n const DeliveredCountCell = ({ value, style, ...restProps }) => (\r\n \r\n \r\n {value}\r\n \r\n \r\n );\r\n\r\n const UndeliveredCountCell = ({ value, style, ...restProps }) => (\r\n \r\n \r\n {value}\r\n \r\n \r\n );\r\n\r\n const WaitingCountCell = ({ value, style, ...restProps }) => (\r\n \r\n \r\n {value}\r\n \r\n \r\n );\r\n\r\n const Cell = (props) => {\r\n const { column } = props;\r\n if (column.name === 'totalMessageCount') {\r\n return ;\r\n }\r\n else if (column.name === 'totalDelivered') {\r\n return ;\r\n }\r\n else if (column.name === 'totalUndelivered') {\r\n return ;\r\n }\r\n else if (column.name === 'totalWaiting') {\r\n return ;\r\n }\r\n return ;\r\n };\r\n const { dispatch } = props\r\n const { contextSessionId, sessionId, user } = props.user\r\n\r\n const AuthData = {\r\n contextSessionId, sessionId\r\n }\r\n\r\n const handleDetailDialogToggle = () => {\r\n setDetailDialog(!detailDialog)\r\n }\r\n\r\n useEffect(() => {\r\n let _isMounted = true\r\n getSmsSenderList(AuthData)\r\n .then(res => {\r\n if (_isMounted) {\r\n if (checkResponse(res, dispatch, null, 'Başlık listesi getirilirken bir hata oluştu.')) {\r\n setSenderList(res.data.senderList)\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Başlık listesi getirilirken bir hata oluştu.')\r\n })\r\n return () => _isMounted = false\r\n }, [])\r\n\r\n useEffect(() => {\r\n fetchData({})\r\n }, [])\r\n\r\n const setExpression = () => {\r\n let expression = ''\r\n if (taskName !== '') {\r\n expression += `{taskName CONTAINS ${taskName}}`\r\n }\r\n if (sender != null && sender.sender !== '') {\r\n expression += `{sender CONTAINS ${sender.sender}}`\r\n }\r\n if (message !== '') {\r\n expression += `{message CONTAINS ${message}}`\r\n }\r\n if (iysBrandCode !== '') {\r\n expression += `{iysBrandCode CONTAINS ${iysBrandCode}}`\r\n }\r\n if (StartDate !== '' && EndDate !== '') {\r\n expression += `{insertDate:${StartDate}..${EndDate}}`\r\n }\r\n /*\r\n if (StartDate === '' && EndDate !== '') {\r\n expression += `{insertDate <= ${EndDate}}`\r\n }\r\n if (StartDate !== '' && EndDate === '') {\r\n expression += `{insertDate >= ${StartDate}}`\r\n }\r\n */\r\n if (StartDate2 !== '' && EndDate2 !== '') {\r\n expression += `{sendDate:${StartDate2}..${EndDate2}}`\r\n }\r\n /*\r\n if (StartDate2 === '' && EndDate2 !== '') {\r\n expression += `{sendDate <= ${EndDate2}}`\r\n }\r\n if (StartDate2 !== '' && EndDate2 === '') {\r\n expression += `{sendDate >= ${StartDate2}}`\r\n }\r\n */\r\n return expression\r\n }\r\n\r\n const fetchData = (query) => {\r\n setSelection([])\r\n const ListRequest = {\r\n PageSize, PageNumber, SortFields, SearchExpression: setExpression(), CalculateTotalRecordCount: true, ...query\r\n }\r\n const data = {\r\n AuthData,\r\n ListRequest\r\n }\r\n setLoading(true)\r\n getSmsSummaryDeliveryReport(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, dispatch, null, 'SMS gönderim özet listesi getirilemedi.')) {\r\n setList(res.data.list)\r\n setCount(res.data.totalRecordCount)\r\n SetCurrentTaskMessage((res.data.list && res.data.list.length > 0) ? res.data.list[0].message : '')\r\n SetCurrentTaskTotalMessageCount((res.data.list && res.data.list.length > 0) ? res.data.list[0].totalMessageCount : 0)\r\n SetCurrentTaskTotalDelivered((res.data.list && res.data.list.length > 0) ? res.data.list[0].totalDelivered : 0)\r\n SetCurrentTaskTotalUndelivered((res.data.list && res.data.list.length > 0) ? res.data.list[0].totalUndelivered : 0)\r\n SetCurrentTaskTotalWaiting((res.data.list && res.data.list.length > 0) ? res.data.list[0].totalWaiting : 0)\r\n SetCurrentTaskKeyFieldType((res.data.list && res.data.list.length > 0) ? res.data.list[0].keyFieldType : FileFields.ID_FIELDTYPE_MOBILEPHONE)\r\n SetCurrentTaskMessageIsDynamic((res.data.list && res.data.list.length > 0) ? res.data.list[0].messageIsDynamic : false)\r\n SetCurrentTaskSendingTimeOptions((res.data.list && res.data.list.length > 0) ? res.data.list[0].sendingTimeOptions : {})\r\n SetCurrentTaskIysMessageTypeDisplay((res.data.list && res.data.list.length > 0) ? res.data.list[0].iysMessageTypeDisplay : \"Girilmemiş\")\r\n SetCurrentTaskIysRecipientTypeDisplay((res.data.list && res.data.list.length > 0) ? res.data.list[0].iysRecipientTypeDisplay : \"Girilmemiş\")\r\n SetCurrentTaskIysBrandCode((res.data.list && res.data.list.length > 0) ? res.data.list[0].iysBrandCode : \"Girilmemiş\")\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'SMS gönderim özet listesi getirilemedi.')\r\n })\r\n }\r\n\r\n\r\n\r\n const handleAll = () => {\r\n setTaskName('')\r\n setSender(null)\r\n setMessage('')\r\n SetStartDate('')\r\n SetEndDate('')\r\n SetStartDate2('')\r\n SetEndDate2('')\r\n SetPageNumber(0)\r\n fetchData({ SearchExpression: null })\r\n }\r\n\r\n const handleChange = () => {\r\n\r\n }\r\n\r\n\r\n const handlePageSizeChange = (value) => {\r\n setSelection([])\r\n SetPageSize(value)\r\n SetPageNumber(0)\r\n fetchData({ PageSize: value, PageNumber: 1 })\r\n }\r\n\r\n const handlePageChange = (value) => {\r\n setSelection([])\r\n SetPageNumber(value)\r\n fetchData({ PageNumber: value + 1 })\r\n }\r\n\r\n const handleDetail = (id) => {\r\n setTaskId(id.taskId)\r\n setCurrentTaskTaskName(id.taskName || '')\r\n SetCurrentTaskMessage((id.message || '').replaceAll('#*#n', '⏎').replaceAll('\\n', '⏎').replaceAll('»', '⏎'))\r\n SetCurrentTaskTotalMessageCount(id.totalMessageCount || 0)\r\n SetCurrentTaskTotalDelivered(id.totalDelivered || 0)\r\n SetCurrentTaskTotalUndelivered(id.totalUndelivered || 0)\r\n SetCurrentTaskTotalWaiting(id.totalWaiting || 0)\r\n SetCurrentTaskKeyFieldType(id.keyFieldType || FileFields.ID_FIELDTYPE_MOBILEPHONE)\r\n SetCurrentTaskMessageIsDynamic(id.messageIsDynamic || false)\r\n SetCurrentTaskSendingTimeOptions(id.sendingTimeOptions || {})\r\n SetCurrentTaskIysMessageTypeDisplay(id.iysMessageTypeDisplay || \"Girilmemiş\")\r\n SetCurrentTaskIysRecipientTypeDisplay(id.iysRecipientTypeDisplay || \"Girilmemiş\")\r\n SetCurrentTaskIysBrandCode(id.iysBrandCode || \"Girilmemiş\")\r\n\r\n refCurrentTaskIsScheduled.current = id != null && id.sendingTimeType == SendingTimeType.ID_SENDINGTIMETYPE_EXACTDATETIME && moment(id.sendDate).isAfter(moment())\r\n refTaskIsSendSeperatedPeriodicallyOptionsActive.current = id != null && id.sendingTimeOptions != null\r\n && id.sendingTimeOptions.sendSeperatedPeriodicallyOptions != null && id.sendingTimeOptions.sendSeperatedPeriodicallyOptions.isActive;\r\n refTaskLastSendDate.current = id != null && refTaskIsSendSeperatedPeriodicallyOptionsActive.current ? calculateLastSendDate(id.sendDate, id.sendingTimeOptions.sendSeperatedPeriodicallyOptions, id.totalMessageCount) : moment()\r\n refTaskCancelButtonStatus.current = (id.status === SmsSendTaskStatus.ID_SMSSENDTASKSTATUS_APPROVED\r\n || id.status === SmsSendTaskStatus.ID_SMSSENDTASKSTATUS_PROCESSING\r\n || id.status === SmsSendTaskStatus.ID_SMSSENDTASKSTATUS_SENT\r\n || id.status === SmsSendTaskStatus.ID_SMSSENDTASKSTATUS_REPORTISNOTCREATED\r\n || id.status === SmsSendTaskStatus.ID_SMSSENDTASKSTATUS_REPORTISUPDATED\r\n || id.status === SmsSendTaskStatus.ID_SMSSENDTASKSTATUS_WAITINGCONFIRMATION)\r\n && (refCurrentTaskIsScheduled.current || (refTaskIsSendSeperatedPeriodicallyOptionsActive.current && moment(refTaskLastSendDate.current).isAfter(moment())))\r\n setCurrentTaskIsScheduled(refCurrentTaskIsScheduled.current)\r\n setCurrentTaskIsSendSeperatedPeriodicallyOptionsActive(refTaskIsSendSeperatedPeriodicallyOptionsActive.current)\r\n setCurrentTaskLastSendDate(refTaskLastSendDate.current)\r\n SetCancelButtonStatus(refTaskCancelButtonStatus.current\r\n )\r\n SetChangeDateButtonStatus(\r\n refTaskCancelButtonStatus.current\r\n )\r\n handleDetailDialogToggle()\r\n }\r\n\r\n const handleExcelExport = () => {\r\n const data = {\r\n ...AuthData,\r\n UserId: user.userInfo.userId,\r\n CustomerId: user.customerInfo.customerId,\r\n IsUsingMedyaMobil: false,\r\n SearchExpression: setExpression(),\r\n }\r\n setFileLoad(true)\r\n getSummaryDeliveryReportExcel(data)\r\n .then((res) => {\r\n setFileLoad(false)\r\n if (res && res.data) {\r\n if (res.data.fileDownloadUrl) {\r\n const link = document.createElement('a');\r\n link.href = res.data.fileDownloadUrl\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n else {\r\n alertErrorText('SMS gönderim özet listesi dosyaya aktarılamadı. İndirme URL\\'i alınamadı.')\r\n }\r\n }\r\n else {\r\n alertErrorText('SMS gönderim özet listesi dosyaya aktarılamadı. Yanıt alınamadı.')\r\n }\r\n })\r\n .catch(err => {\r\n setFileLoad(false)\r\n alertResponseError(err, 'SMS gönderim özet listesi dosyaya aktarılamadı.')\r\n })\r\n }\r\n\r\n const handleDetailExcelExport = () => {\r\n let data = {\r\n ...AuthData,\r\n UserId: user.userInfo.userId,\r\n CustomerId: user.customerInfo.customerId,\r\n IsUsingMedyaMobil: false,\r\n SearchExpression: setExpression()\r\n }\r\n\r\n if (selection.length > 0) {\r\n let taskIdList = []\r\n for (let i = 0; i < selection.length; i++) {\r\n taskIdList = [\r\n ...taskIdList,\r\n list[selection[i]].taskId\r\n ]\r\n }\r\n\r\n if (taskIdList) {\r\n data = { ...data, TaskId: taskIdList.toString() }\r\n } else {\r\n data = { ...data, TaskId: '00000000-0000-0000-0000-000000000000' }\r\n }\r\n setFileLoad(true)\r\n getDetailedDeliveryReportExcel(data)\r\n .then((res) => {\r\n setFileLoad(false)\r\n if (res && res.data) {\r\n if (res.data.fileDownloadUrl) {\r\n const link = document.createElement('a');\r\n link.href = res.data.fileDownloadUrl\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n else {\r\n alertErrorText('SMS gönderim detay listesi dosyaya aktarılamadı. İndirme URL\\'i alınamadı.')\r\n }\r\n }\r\n else {\r\n alertErrorText('SMS gönderim detay listesi dosyaya aktarılamadı. Yanıt alınamadı.')\r\n }\r\n }).catch(err => {\r\n setFileLoad(false)\r\n alertResponseError(err, 'SMS gönderim detay listesi dosyaya aktarılamadı.')\r\n })\r\n } else {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: 'Hiçbir kayıt seçilmemiş.'\r\n })\r\n }\r\n }\r\n\r\n const boxStyles = {\r\n padding: 5, color: \"#fff\", display: \"inline\", borderRadius: 5, fontWeight: 'bold', marginLeft: 5, display: \"inline\", float: 'right', backgroundColor: 'red'\r\n }\r\n\r\n const HtmlTooltip = withStyles((theme) => ({\r\n tooltip: {\r\n backgroundColor: '#f5f5f9',\r\n color: 'rgba(0, 0, 0, 0.87)',\r\n maxWidth: 220,\r\n fontSize: theme.typography.pxToRem(12),\r\n border: '1px solid #dadde9',\r\n },\r\n }))(Tooltip);\r\n\r\n const styledTaskName = (name, status, isUsingMedyaMobil, sendingTimeType, sendDate, sendingTimeOptions, totalMessageCount) => {\r\n let sendDateStatus = moment(moment(sendDate)).isAfter(moment())\r\n return (\r\n \r\n \r\n {name}\r\n \r\n {status === 2 && sendingTimeType == 1 &&\r\n İşleniyor \r\n }\r\n {status === 3 && sendingTimeType == 1 &&\r\n İşleniyor... \r\n }\r\n {(status === 11 || status === 12) &&\r\n İptal Edildi \r\n }\r\n {status === 10 &&\r\n Onaylanmadı \r\n }\r\n {status === 9 &&\r\n Onay Bekliyor \r\n }\r\n {(status === 4 || status === 2 || status === 3) && (sendingTimeType == 2 && sendDateStatus) &&\r\n İleri Tarihli \r\n }\r\n {sendingTimeOptions && sendingTimeOptions.sendSeperatedPeriodicallyOptions && sendingTimeOptions.sendSeperatedPeriodicallyOptions.isActive &&\r\n \r\n Zamana Yayılmış \r\n \r\n }\r\n {status === 5 &&\r\n Hata Oluştu \r\n }\r\n {isUsingMedyaMobil &&\r\n Medya Mobil \r\n }\r\n
\r\n )\r\n }\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return {\r\n taskId: l.taskId,\r\n taskName: styledTaskName(l.taskName || '', l.status, l.isUsingMedyaMobil, l.sendingTimeType, l.sendDate, l.sendingTimeOptions, l.totalMessageCount),\r\n operatorNameAndKeyFieldTypeAndVirtualNumber: getOperatorNameAndKeyFieldTypeAndVirtualNumber(l),\r\n sender: l.sender,\r\n sendDate: moment(l.sendDate).format('DD.MM.YYYY HH:mm'),\r\n insertDate: moment(l.insertDate).format('DD.MM.YYYY HH:mm'),\r\n totalMessageCount: (l.totalMessageCount || '0').toLocaleString(\"tr-TR\"),\r\n totalDelivered: (l.totalDelivered || '0').toLocaleString(\"tr-TR\"),\r\n totalUndelivered: (l.totalUndelivered || '0').toLocaleString(\"tr-TR\"),\r\n totalWaiting: (l.totalWaiting || '0').toLocaleString(\"tr-TR\"),\r\n action: <>\r\n \r\n handleDetail(l)} >\r\n \r\n \r\n \r\n >\r\n }\r\n })\r\n )\r\n }\r\n\r\n const getOperatorNameAndKeyFieldTypeAndVirtualNumber = (l) => {\r\n return [(opDisplayResolver(l.operatorName) || ''), ('-' + FileFields.getShortDescriptionFromId(l.keyFieldType) + '-' + (l.virtualNumber || ''))]\r\n }\r\n\r\n const getSendSeperatedPeriodicallyOptionsDescription = (sendDate, options, messageCount) => {\r\n if (options == null || !options.isActive) return Gönderim zamana yayılmadan tek seferde gönderilecek ;\r\n\r\n\r\n var description = (\"Gönderim başlatma periyodu: \" + (options.period || 0).toLocaleString(\"tr-TR\") + \" dakikada bir \" + (options.packageSize || 0).toLocaleString(\"tr-TR\") + \" adet gönderim\");\r\n\r\n var description2 = \"\";\r\n if (options.isShiftTimePeriodActive) {\r\n description2 += (\"Gönderim başlatılmayacak saat aralığı: \"\r\n + DateUtils.buildTimeString(options.shiftTimePeriodStartHour, options.shiftTimePeriodStartMinute) + \" - \"\r\n + DateUtils.buildTimeString(options.shiftTimePeriodEndHour, options.shiftTimePeriodEndMinute));\r\n }\r\n\r\n var description3 = (\"Son gönderim başlatma zamanı: \"\r\n + moment(calculateLastSendDate(sendDate, options, messageCount)).format('DD.MM.YYYY HH:mm'));\r\n\r\n if (description2 !== \"\")\r\n return {description} {description2} {description3} ;\r\n else\r\n return {description} {description3} ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Adı :\r\n \r\n \r\n \r\n setTaskName(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Başlığı :\r\n \r\n \r\n \r\n setSender(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'Başlık : ' }}\r\n >\r\n Başlık Seçiniz \r\n {senderList && senderList.map(item => {\r\n return (\r\n {item.sender} \r\n
Operator: {opResolve(item.operator)}Sanal No: {item.virtualMsisdn}
\r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Mesaj Metni :\r\n \r\n \r\n \r\n setMessage(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n İYS Marka Kodu:\r\n \r\n \r\n \r\n setIysBrandCode(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderimin Eklendiği Tarih :\r\n \r\n \r\n \r\n \r\n {\r\n SetStartDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n SetEndDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Tarih :\r\n \r\n \r\n \r\n \r\n {\r\n SetStartDate2(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n SetEndDate2(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n\r\n \r\n {/* */}\r\n \r\n\r\n \r\n fetchData({})}>\r\n SORGULA\r\n \r\n \r\n \r\n \r\n Tümü\r\n \r\n \r\n \r\n \r\n {fileLoad\r\n ? \r\n : \r\n \r\n \r\n }\r\n \r\n \r\n {fileLoad\r\n ? \r\n : \r\n \r\n \r\n }\r\n \r\n \r\n handleDetail({})} >\r\n \r\n \r\n \r\n \r\n\r\n \r\n {loading\r\n ? \r\n \r\n
\r\n : \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { user } = state.userReducer\r\n return { user }\r\n}\r\n\r\nexport default connect(mapStateToProps)(SmsRaporlari)","import React, { useState } from 'react'\r\nimport {\r\n SortingState,\r\n PagingState,\r\n CustomPaging,\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableColumnResizing\r\n} from '@devexpress/dx-react-grid-material-ui';\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\n\r\n\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport { ArrowBack } from '@material-ui/icons';\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\nconst Liste = props => {\r\n\r\n const { setMode, list, countList, loading, count, fetchEmailListData } = props\r\n\r\n const [pageSize, setPageSize] = useState(30)\r\n const [pageNumber, setPageNumber] = useState(0)\r\n const [selectFields] = useState(null)\r\n const [sortFields] = useState([\r\n {\r\n fieldName: \"InsertDate\",\r\n direction: \"Descending\"\r\n }, {\r\n fieldName: \"MsgSpecialId\",\r\n direction: \"Ascending\"\r\n }\r\n ])\r\n const [selection, setSelection] = useState([])\r\n const [sorting, setSorting] = useState([])\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return {\r\n messageIndex: l.messageIndex + 1,\r\n emailAddress: l.emailAddress,\r\n isOpened: l.isOpened ? \"Evet\" : \"Hayır\",\r\n linkClickCount : l.linkClickCount || 0,\r\n sendDate : moment(l.sendDate).format('DD.MM.YYYY HH:mm')\r\n }\r\n })\r\n )\r\n }\r\n\r\n const columns = [\r\n { name: 'messageIndex', title: 'Sıra No' },\r\n { name: 'emailAddress', title: 'Gönderen Adres' },\r\n { name: 'isOpened', title: 'Açıldı mı' },\r\n { name : \"linkClickCount\", title : \"Linke Tıklama Sayısı\"},\r\n { name : \"sendDate\", title : \"Gönderim Tarihi\"},\r\n // { name: 'fromAddress', title: 'Kimden Adresi' },\r\n // { name: 'sendDate', title: 'Gönderim Tarihi' },\r\n // { name: 'insertDate', title: 'Eklenme Tarihi' },\r\n // { name: \"messageCount\", title: \"Mesaj Sayısı\" },\r\n // { name: \"deliveredCount\", title: \"İletilen\" },\r\n // { name: 'totalOpenCount', title: 'Açılan' },\r\n // { name: 'totalLinkClickCount', title: 'Linke Tıklanan' },\r\n // { name: 'action', title: 'İşlem' },\r\n\r\n ];\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: 'messageIndex', width: 80, wordWrapEnabled: true },\r\n { columnName: 'emailAddress', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'isOpened', width: 120, wordWrapEnabled: true },\r\n { columnName: 'linkClickCount', width: 120, wordWrapEnabled: true },\r\n { columnName: 'sendDate', width: 150, wordWrapEnabled: true },\r\n // { columnName: 'fromAddress', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n // { columnName: 'sendDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n // { columnName: 'insertDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n // { columnName: 'messageCount', width: 70, align: 'right', wordWrapEnabled: true },\r\n // { columnName: 'deliveredCount', width: 70, align: 'right', wordWrapEnabled: true },\r\n // { columnName: 'totalOpenCount', width: 70, align: 'right', wordWrapEnabled: true },\r\n // { columnName: 'totalLinkClickCount', width: 70, align: 'right', wordWrapEnabled: true },\r\n // { columnName: 'action', width: 150, align: 'center' },\r\n ]);\r\n\r\n const handleChange = () => {\r\n\r\n }\r\n\r\n const handlePageSizeChange = (value) => {\r\n setSelection([])\r\n setPageSize(value)\r\n setPageNumber(0)\r\n fetchEmailListData({ pageSize: value, pageNumber: 1 })\r\n }\r\n\r\n const handlePageChange = (value) => {\r\n setSelection([])\r\n setPageNumber(value)\r\n fetchEmailListData({ pageNumber: value + 1 })\r\n }\r\n\r\n const handleDetail = () => {\r\n\r\n }\r\n\r\n const TotalMessageCountCell = ({ value, style, ...restProps }) => (\r\n \r\n \r\n {value}\r\n \r\n \r\n );\r\n\r\n const DeliveredCountCell = ({ value, style, ...restProps }) => (\r\n \r\n \r\n {value}\r\n \r\n \r\n );\r\n\r\n const UndeliveredCountCell = ({ value, style, ...restProps }) => (\r\n \r\n \r\n {value}\r\n \r\n \r\n );\r\n\r\n const WaitingCountCell = ({ value, style, ...restProps }) => (\r\n \r\n \r\n {value}\r\n \r\n \r\n );\r\n\r\n const Cell = (props) => {\r\n const { column } = props;\r\n if (column.name === 'totalMessageCount') {\r\n return ;\r\n }\r\n else if (column.name === 'totalDelivered') {\r\n return ;\r\n }\r\n else if (column.name === 'totalUndelivered') {\r\n return ;\r\n }\r\n else if (column.name === 'totalWaiting') {\r\n return ;\r\n }\r\n return ;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n setMode(0)}>\r\n \r\n \r\n \r\n \r\n \r\n Toplam Mesaj Adedi : {count} \r\n \r\n \r\n Tekil Açılan : {countList.uniqueOpenCount || 0} \r\n \r\n \r\n Tekil Link Tıklama Sayısı : {countList.uniqueLinkClickCount || 0} \r\n \r\n \r\n \r\n \r\n \r\n {loading\r\n ? \r\n \r\n
\r\n : \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Liste","import GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport moment from \"moment\";\r\nimport React from \"react\";\r\nimport { Bar } from 'react-chartjs-2';\r\n\r\nconst Tab1 = props => {\r\n\r\n const { messageObject } = props\r\n\r\n let labels = [\r\n \"Bounce Olan (%)\",\r\n \"Çıkış Yapan (%)\",\r\n \"İletilemeyen (%)\",\r\n \"Aktif Kullanıcılar (%)\",\r\n \"Açılan (%)\",\r\n \"İletilen (%)\"\r\n ];\r\n let innerData = [\r\n messageObject.hardBounceCount && messageObject.softBounceCount ? (Math.round((messageObject.hardBounceCount + messageObject.softBounceCount) / messageObject.messageCount * 100)) : 0,\r\n Math.round(messageObject.unsubscribeCount / messageObject.messageCount * 100),\r\n Math.round(messageObject.undeliveredCount / messageObject.messageCount * 100),\r\n Math.round(messageObject.totalLinkClickCount / messageObject.messageCount * 100),\r\n Math.round(messageObject.totalOpenCount / messageObject.messageCount * 100),\r\n Math.round(messageObject.deliveredCount / messageObject.messageCount * 100)\r\n ]\r\n\r\n const data = {\r\n labels: labels,\r\n datasets: [{\r\n label: 'Özet Gönderim Raporu',\r\n backgroundColor: '#3c54a5',\r\n borderColor: '#3c54a5',\r\n data: innerData ,\r\n }]\r\n };\r\n\r\n const options = {\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Mesaj Konusu :\r\n \r\n \r\n \r\n \r\n {messageObject.subject}\r\n \r\n \r\n \r\n \r\n Gönderim Yapılan Adres :\r\n \r\n \r\n \r\n \r\n {messageObject.from.fromName + \" <\" + messageObject.from.fromAddress + \">\"}\r\n \r\n \r\n \r\n \r\n Gönderim Tarihi :\r\n \r\n \r\n \r\n \r\n {moment(messageObject.startDate).format(\"DD.MM.YYYY HH:mm\")}\r\n \r\n \r\n \r\n \r\n Gönderim Adedi :\r\n \r\n \r\n \r\n \r\n {messageObject.messageCount || 0}\r\n \r\n \r\n \r\n \r\n İletilen :\r\n \r\n \r\n \r\n \r\n {messageObject.deliveredCount || 0}\r\n \r\n \r\n \r\n \r\n Toplam Açılan :\r\n \r\n \r\n \r\n \r\n {messageObject.totalOpenCount || 0}\r\n \r\n \r\n \r\n \r\n Tekil Açılan :\r\n \r\n \r\n \r\n \r\n {messageObject.uniqueOpenCount || 0}\r\n \r\n \r\n \r\n \r\n Aktif Kullanıcılar :\r\n \r\n \r\n \r\n \r\n {messageObject.totalLinkClickCount || 0}\r\n \r\n \r\n \r\n \r\n İletilemeyen :\r\n \r\n \r\n \r\n \r\n {messageObject.undeliveredCount || 0}\r\n \r\n \r\n \r\n \r\n Çıkış Yapan :\r\n \r\n \r\n \r\n \r\n {messageObject.unsubscribeCount || 0}\r\n \r\n \r\n \r\n \r\n Bounce Olan :\r\n \r\n \r\n \r\n \r\n {(messageObject.hardBounceCount && messageObject.softBounceCount) ? (messageObject.hardBounceCount + messageObject.softBounceCount) : 0}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Tab1","import GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport { numberFormat } from \"formats/number\";\r\nimport React from \"react\";\r\n\r\nconst Tab2 = props => {\r\n\r\n const { linkOpenData } = props\r\n\r\n const percentFinder = openCount => {\r\n let all = 0\r\n for (let i = 0; i < linkOpenData.length ; i++) {\r\n all += linkOpenData[i].linkOpenCount\r\n }\r\n\r\n return Math.round(openCount / all * 100)\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Link adresi\r\n \r\n \r\n \r\n \r\n Link Tıklama Adedi\r\n \r\n \r\n \r\n \r\n Yüzdesi\r\n \r\n \r\n {linkOpenData.map((l, i) => {\r\n return (\r\n \r\n \r\n \r\n \r\n {l.linkAddress}\r\n \r\n \r\n \r\n \r\n {l.linkOpenCount ? numberFormat(l.linkOpenCount) : 0}\r\n \r\n \r\n \r\n \r\n %{l.linkOpenCount ? percentFinder(l.linkOpenCount) : 0}\r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n )\r\n}\r\n\r\nexport default Tab2","import GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport moment from \"moment\";\r\nimport React from \"react\";\r\nimport { Pie, Line } from 'react-chartjs-2'\r\n\r\nconst Tab3 = props => {\r\n\r\n const { linkOpenData, linkOpenDataByDate, emailOpenDataByDate } = props\r\n\r\n const colors = [\r\n '#3c54a5',\r\n '#f44336',\r\n '#26c6da',\r\n \"#64ffda\",\r\n \"#f48fb1\",\r\n \"#4caf50\",\r\n ]\r\n const data = {\r\n labels: linkOpenData.map(l => l.linkAddress),\r\n datasets: [{\r\n label: 'Aktivite Raporu',\r\n backgroundColor: colors.slice(0, linkOpenData.length),\r\n borderColor: 'transparent',\r\n data: linkOpenData.map(l => l.linkOpenCount),\r\n }]\r\n };\r\n\r\n let labels2 = []\r\n\r\n const linkDates = linkOpenDataByDate && linkOpenDataByDate.length > 0 ? linkOpenDataByDate.map(l => moment(l.processDate).format(\"DD.MM.YYYY\")) : []\r\n const openDates = emailOpenDataByDate && emailOpenDataByDate.length > 0 ? emailOpenDataByDate.map(l => moment(l.processDate).format(\"DD.MM.YYYY\")) : []\r\n\r\n labels2 = [...linkDates, ...openDates]\r\n\r\n const data2 = {\r\n labels: labels2,\r\n datasets: [\r\n {\r\n label: 'Link Tıklama',\r\n data: linkOpenDataByDate && linkOpenDataByDate.length > 0 ? linkOpenDataByDate.map(l => l.processCount) : [],\r\n fill: false,\r\n backgroundColor: colors[0],\r\n borderColor: colors[0],\r\n },\r\n {\r\n label: 'Email Açılma',\r\n data: emailOpenDataByDate && emailOpenDataByDate.length > 0 ? emailOpenDataByDate.map(l => l.processCount) : [],\r\n fill: false,\r\n backgroundColor: colors[1],\r\n borderColor: colors[1],\r\n }\r\n ]\r\n };\r\n\r\n \r\n\r\n return (\r\n \r\n {linkOpenData && linkOpenData.length > 0 &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Tab3","import React from \"react\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport moment from \"moment\";\r\nimport { Line } from 'react-chartjs-2'\r\n\r\nconst Tab4 = props => {\r\n\r\n const { bounceDataByDate } = props\r\n\r\n const colors = [\r\n '#3c54a5',\r\n '#f44336',\r\n '#26c6da',\r\n \"#64ffda\",\r\n \"#f48fb1\",\r\n \"#4caf50\",\r\n ]\r\n\r\n const data = {\r\n labels: bounceDataByDate.length > 0 ? bounceDataByDate.map(l => moment(l.processDate).format(\"DD.MM.YYYY\")) : [],\r\n datasets: [\r\n {\r\n label: 'Bounce Adedi',\r\n data: bounceDataByDate.length > 0 ? bounceDataByDate.map(l => l.processCount) : [],\r\n fill: false,\r\n backgroundColor: colors[0],\r\n borderColor: colors[0]\r\n }\r\n ]\r\n };\r\n\r\n\r\n return(\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Tab4","import React from \"react\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport moment from \"moment\";\r\nimport { Line } from 'react-chartjs-2'\r\n\r\nconst Tab5 = props => {\r\n\r\n const { unsubscribeByDate } = props\r\n\r\n const colors = [\r\n '#3c54a5',\r\n '#f44336',\r\n '#26c6da',\r\n \"#64ffda\",\r\n \"#f48fb1\",\r\n \"#4caf50\",\r\n ]\r\n\r\n const data = {\r\n labels: (unsubscribeByDate && unsubscribeByDate.length > 0) ? unsubscribeByDate.map(l => moment(l.processDate).format(\"DD.MM.YYYY\")) : [],\r\n datasets: [\r\n {\r\n label: 'Çıkış Adedi',\r\n data: (unsubscribeByDate && unsubscribeByDate.length > 0) ? unsubscribeByDate.map(l => l.processCount) : [],\r\n fill: false,\r\n backgroundColor: colors[0],\r\n borderColor: colors[0]\r\n }\r\n ]\r\n };\r\n\r\n\r\n return(\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Tab5","import GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport React from \"react\";\r\nimport { Pie } from \"react-chartjs-2\";\r\n\r\nconst Tab6 = props => {\r\n\r\n const { deviceDataList, domainDataList } = props\r\n\r\n const colors = [\r\n '#3c54a5',\r\n '#f44336',\r\n '#26c6da',\r\n \"#64ffda\",\r\n \"#f48fb1\",\r\n \"#4caf50\",\r\n '#3c54a5',\r\n '#f44336',\r\n '#26c6da',\r\n \"#64ffda\",\r\n \"#f48fb1\",\r\n \"#4caf50\",\r\n '#3c54a5',\r\n '#f44336',\r\n '#26c6da',\r\n \"#64ffda\",\r\n \"#f48fb1\",\r\n \"#4caf50\",\r\n ]\r\n const data = {\r\n labels: deviceDataList && deviceDataList.length > 0 ? deviceDataList.map(l => l.device) : [],\r\n datasets: [{\r\n label: 'Aktivite Raporu',\r\n backgroundColor: colors.slice(0, deviceDataList && deviceDataList.length > 0 ? deviceDataList.length : 0),\r\n borderColor: 'transparent',\r\n data: deviceDataList ? deviceDataList.map(l => l.count) : [],\r\n }]\r\n };\r\n\r\n const data2 = {\r\n labels: domainDataList && domainDataList.length > 0 ? domainDataList.map(l => l.domain) : [],\r\n datasets: [{\r\n label: 'Aktivite Raporu',\r\n backgroundColor: colors.slice(0, domainDataList && domainDataList.length > 0 ? domainDataList.length : 0),\r\n borderColor: 'transparent',\r\n data: domainDataList && domainDataList.length > 0 ? domainDataList.map(l => l.count) : [],\r\n }]\r\n };\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\r\nexport default Tab6","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport SwipeableViews from 'react-swipeable-views';\r\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport Box from '@material-ui/core/Box';\r\nimport Tab1 from './Tabs/Tab1';\r\nimport Tab2 from './Tabs/Tab2';\r\nimport Tab3 from './Tabs/Tab3';\r\nimport Tab4 from './Tabs/Tab4';\r\nimport Tab5 from './Tabs/Tab5';\r\nimport Tab6 from './Tabs/Tab6';\r\nimport { getEmailReportDetailByActivities } from '_services/email';\r\n\r\nfunction TabPanel(props) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n \r\n {value === index && (\r\n \r\n {children}\r\n \r\n )}\r\n
\r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired,\r\n};\r\n\r\nfunction a11yProps(index) {\r\n return {\r\n id: `full-width-tab-${index}`,\r\n 'aria-controls': `full-width-tabpanel-${index}`,\r\n };\r\n}\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n backgroundColor: theme.palette.background.paper,\r\n width: \"100%\",\r\n },\r\n}));\r\n\r\nconst Detay = (props) => {\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const [value, setValue] = React.useState(0);\r\n const [ allData, setAllData ] = useState({}) \r\n const [ loading, setLoading ] = useState(false)\r\n const { messageObject, senderJobId, AuthData } = props\r\n\r\n useEffect(() => {\r\n if( AuthData.sessionId && AuthData.contextSessionId && senderJobId !== ''){\r\n let data = { ...AuthData, senderJobId }\r\n setLoading(true)\r\n getEmailReportDetailByActivities(data)\r\n .then( res => {\r\n setLoading(false)\r\n if(res.data && res.data.result && res.data.result.resultCode === 0 ){\r\n setAllData(res.data)\r\n }\r\n })\r\n .catch( err => {\r\n setLoading(false)\r\n })\r\n }\r\n }, [ AuthData, senderJobId ])\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n };\r\n\r\n const handleChangeIndex = (index) => {\r\n setValue(index);\r\n };\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 \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default Detay\r\n","import React, { useEffect, useState } from 'react'\r\nimport { getEmailReportSummary } from '_services/email'\r\nimport {\r\n SortingState,\r\n PagingState,\r\n CustomPaging,\r\n SelectionState,\r\n IntegratedSelection\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableSelection,\r\n TableColumnResizing\r\n} from '@devexpress/dx-react-grid-material-ui';\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\n\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy'\r\nimport VisibilityIcon from '@material-ui/icons/Visibility'\r\n\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport { alertResponseError } from '_helpers/notification.js'\r\nimport { checkResponse } from '_helpers/notification.js'\r\nimport ListIcon from '@material-ui/icons/List';\r\nimport { getExcelFile } from '_services/email';\r\nimport { alertErrorText } from '_helpers/notification';\r\nimport { getEmailReportDetail } from '_services/email';\r\nimport { ArrowBack } from '@material-ui/icons';\r\nimport Liste from './Liste';\r\nimport Detay from './Detay';\r\nimport { getEmailReportAsFile } from '_services/email';\r\nimport Button from \"components/CustomButtons/Button\"\r\nimport { Box } from \"@material-ui/core\"\r\nimport Cancel from '@material-ui/icons/Cancel';\r\nimport { deleteScheduledEmail } from '_services/email';\r\nimport { checkResultResponse } from '_helpers/notification';\r\nimport { emailingApiUrlRoot } from 'variables/serverName';\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\nconst EmailRaporlari = props => {\r\n const [pageSize, setPageSize] = useState(10)\r\n const [pageNumber, setPageNumber] = useState(0)\r\n const [selectFields] = useState(null)\r\n const [sortFields] = useState([\r\n {\r\n fieldName: \"InsertDate\",\r\n direction: \"Descending\"\r\n }, {\r\n fieldName: \"MsgSpecialId\",\r\n direction: \"Ascending\"\r\n }\r\n ])\r\n const [includes] = useState(null)\r\n const [searchExpression] = useState(null)\r\n const [searchCriterias] = useState(null)\r\n const [searchQuery] = useState(null)\r\n const [intersectList] = useState(null)\r\n const [exceptList] = useState(null)\r\n const [calculateTotalRecordCount] = useState(true)\r\n const [selection, setSelection] = useState([])\r\n const [loading, setLoading] = useState(false)\r\n const [loading1, setLoading1] = useState(false)\r\n const [loading2, setLoading2] = useState(false)\r\n const [sorting, setSorting] = useState([])\r\n const [count, setCount] = useState(0)\r\n const [count2, setCount2] = useState(0)\r\n const [fileLoad, setFileLoad] = useState(false)\r\n const [fileLoad2, setFileLoad2] = useState(false)\r\n const [list, setList] = useState([])\r\n const [list2, setList2] = useState([])\r\n const [messageObject, setMessageObject] = useState({})\r\n const [waitingShowContent, setWaitingShowContent] = useState(false)\r\n\r\n const [ countList, setCountList ] = useState({})\r\n\r\n const [senderJobId, setSenderJobId] = useState(\"\")\r\n\r\n const { sessionId, contextSessionId, dispatch, user } = props\r\n const [mode, setMode] = useState(0)\r\n\r\n const { customerInfo, userInfo } = user\r\n const { customerId } = customerInfo\r\n const { userId } = userInfo\r\n\r\n const fetchData = q => {\r\n const data = {\r\n AuthData: { sessionId, contextSessionId },\r\n ListRequest: {\r\n pageSize,\r\n pageNumber,\r\n selectFields,\r\n sortFields,\r\n includes,\r\n searchExpression,\r\n searchCriterias,\r\n searchQuery,\r\n intersectList,\r\n exceptList,\r\n calculateTotalRecordCount,\r\n ...q\r\n }\r\n }\r\n setLoading(true)\r\n getEmailReportSummary(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, dispatch, null, 'E-posta gönderim özet listesi getirilemedi.')) {\r\n setList(res.data.list)\r\n setCount(res.data.totalRecordCount)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'E-posta gönderim özet listesi getirilemedi.')\r\n })\r\n }\r\n\r\n const fetchEmailListData = (q) => {\r\n const data = {\r\n AuthData: {\r\n contextSessionId,\r\n sessionId\r\n },\r\n senderJobId,\r\n ListRequest: {\r\n pageSize: 30,\r\n pageNumber,\r\n selectFields,\r\n sortFields: [\r\n {\r\n \"FieldName\": \"MessageIndex\",\r\n \"Direction\": \"Ascending\"\r\n }, {\r\n \"FieldName\": \"SendDate\",\r\n \"Direction\": \"Ascending\"\r\n }\r\n ],\r\n includes,\r\n searchExpression,\r\n searchQuery,\r\n searchCriterias,\r\n intersectList,\r\n exceptList,\r\n calculateTotalRecordCount,\r\n ...q\r\n }\r\n }\r\n setLoading2(true)\r\n getEmailReportDetail(data)\r\n .then(res => {\r\n setLoading2(false)\r\n if (checkResponse(res, dispatch, null, 'E-posta gönderim detay listesi getirilemedi.')) {\r\n setList2(res.data.list)\r\n setCount2(res.data.totalRecordCount)\r\n if (waitingShowContent) {\r\n showContent();\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n setLoading2(false)\r\n alertResponseError(err, 'E-posta gönderim detay listesi getirilemedi.')\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n if (mode === 0) {\r\n fetchData({})\r\n } else {\r\n if (senderJobId !== \"\") {\r\n fetchEmailListData({})\r\n }\r\n }\r\n }, [mode, senderJobId])\r\n\r\n const handleGetExcellFile = () => {\r\n const data = { contextSessionId, sessionId, searchExpression, userId, customerId }\r\n setFileLoad(true)\r\n getExcelFile(data)\r\n .then((res) => {\r\n setFileLoad(false)\r\n if (res && res.data) {\r\n if (res.data.fileDownloadUrl) {\r\n const link = document.createElement('a');\r\n link.href = res.data.fileDownloadUrl\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n else {\r\n alertErrorText('E-posta gönderim özet listesi dosyaya aktarılamadı. İndirme URL\\'i alınamadı.')\r\n }\r\n }\r\n else {\r\n alertErrorText('E-posta gönderim özet listesi dosyaya aktarılamadı. Yanıt alınamadı.')\r\n }\r\n })\r\n .catch(err => {\r\n setFileLoad(false)\r\n alertResponseError(err, 'E-posta gönderim özet listesi dosyaya aktarılamadı.')\r\n })\r\n }\r\n\r\n const handleGetDetailedExcellFile = () => {\r\n const data = { contextSessionId, sessionId, senderJobId }\r\n setFileLoad2(true)\r\n getEmailReportAsFile(data)\r\n .then((res) => {\r\n setFileLoad2(false)\r\n if (res && res.data) {\r\n if (res.data.reportLink) {\r\n const link = document.createElement('a');\r\n link.href = res.data.reportLink\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n else {\r\n alertErrorText('E-posta gönderim detayı dosyaya aktarılamadı. İndirme URL\\'i alınamadı.')\r\n }\r\n }\r\n else {\r\n alertErrorText('E-posta gönderim detayı dosyaya aktarılamadı. Yanıt alınamadı.')\r\n }\r\n })\r\n .catch(err => {\r\n setFileLoad2(false)\r\n alertResponseError(err, 'E-posta gönderim detayı dosyaya aktarılamadı.')\r\n })\r\n }\r\n\r\n const handleShowContent = () => {\r\n if (list2.length > 0 && !waitingShowContent) {\r\n showContent();\r\n }\r\n else {\r\n setWaitingShowContent(true);\r\n }\r\n }\r\n\r\n const showContent = () => {\r\n if (list2.length > 0) {\r\n const contentUrl = emailingApiUrlRoot + '/Web/EmailContent/?sid=' + list2[0].sessionId + '&email=' + list2[0].emailAddress;\r\n window.open(contentUrl, '_blank', 'noreferrer');\r\n }\r\n else {\r\n alertErrorText('Gönderim içeriği, gönderim detayları oluşmadığı için açılamadı.');\r\n }\r\n setWaitingShowContent(false);\r\n }\r\n\r\n const TotalMessageCountCell = ({ value, style, ...restProps }) => (\r\n \r\n \r\n {value}\r\n \r\n \r\n );\r\n\r\n const DeliveredCountCell = ({ value, style, ...restProps }) => (\r\n \r\n \r\n {value}\r\n \r\n \r\n );\r\n\r\n const UndeliveredCountCell = ({ value, style, ...restProps }) => (\r\n \r\n \r\n {value}\r\n \r\n \r\n );\r\n\r\n const WaitingCountCell = ({ value, style, ...restProps }) => (\r\n \r\n \r\n {value}\r\n \r\n \r\n );\r\n\r\n const Cell = (props) => {\r\n const { column } = props;\r\n if (column.name === 'totalMessageCount') {\r\n return ;\r\n }\r\n else if (column.name === 'totalDelivered') {\r\n return ;\r\n }\r\n else if (column.name === 'totalUndelivered') {\r\n return ;\r\n }\r\n else if (column.name === 'totalWaiting') {\r\n return ;\r\n }\r\n return ;\r\n };\r\n\r\n const boxStyles = {\r\n padding: 5, color: \"#fff\", display: \"inline\", borderRadius: 5, fontWeight: 'bold', marginLeft: 5, display: \"inline\", float: 'right'\r\n }\r\n\r\n const styledTaskName = (name, status, startDate) => {\r\n return (\r\n \r\n \r\n {name}\r\n \r\n {(status === 15) &&\r\n İptal Edildi \r\n }\r\n {(status === 8) &&\r\n Hata Oluştu \r\n }\r\n {status < 6 && (moment().toDate() < moment(startDate).toDate()) &&\r\n İleri tarihli \r\n }\r\n
\r\n )\r\n }\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return {\r\n messageSpecialId: styledTaskName(l.messageSpecialId, l.status, l.startDate),\r\n subject: l.subject,\r\n fromName: l.from.fromName,\r\n fromAddress: l.from.fromAddress,\r\n startDate: moment(l.startDate).format('DD.MM.YYYY HH:mm'),\r\n insertDate: moment(l.insertDate).format('DD.MM.YYYY HH:mm'),\r\n messageCount: (l.messageCount || '0').toLocaleString(\"tr-TR\"),\r\n deliveredCount: (l.deliveredCount || '0').toLocaleString(\"tr-TR\"),\r\n totalOpenCount: (l.totalOpenCount || '0').toLocaleString(\"tr-TR\"),\r\n totalLinkClickCount: (l.totalLinkClickCount || '0').toLocaleString(\"tr-TR\"),\r\n action: \r\n \r\n {l.status < 6 && (moment().toDate() < moment(l.startDate).toDate()) &&\r\n \r\n {\r\n handleCancel(l.jobId)\r\n }} >\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n {\r\n setMode(1)\r\n setMessageObject(l)\r\n setSenderJobId(l.jobId)\r\n }} >\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n setSenderJobId(l.jobId)\r\n setMode(2)\r\n setCountList(l)\r\n }} >\r\n \r\n \r\n \r\n \r\n \r\n }\r\n })\r\n )\r\n }\r\n\r\n const handleCancel = senderJobId => {\r\n const data = { sessionId, contextSessionId, senderJobId }\r\n setLoading(true)\r\n deleteScheduledEmail(data)\r\n .then( res => {\r\n setLoading(false)\r\n if (checkResultResponse(res, dispatch, null, 'Gönderim iptal edilirken bir hata oluştu.')) {\r\n fetchData({})\r\n }\r\n })\r\n .catch( err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Gönderim iptal edilirken bir hata oluştu.')\r\n })\r\n }\r\n \r\n const columns = [\r\n { name: 'messageSpecialId', title: 'Gönderim Adı' },\r\n { name: 'subject', title: 'Mesaj Konusu' },\r\n { name: 'fromName', title: 'Kimden Metni' },\r\n { name: 'fromAddress', title: 'Kimden Adresi' },\r\n { name: 'startDate', title: 'Gönderim Tarihi' },\r\n { name: 'insertDate', title: 'Eklenme Tarihi' },\r\n { name: \"messageCount\", title: \"Mesaj Sayısı\" },\r\n { name: \"deliveredCount\", title: \"İletilen\" },\r\n { name: 'totalOpenCount', title: 'Açılan' },\r\n { name: 'totalLinkClickCount', title: 'Linke Tıklanan' },\r\n { name: 'action', title: 'İşlem' },\r\n\r\n ];\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: 'messageSpecialId', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'subject', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'fromName', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'fromAddress', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'startDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'insertDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'messageCount', width: 70, align: 'right', wordWrapEnabled: true },\r\n { columnName: 'deliveredCount', width: 70, align: 'right', wordWrapEnabled: true },\r\n { columnName: 'totalOpenCount', width: 70, align: 'right', wordWrapEnabled: true },\r\n { columnName: 'totalLinkClickCount', width: 70, align: 'right', wordWrapEnabled: true },\r\n { columnName: 'action', width: 170, align: 'center' },\r\n ]);\r\n\r\n const handleChange = () => {\r\n\r\n }\r\n\r\n const handlePageSizeChange = (value) => {\r\n setSelection([])\r\n setPageSize(value)\r\n setPageNumber(0)\r\n fetchData({ pageSize: value, pageNumber: 1 })\r\n }\r\n\r\n const handlePageChange = (value) => {\r\n setSelection([])\r\n setPageNumber(value)\r\n fetchData({ pageNumber: value + 1 })\r\n }\r\n\r\n const AuthData = { sessionId, contextSessionId }\r\n\r\n if (mode === 1) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n setMode(0)}>\r\n \r\n \r\n \r\n \r\n \r\n {messageObject.subject} \r\n \r\n \r\n \r\n {fileLoad2 && senderJobId !== \"\"\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 if (mode === 2) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n fetchData({})}> Listeyi Yenile \r\n \r\n {fileLoad\r\n ? \r\n : \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n {loading\r\n ? \r\n \r\n
\r\n : \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default EmailRaporlari","import { domain } from './domain'\r\nimport axios from 'axios'\r\n\r\nexport const getMMSSenderWithDetailList = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/MmsService/GetMMSSenderWithDetailList', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getIysMessagingParameterList = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/MmsService/GetIysMessagingParameterList', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const sendingListClear = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/MmsService/SendingListClear', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const uploadTemporaryMmsFile = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/MmsService/UploadTemporaryMmsFile', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const deleteTemporaryMmsFiles = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/MmsService/DeleteTemporaryMmsFiles', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const saveMmsFilesForSending = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/MmsService/SaveMmsFilesForSending', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const updateSendMmsInfoAndGetSummary = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/MmsService/UpdateSendMmsInfoAndGetSummary', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const sendMms = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/MmsService/SendMms', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getMmsSummaryDeliveryReport = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/MmsService/GetMmsSummaryDeliveryReport', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getSummaryReportExcel = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/MmsService/GetSummaryReportExcel', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getMmsDetailedDeliveryReport = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/MmsService/GetMmsDetailedDeliveryReport', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getMmsDeliveryReportDetailErrorCodeList = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/MmsService/GetMmsDeliveryReportDetailErrorCodeList', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getDetailedReportExcel = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/MmsService/GetDetailedReportExcel', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getScheduledMmsTaskList = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/MmsService/GetScheduledMmsTaskList', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const sendingListBuilderCopy = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/MmsService/SendingListBuilderCopy', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const cancelScheduledMmsTask = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/MmsService/CancelScheduledMMSTask', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}","import React, { useState, useEffect } from 'react';\r\nimport {\r\n getSmsDeliveryReportDetailErrorCodeList,\r\n getSmsDetailedDeliveryReport,\r\n getSmsDeliveryReportErrorSummary, getDetailedDeliveryReportExcel,\r\n cancelScheduledSmsTask,\r\n} from '../../_services/reports'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport {\r\n SortingState,\r\n PagingState,\r\n CustomPaging\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableRowDetail,\r\n TableColumnResizing\r\n} from '@devexpress/dx-react-grid-material-ui';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy'\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Box from '@material-ui/core/Box';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Slide from '@material-ui/core/Slide';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport { DateTimePicker } from \"@material-ui/pickers\";\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport styles from \"assets/jss/material-dashboard-react/components/importFileDialog.js\"\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport MuiAlert from '@material-ui/lab/Alert';\r\nimport { numberFormat } from '../../formats/number.js'\r\nimport Swal from 'sweetalert2'\r\nimport { RowDetailState } from '@devexpress/dx-react-grid';\r\nimport { Doughnut } from 'react-chartjs-2';\r\nimport { default as NewTable } from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport ChangeTimeDialog from './ChangeTimeDialog.js'\r\nimport { checkResponse } from '_helpers/notification';\r\nimport { alertResponseError } from '_helpers/notification';\r\nimport { alertErrorText } from '_helpers/notification';\r\nimport { FileFields } from 'variables/fileFields';\r\nimport { getMmsDeliveryReportDetailErrorCodeList } from '_services/mms';\r\nimport { getDetailedReportExcel } from '_services/mms';\r\nimport { getMmsDetailedDeliveryReport } from '_services/mms';\r\nimport { cancelScheduledMmsTask } from '_services/mms';\r\n\r\nfunction Alert(props) {\r\n return ;\r\n}\r\n\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return ;\r\n});\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\n\r\nconst MMSDetailsDialog = (props) => {\r\n const [list, setList] = useState([])\r\n const [errList, setErrList] = useState([])\r\n const [count, setCount] = useState(0)\r\n const [loading, setLoading] = useState(false)\r\n const [errorListLoading, setErrorListLoading] = useState(false)\r\n const [cancelTaskLoading, setCancelTaskLoading] = useState(false)\r\n const [MSISDN, setMSISDN] = useState('')\r\n const [content, setContent] = useState('')\r\n const [messageStatus, setMessageStatus] = useState('')\r\n const [errorCode, setErrorCode] = useState('')\r\n\r\n const [StartDate, SetStartDate] = useState('')\r\n const [EndDate, SetEndDate] = useState('')\r\n const [fileLoad, setFileLoad] = useState(false)\r\n\r\n const [openSB, setOpenSB] = React.useState(false);\r\n const [message, setMessage] = useState('')\r\n //grid\r\n const [PageSize, SetPageSize] = useState(30)\r\n const [PageNumber, SetPageNumber] = useState(0)\r\n const [SortFields, SetSortFields] = useState([\r\n {\r\n FieldName: \"MessageId\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"SendDate\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n const [sorting, setSorting] = useState([])\r\n const [Direction, SetDirection] = useState('')\r\n\r\n //dialogs\r\n const [chartPage, SetChartPage] = useState(false)\r\n const [errorList, SetErrorList] = useState([])\r\n const [getSendDate, SetGetSendDate] = useState('')\r\n \r\n const [openChangeTimeDialog, setOpenChangeTimeDialog] = useState(false)\r\n const [expandedRowIds, setExpandedRowIds] = useState([])\r\n\r\n\r\n const classes = useStyles()\r\n const { open, toggle, AuthData, dispatch, \r\n taskId,\r\n taskName,\r\n taskMessage,\r\n taskTotalMessageCount,\r\n taskTotalDelivered,\r\n taskTotalUndelivered,\r\n taskTotalWaiting,\r\n taskKeyFieldType,\r\n taskMessageIsDynamic,\r\n taskSendingTimeOptions,\r\n taskIysMessageTypeDisplay,\r\n taskIysRecipientTypeDisplay,\r\n taskIysBrandCode,\r\n cancelButtonStatus,\r\n SetCancelButtonStatus,\r\n changeDateButtonStatus,\r\n userId,\r\n customerId,\r\n } = props\r\n\r\n const handleChangeTimeDialogOpen = () => {\r\n setOpenChangeTimeDialog(!openChangeTimeDialog)\r\n }\r\n\r\n useEffect(() => {\r\n if (open) {\r\n getMmsDeliveryReportDetailErrorCodeList(AuthData)\r\n .then(res => {\r\n if (checkResponse(res, dispatch, null, 'SMS iletim hata kodları listesi alınamadı.')) {\r\n setErrList(res.data.list)\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'SMS iletim hata kodları listesi alınamadı.')\r\n })\r\n }\r\n }, [open])\r\n\r\n useEffect(() => {\r\n setList([])\r\n setCount(0)\r\n setMSISDN('')\r\n setContent('')\r\n setMessageStatus('')\r\n setErrorCode('')\r\n if (open) {\r\n fetchData({})\r\n //fetchErrorData()\r\n }\r\n }, [open])\r\n\r\n const columns = [\r\n { name: 'messageId', title: 'Sıra No' },\r\n { name: 'msisdn', title: 'Gönderilen Numara' },\r\n { name: 'messageStatus', title: 'İletilme Durumu' },\r\n { name: \"errorCodeDescription\", title: \"Hata Kodu/Açıklaması\" },\r\n { name: \"sendDate\", title: \"Gönderim Tarihi\" },\r\n ];\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: 'messageId', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'msisdn', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'messageStatus', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'errorCodeDescription', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'sendDate', width: 'auto', align: 'right', wordWrapEnabled: true }\r\n ]);\r\n\r\n const messageStatusArray = [\r\n { value: 1, description: 'İletildi' },\r\n { value: 2, description: 'İletilemedi' },\r\n { value: 3, description: 'İletim Raporu Bekleniyor' },\r\n { value: 4, description: 'Raporlama Talep Edilmedi' },\r\n { value: 5, description: 'Geçersiz' },\r\n { value: 6, description: 'Limit Aşıldı' },\r\n ]\r\n\r\n const handleExcelExport = () => {\r\n let data = {\r\n ...AuthData,\r\n userId,\r\n customerId,\r\n IsUsingMedyaMobil: false,\r\n SearchExpression: setExpression()\r\n }\r\n if (taskId) {\r\n data = { ...data, TaskId: taskId }\r\n } else {\r\n data = { ...data, TaskId: '00000000-0000-0000-0000-000000000000' }\r\n }\r\n setFileLoad(true)\r\n getDetailedReportExcel(data)\r\n .then((res) => {\r\n setFileLoad(false)\r\n if (res && res.data) {\r\n if (res.data.fileDownloadUrl) {\r\n const link = document.createElement('a');\r\n link.href = res.data.fileDownloadUrl\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n else {\r\n alertErrorText('MMS gönderim detay listesi dosyaya aktarılamadı. İndirme URL\\'i alınamadı.')\r\n }\r\n }\r\n else {\r\n alertErrorText('MMS gönderim detay listesi dosyaya aktarılamadı. Yanıt alınamadı.')\r\n }\r\n }).catch(err => {\r\n setFileLoad(false)\r\n alertResponseError(err, 'MMS gönderim detay listesi dosyaya aktarılamadı.')\r\n })\r\n }\r\n\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return {\r\n messageId: l.messageId + 1,\r\n msisdn: (taskKeyFieldType === FileFields.ID_FIELDTYPE_MOBILEPHONE ? numberFormat(l.msisdn) : l.msisdn),\r\n messageStatus: l.messageStatusDescription,\r\n errorCodeDescription: l.errorCode && l.errorCodeDescription ? (l.errorCode + \" / \" + l.errorCodeDescription) : \"\",\r\n sendDate: moment(l.sendDate).format('DD.MM.YYYY HH:mm'),\r\n }\r\n })\r\n )\r\n }\r\n\r\n const setExpression = () => {\r\n let expression = ''\r\n if (MSISDN !== '') {\r\n expression += `{msisdn:${MSISDN}}`\r\n }\r\n if (content !== '') {\r\n expression += `{content CONTAINS ${content}}`\r\n }\r\n if (messageStatus !== '') {\r\n expression += `{messageStatus:${messageStatus}}`\r\n }\r\n if (errorCode !== '') {\r\n expression += `{errorCode:${errorCode}}`\r\n }\r\n if (StartDate !== '' && EndDate !== '') {\r\n expression += `{sendDate:${StartDate}..${EndDate}}`\r\n }\r\n /*\r\n if (StartDate === '' && EndDate !== '') {\r\n expression += `{sendDate <= ${EndDate}}`\r\n }\r\n if (StartDate !== '' && EndDate === '') {\r\n expression += `{sendDate >= ${StartDate}}`\r\n }\r\n */\r\n return expression\r\n }\r\n\r\n const fetchData = (q) => {\r\n const Request = {\r\n PageSize,\r\n PageNumber,\r\n SortFields: SortFields,\r\n SearchExpression: setExpression(),\r\n CalculateTotalRecordCount: true,\r\n SelectFields : null,\r\n Includes: null,\r\n SearchCriterias: null, \r\n SearchQuery: null, \r\n IntersectList: null, \r\n ExceptList: null,\r\n ...q\r\n }\r\n let data = {\r\n AuthData,\r\n Request\r\n }\r\n if (taskId) {\r\n data = { ...data, TaskId: taskId }\r\n } else {\r\n data = { ...data, TaskId: '00000000-0000-0000-0000-000000000000' }\r\n }\r\n setLoading(true)\r\n setList([])\r\n setCount(0)\r\n getMmsDetailedDeliveryReport(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, dispatch, null, 'MMS gönderim detay listesi getirilemedi.')) {\r\n SetGetSendDate(res.data.list && res.data.list[0] && res.data.list[0].sendDate)\r\n setList(res.data.list)\r\n setCount(res.data.totalRecordCount)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'MMS gönderim detay listesi getirilemedi.')\r\n })\r\n }\r\n\r\n\r\n const fetchErrorData = () => {\r\n const data = {\r\n ...AuthData,\r\n TaskId: taskId\r\n }\r\n setErrorListLoading(true)\r\n getSmsDeliveryReportErrorSummary(data)\r\n .then(res => {\r\n setErrorListLoading(false)\r\n if (checkResponse(res, dispatch, null, 'MMS gönderim hataları özet bilgisi getirilemedi.')) {\r\n SetErrorList(res.data.list)\r\n }\r\n })\r\n .catch(err => {\r\n setErrorListLoading(false)\r\n alertResponseError(err, 'MMS gönderim hataları özet bilgisi getirilemedi.')\r\n })\r\n }\r\n\r\n\r\n const handlePageSizeChange = (value) => {\r\n SetPageSize(value)\r\n SetPageNumber(0)\r\n fetchData({ PageSize: value, PageNumber: 1 })\r\n }\r\n\r\n const handlePageChange = (value) => {\r\n SetPageNumber(value)\r\n fetchData({ PageNumber: value + 1 })\r\n }\r\n\r\n const handleSort = params => {\r\n // if( params[0].columnName !== 'id'){\r\n // if(Direction === 'Ascending'){\r\n // handleGetData({},{ SortFields : [{FieldName: params[0].columnName, Direction: \"Descending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Descending\"}])\r\n // setSorting(params)\r\n // SetDirection('Descending')\r\n // }else{\r\n // handleGetData({},{ SortFields : [{FieldName: params[0].columnName, Direction: \"Ascending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Ascending\"}])\r\n // setSorting(params)\r\n // SetDirection('Ascending')\r\n // }\r\n // }else{\r\n // setSorting(params)\r\n // return\r\n // }\r\n }\r\n\r\n const handleAll = () => {\r\n setMSISDN('')\r\n setContent('')\r\n setMessageStatus('')\r\n setErrorCode('')\r\n SetStartDate('')\r\n SetEndDate('')\r\n SetPageNumber(0)\r\n fetchData({ SearchExpression: null })\r\n }\r\n\r\n const handleCancel = () => {\r\n //console.log(moment((moment(getSendDate).format('YYYY-MM-DD'))).isAfter((moment().format('YYYY-MM-DD'))))\r\n\r\n }\r\n\r\n const handleClose = (event, reason) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n\r\n setOpenSB(false);\r\n };\r\n\r\n const handleChartPage = () => {\r\n SetChartPage(!chartPage)\r\n }\r\n\r\n const RowDetail = ({ row }) => (\r\n \r\n {(row.content || '').replaceAll('#*#n', '⏎').replaceAll('\\n', '⏎').replaceAll('»', '⏎')}\r\n
\r\n );\r\n\r\n const data = {\r\n labels: [\r\n 'İletilen',\r\n 'İletilmeyen',\r\n 'İletim Raporu Beklenen',\r\n ],\r\n datasets: [{\r\n data: [\r\n taskTotalDelivered,\r\n taskTotalUndelivered,\r\n taskTotalWaiting,\r\n ],\r\n backgroundColor: [\r\n '#0AD500',\r\n '#FF0000',\r\n '#FFAE00'\r\n ],\r\n hoverBackgroundColor: [\r\n '#0AD500',\r\n '#FF0000',\r\n '#FFAE00'\r\n ]\r\n }]\r\n };\r\n\r\n const handleCancelTask = () => {\r\n const data = {\r\n ...AuthData,\r\n TaskId: taskId\r\n }\r\n Swal.fire({\r\n title: `${taskName} adlı MMS gönderim kaydını iptal etmek istediğinize emin misiniz?`,\r\n showDenyButton: true,\r\n confirmButtonText: 'Evet, İptal Et',\r\n denyButtonText: 'Vazgeç',\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n setCancelTaskLoading(true)\r\n cancelScheduledMmsTask(data)\r\n .then(res => {\r\n setCancelTaskLoading(false)\r\n if (checkResponse(res, dispatch, 'MMS gönderimi iptal edildi. ' + (res && res.data && res.data.resultUserFriendlyDescription ? res.data.resultUserFriendlyDescription : ''), 'MMS gönderim iptal işlemi başarısız.')) {\r\n SetCancelButtonStatus(false)\r\n fetchData({})\r\n }\r\n })\r\n .catch(err => {\r\n setCancelTaskLoading(false)\r\n alertResponseError(err, 'MMS gönderim iptal işlemi başarısız.')\r\n })\r\n } else if (result.isDenied) {\r\n Swal.fire('MMS gönderim iptali işleminden vazgeçildi.', '', 'info')\r\n }\r\n })\r\n }\r\n\r\n return (\r\n {\r\n SetChartPage(false)\r\n toggle()\r\n setList([])\r\n }}\r\n TransitionComponent={Transition} style={{ zIndex: 800 }}>\r\n \r\n \r\n {\r\n SetChartPage(false)\r\n toggle()\r\n setList([])\r\n }} aria-label=\"close\">\r\n \r\n \r\n \r\n {\"MMS ULAŞIM RAPOR DETAYI ( \" + props.taskName+ \" )\"} \r\n \r\n \r\n {fileLoad\r\n ? \r\n : \r\n \r\n \r\n }\r\n \r\n {\r\n SetChartPage(false)\r\n toggle()\r\n setList([])\r\n }}>\r\n GERİ\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {taskId &&\r\n \r\n \r\n \r\n \r\n {(taskTotalMessageCount || 0).toLocaleString(\"tr-TR\")}\r\n \r\n \r\n {'Toplam Mesaj Adedi'}\r\n \r\n \r\n \r\n \r\n {(taskTotalDelivered || 0).toLocaleString(\"tr-TR\")}\r\n \r\n \r\n {'İletilen'}\r\n \r\n \r\n \r\n \r\n {(taskTotalUndelivered || 0).toLocaleString(\"tr-TR\")}\r\n \r\n \r\n {'İletilemeyen'}\r\n \r\n \r\n \r\n \r\n {(taskTotalWaiting || 0).toLocaleString(\"tr-TR\")}\r\n \r\n \r\n {'İletim Raporu Beklenen'}\r\n \r\n \r\n \r\n }\r\n\r\n {chartPage &&\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 Hata Kodu \r\n Hata Açıklaması \r\n Adedi \r\n \r\n \r\n \r\n {cancelTaskLoading\r\n ? \r\n :\r\n errorList.map((row) => (\r\n \r\n \r\n {row.errorCode}\r\n \r\n {row.errorCodeDescription} \r\n {(row.errorCount || 0).toLocaleString(\"tr-TR\")} \r\n \r\n ))\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n {/* {taskId && !taskMessageIsDynamic &&\r\n \r\n Mesaj Metni : {taskMessage} \r\n \r\n } */}\r\n\r\n {taskId &&\r\n \r\n \r\n \r\n \r\n İYS Mesaj Tipi: {taskIysMessageTypeDisplay}\r\n \r\n \r\n \r\n \r\n İYS Alıcı Tipi: {taskIysRecipientTypeDisplay}\r\n \r\n \r\n \r\n \r\n İYS Marka Kodu: {taskIysBrandCode}\r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n Numara :\r\n \r\n \r\n \r\n setMSISDN(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\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 Durumu :\r\n \r\n \r\n \r\n setMessageStatus(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Belirsiz \r\n {messageStatusArray.map(m => {\r\n return (\r\n {m.description} \r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Hata Kodu :\r\n \r\n \r\n \r\n {errorListLoading ?\r\n \r\n :\r\n setErrorCode(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Seçiniz \r\n {errList.map(err => {\r\n return (\r\n {err.errorCode}) {err.errorDescription} \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 Gönderim Tarihi :\r\n \r\n \r\n \r\n \r\n \r\n {\r\n SetStartDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n {\r\n SetEndDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n \r\n Ara\r\n \r\n */}\r\n \r\n \r\n \r\n {\r\n cancelButtonStatus && (!list || list.length == 0 || (list && list[0] && list[0].messageStatus !== 7)) &&\r\n (cancelTaskLoading\r\n ? \r\n :\r\n \r\n GÖNDERİMİ İPTAL ET\r\n \r\n )\r\n }\r\n \r\n \r\n fetchData({})}>\r\n SORGULA\r\n \r\n \r\n \r\n \r\n TÜMÜ\r\n \r\n \r\n\r\n \r\n \r\n \r\n {loading\r\n ? \r\n \r\n
\r\n : \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!taskId || taskMessageIsDynamic ?\r\n :\r\n null\r\n }\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n {message}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default MMSDetailsDialog","import React, { useState, useEffect } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\n\r\n\r\nimport Select from '@material-ui/core/Select';\r\nimport Box from '@material-ui/core/Box';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport { DateTimePicker } from \"@material-ui/pickers\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport {\r\n SortingState,\r\n PagingState,\r\n CustomPaging,\r\n SelectionState,\r\n IntegratedSelection\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableSelection,\r\n TableColumnResizing\r\n} from '@devexpress/dx-react-grid-material-ui';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy'\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport { FileFields } from '../../variables/fileFields'\r\nimport MMSDetailsDialog from 'components/Reports/MMSDetailsDialog.js'\r\nimport { DateUtils } from '_helpers/dateUtils.js'\r\nimport { withStyles } from '@material-ui/core'\r\nimport { alertResponseError } from '_helpers/notification.js'\r\nimport { checkResponse } from '_helpers/notification.js'\r\nimport { alertErrorText } from '_helpers/notification.js'\r\nimport { calculateLastSendDate } from '_helpers/sending.js'\r\nimport Swal from 'sweetalert2'\r\nimport { getMmsSummaryDeliveryReport } from '_services/mms.js'\r\nimport { getSummaryReportExcel } from '_services/mms.js'\r\nimport { getMMSSenderWithDetailList } from '_services/mms.js'\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\nconst MMSRaporlari = props => {\r\n const [senderList, setSenderList] = useState([])\r\n const [taskName, setTaskName] = useState('')\r\n const [sender, setSender] = useState('')\r\n const [subject, setSubject] = useState('')\r\n const [iysBrandCode, setIysBrandCode] = useState('')\r\n const [StartDate, SetStartDate] = useState(moment().startOf('day').format('YYYY-MM-DDTHH:mm:ssZ'))\r\n const [EndDate, SetEndDate] = useState(moment().endOf('day').format('YYYY-MM-DDTHH:mm:ssZ'))\r\n const [StartDate2, SetStartDate2] = useState('')\r\n const [EndDate2, SetEndDate2] = useState('')\r\n const [fileLoad, setFileLoad] = useState(false)\r\n\r\n //Detail\r\n const [taskId, setTaskId] = useState('')\r\n const [currentTaskTaskName, setCurrentTaskTaskName] = useState('')\r\n const [currentTaskMessage, SetCurrentTaskMessage] = useState('')\r\n const [currentTaskTotalMessageCount, SetCurrentTaskTotalMessageCount] = useState('')\r\n const [currentTaskTotalDelivered, SetCurrentTaskTotalDelivered] = useState('')\r\n const [currentTaskTotalUndelivered, SetCurrentTaskTotalUndelivered] = useState('')\r\n const [currentTaskTotalWaiting, SetCurrentTaskTotalWaiting] = useState('')\r\n const [currentTaskKeyFieldType, SetCurrentTaskKeyFieldType] = useState(FileFields.ID_FIELDTYPE_MOBILEPHONE)\r\n const [currentTaskMessageIsDynamic, SetCurrentTaskMessageIsDynamic] = useState(false)\r\n const [currentTaskSendingTimeOptions, SetCurrentTaskSendingTimeOptions] = useState({})\r\n const [currentTaskIysMessageTypeDisplay, SetCurrentTaskIysMessageTypeDisplay] = useState('')\r\n const [currentTaskIysRecipientTypeDisplay, SetCurrentTaskIysRecipientTypeDisplay] = useState('')\r\n const [currentTaskIysBrandCode, SetCurrentTaskIysBrandCode] = useState('')\r\n const [detailDialog, setDetailDialog] = useState(false)\r\n\r\n const [loading, setLoading] = useState(false)\r\n const [list, setList] = useState([])\r\n const [count, setCount] = useState(0)\r\n const [PageSize, SetPageSize] = useState(30)\r\n const [PageNumber, SetPageNumber] = useState(0)\r\n const [selection, setSelection] = useState([])\r\n const [SortFields, SetSortFields] = useState([\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Descending\"\r\n },\r\n {\r\n FieldName: \"TaskName\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n const [sorting, setSorting] = useState([])\r\n const [Direction, SetDirection] = useState('')\r\n const [cancelButtonStatus, SetCancelButtonStatus] = useState(false)\r\n const [changeDateButtonStatus, SetChangeDateButtonStatus] = useState(false)\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: 'previewUrl', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'taskName', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'messageSubject', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'sender', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'sendDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'insertDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'totalMessageCount', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'totalDelivered', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'totalUndelivered', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'totalWaiting', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'action', width: 55, align: 'center' },\r\n ]);\r\n\r\n const columns = [\r\n { name: 'previewUrl', title: 'Görsel' },\r\n { name: 'taskName', title: 'Gönderim Adı' },\r\n { name: 'messageSubject', title: 'Konu' },\r\n { name: 'sender', title: 'Başlık' },\r\n { name: 'sendDate', title: 'Gönderim Tarihi' },\r\n { name: 'insertDate', title: 'Ekleme Tarihi' },\r\n { name: \"totalMessageCount\", title: \"Mesaj Sayısı\" },\r\n { name: \"totalDelivered\", title: \"İletilen\" },\r\n { name: 'totalUndelivered', title: 'İletilmeyen' },\r\n { name: 'totalWaiting', title: 'Rapor Bekleniyor' },\r\n { name: 'action', title: 'İşlem' },\r\n\r\n ];\r\n\r\n const Root = (props) => {\r\n return ;\r\n };\r\n\r\n const TotalMessageCountCell = ({ value, style, ...restProps }) => (\r\n \r\n \r\n {value}\r\n \r\n \r\n );\r\n\r\n const DeliveredCountCell = ({ value, style, ...restProps }) => (\r\n \r\n \r\n {value}\r\n \r\n \r\n );\r\n\r\n const UndeliveredCountCell = ({ value, style, ...restProps }) => (\r\n \r\n \r\n {value}\r\n \r\n \r\n );\r\n\r\n const WaitingCountCell = ({ value, style, ...restProps }) => (\r\n \r\n \r\n {value}\r\n \r\n \r\n );\r\n\r\n const Cell = (props) => {\r\n const { column } = props;\r\n if (column.name === 'totalMessageCount') {\r\n return ;\r\n }\r\n else if (column.name === 'totalDelivered') {\r\n return ;\r\n }\r\n else if (column.name === 'totalUndelivered') {\r\n return ;\r\n }\r\n else if (column.name === 'totalWaiting') {\r\n return ;\r\n }\r\n return ;\r\n };\r\n const { dispatch } = props\r\n const { contextSessionId, sessionId, user } = props.user\r\n\r\n const AuthData = {\r\n contextSessionId, sessionId\r\n }\r\n\r\n const handleDetailDialogToggle = () => {\r\n setDetailDialog(!detailDialog)\r\n }\r\n\r\n useEffect(() => {\r\n let _isMounted = true\r\n getMMSSenderWithDetailList(AuthData)\r\n .then(res => {\r\n if (_isMounted) {\r\n if (checkResponse(res, dispatch, null, 'Başlık listesi getirilirken bir hata oluştu.')) {\r\n setSenderList(res.data.senderList)\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Başlık listesi getirilirken bir hata oluştu.')\r\n })\r\n return () => _isMounted = false\r\n }, [])\r\n\r\n useEffect(() => {\r\n fetchData({})\r\n }, [])\r\n\r\n const setExpression = () => {\r\n let expression = ''\r\n if (taskName !== '') {\r\n expression += `{taskName CONTAINS ${taskName}}`\r\n }\r\n if (sender !== '') {\r\n expression += `{sender:${sender}}`\r\n }\r\n if (subject !== '') {\r\n expression += `{subject CONTAINS ${subject}}`\r\n }\r\n if (iysBrandCode !== '') {\r\n expression += `{iysBrandCode CONTAINS ${iysBrandCode}}`\r\n }\r\n if (StartDate !== '' && EndDate !== '') {\r\n expression += `{insertDate:${StartDate}..${EndDate}}`\r\n }\r\n /*\r\n if (StartDate === '' && EndDate !== '') {\r\n expression += `{insertDate <= ${EndDate}}`\r\n }\r\n if (StartDate !== '' && EndDate === '') {\r\n expression += `{insertDate >= ${StartDate}}`\r\n }\r\n */\r\n if (StartDate2 !== '' && EndDate2 !== '') {\r\n expression += `{sendDate:${StartDate2}..${EndDate2}}`\r\n }\r\n /*\r\n if (StartDate2 === '' && EndDate2 !== '') {\r\n expression += `{sendDate <= ${EndDate2}}`\r\n }\r\n if (StartDate2 !== '' && EndDate2 === '') {\r\n expression += `{sendDate >= ${StartDate2}}`\r\n }\r\n */\r\n return expression\r\n }\r\n\r\n const fetchData = (query) => {\r\n setSelection([])\r\n const Request = {\r\n PageSize, PageNumber, SelectFields: null, SortFields, SearchExpression: setExpression(), CalculateTotalRecordCount: true,\r\n Includes: null,\r\n SearchQuery: null,\r\n IntersectList: null,\r\n ExceptList: null,\r\n ...query\r\n }\r\n const data = {\r\n AuthData,\r\n Request\r\n }\r\n setLoading(true)\r\n getMmsSummaryDeliveryReport(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, dispatch, null, 'MMS gönderim özet listesi getirilemedi.')) {\r\n setList(res.data.list)\r\n setCount(res.data.totalRecordCount)\r\n SetCurrentTaskMessage((res.data.list && res.data.list.length > 0) ? res.data.list[0].message : '')\r\n SetCurrentTaskTotalMessageCount((res.data.list && res.data.list.length > 0) ? res.data.list[0].totalMessageCount : 0)\r\n SetCurrentTaskTotalDelivered((res.data.list && res.data.list.length > 0) ? res.data.list[0].totalDelivered : 0)\r\n SetCurrentTaskTotalUndelivered((res.data.list && res.data.list.length > 0) ? res.data.list[0].totalUndelivered : 0)\r\n SetCurrentTaskTotalWaiting((res.data.list && res.data.list.length > 0) ? res.data.list[0].totalWaiting : 0)\r\n SetCurrentTaskKeyFieldType((res.data.list && res.data.list.length > 0) ? res.data.list[0].keyFieldType : FileFields.ID_FIELDTYPE_MOBILEPHONE)\r\n SetCurrentTaskMessageIsDynamic((res.data.list && res.data.list.length > 0) ? res.data.list[0].messageIsDynamic : false)\r\n SetCurrentTaskSendingTimeOptions((res.data.list && res.data.list.length > 0) ? res.data.list[0].sendingTimeOptions : {})\r\n SetCurrentTaskIysMessageTypeDisplay((res.data.list && res.data.list.length > 0) ? res.data.list[0].iysMessageTypeDisplay : \"Girilmemiş\")\r\n SetCurrentTaskIysRecipientTypeDisplay((res.data.list && res.data.list.length > 0) ? res.data.list[0].iysRecipientTypeDisplay : \"Girilmemiş\")\r\n SetCurrentTaskIysBrandCode((res.data.list && res.data.list.length > 0) ? res.data.list[0].iysBrandCode : \"Girilmemiş\")\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'MMS gönderim özet listesi getirilemedi.')\r\n })\r\n }\r\n\r\n\r\n\r\n const handleAll = () => {\r\n setTaskName('')\r\n setSender('')\r\n setSubject('')\r\n SetStartDate('')\r\n SetEndDate('')\r\n SetStartDate2('')\r\n SetEndDate2('')\r\n SetPageNumber(0)\r\n fetchData({ SearchExpression: null })\r\n }\r\n\r\n const handleChange = () => {\r\n\r\n }\r\n\r\n\r\n const handlePageSizeChange = (value) => {\r\n setSelection([])\r\n SetPageSize(value)\r\n SetPageNumber(0)\r\n fetchData({ PageSize: value, PageNumber: 1 })\r\n }\r\n\r\n const handlePageChange = (value) => {\r\n setSelection([])\r\n SetPageNumber(value)\r\n fetchData({ PageNumber: value + 1 })\r\n }\r\n\r\n const handleDetail = (id) => {\r\n setTaskId(id.taskId)\r\n setCurrentTaskTaskName(id.taskName || '')\r\n SetCurrentTaskMessage((id.message || '').replaceAll('#*#n', '⏎').replaceAll('\\n', '⏎').replaceAll('»', '⏎'))\r\n SetCurrentTaskTotalMessageCount(id.totalMessageCount || 0)\r\n SetCurrentTaskTotalDelivered(id.totalDelivered || 0)\r\n SetCurrentTaskTotalUndelivered(id.totalUndelivered || 0)\r\n SetCurrentTaskTotalWaiting(id.totalWaiting || 0)\r\n SetCurrentTaskKeyFieldType(id.keyFieldType || FileFields.ID_FIELDTYPE_MOBILEPHONE)\r\n SetCurrentTaskMessageIsDynamic(id.messageIsDynamic || false)\r\n SetCurrentTaskSendingTimeOptions(id.sendingTimeOptions || {})\r\n SetCurrentTaskIysMessageTypeDisplay(id.iysMessageTypeDisplay || \"Girilmemiş\")\r\n SetCurrentTaskIysRecipientTypeDisplay(id.iysRecipientTypeDisplay || \"Girilmemiş\")\r\n SetCurrentTaskIysBrandCode(id.iysBrandCode || \"Girilmemiş\")\r\n SetCancelButtonStatus(\r\n (id.status === 2 || id.status === 3 || id.status === 4 || id.status === 9)\r\n )\r\n SetChangeDateButtonStatus(\r\n moment(moment(id.sendDate)).isAfter(moment()) && (id.status === 2 || id.status === 3 || id.status === 4 || id.status === 9)\r\n )\r\n handleDetailDialogToggle()\r\n }\r\n\r\n const handleExcelExport = () => {\r\n const data = {\r\n ...AuthData,\r\n UserId: user.userInfo.userId,\r\n CustomerId: user.customerInfo.customerId,\r\n IsUsingMedyaMobil: false,\r\n SearchExpression: setExpression(),\r\n }\r\n setFileLoad(true)\r\n getSummaryReportExcel(data)\r\n .then((res) => {\r\n setFileLoad(false)\r\n if (res && res.data) {\r\n if (res.data.fileDownloadUrl) {\r\n const link = document.createElement('a');\r\n link.href = res.data.fileDownloadUrl\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n else {\r\n alertErrorText('SMS gönderim özet listesi dosyaya aktarılamadı. İndirme URL\\'i alınamadı.')\r\n }\r\n }\r\n else {\r\n alertErrorText('SMS gönderim özet listesi dosyaya aktarılamadı. Yanıt alınamadı.')\r\n }\r\n })\r\n .catch(err => {\r\n setFileLoad(false)\r\n alertResponseError(err, 'SMS gönderim özet listesi dosyaya aktarılamadı.')\r\n })\r\n }\r\n\r\n const handleDetailExcelExport = () => {\r\n let data = {\r\n ...AuthData,\r\n UserId: user.userInfo.userId,\r\n CustomerId: user.customerInfo.customerId,\r\n IsUsingMedyaMobil: false,\r\n SearchExpression: setExpression()\r\n }\r\n\r\n if (selection.length > 0) {\r\n let taskIdList = []\r\n for (let i = 0; i < selection.length; i++) {\r\n taskIdList = [\r\n ...taskIdList,\r\n list[selection[i]].taskId\r\n ]\r\n }\r\n\r\n if (taskIdList) {\r\n data = { ...data, TaskId: taskIdList.toString() }\r\n } else {\r\n data = { ...data, TaskId: '00000000-0000-0000-0000-000000000000' }\r\n }\r\n setFileLoad(true)\r\n getSummaryReportExcel(data)\r\n .then((res) => {\r\n setFileLoad(false)\r\n if (res && res.data) {\r\n if (res.data.fileDownloadUrl) {\r\n const link = document.createElement('a');\r\n link.href = res.data.fileDownloadUrl\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n else {\r\n alertErrorText('SMS gönderim detay listesi dosyaya aktarılamadı. İndirme URL\\'i alınamadı.')\r\n }\r\n }\r\n else {\r\n alertErrorText('SMS gönderim detay listesi dosyaya aktarılamadı. Yanıt alınamadı.')\r\n }\r\n }).catch(err => {\r\n setFileLoad(false)\r\n alertResponseError(err, 'SMS gönderim detay listesi dosyaya aktarılamadı.')\r\n })\r\n } else {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: 'Hiçbir kayıt seçilmemiş.'\r\n })\r\n }\r\n }\r\n\r\n const boxStyles = {\r\n padding: 5, color: \"#fff\", display: \"inline\", borderRadius: 5, fontWeight: 'bold', marginLeft: 5, display: \"inline\", float: 'right', backgroundColor: 'red'\r\n }\r\n\r\n const HtmlTooltip = withStyles((theme) => ({\r\n tooltip: {\r\n backgroundColor: '#f5f5f9',\r\n color: 'rgba(0, 0, 0, 0.87)',\r\n maxWidth: 220,\r\n fontSize: theme.typography.pxToRem(12),\r\n border: '1px solid #dadde9',\r\n },\r\n }))(Tooltip);\r\n\r\n const styledTaskName = (name, status, isUsingMedyaMobil, sendingTimeType, sendDate, sendingTimeOptions, totalMessageCount) => {\r\n let sendDateStatus = moment(moment(sendDate)).isAfter(moment())\r\n return (\r\n \r\n \r\n {name}\r\n \r\n {status === 2 && sendingTimeType == 1 &&\r\n İşleniyor \r\n }\r\n {status === 3 && sendingTimeType == 1 &&\r\n İşleniyor... \r\n }\r\n {(status === 11 || status === 12) &&\r\n İptal Edildi \r\n }\r\n {status === 10 &&\r\n Onaylanmadı \r\n }\r\n {status === 9 &&\r\n Onay Bekliyor \r\n }\r\n {(status === 4 || status === 2 || status === 3) && (sendingTimeType == 2 && sendDateStatus) &&\r\n İleri Tarihli \r\n }\r\n {sendingTimeOptions && sendingTimeOptions.sendSeperatedPeriodicallyOptions && sendingTimeOptions.sendSeperatedPeriodicallyOptions.isActive &&\r\n \r\n Zamana Yayılmış \r\n \r\n }\r\n {status === 5 &&\r\n Hata Oluştu \r\n }\r\n {isUsingMedyaMobil &&\r\n Medya Mobil \r\n }\r\n
\r\n )\r\n }\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return {\r\n previewUrl : ,\r\n taskId: l.taskId,\r\n taskName: styledTaskName(l.taskName || '', l.status, l.isUsingMedyaMobil, l.sendingTimeType, l.sendDate, l.sendingTimeOptions, l.totalMessageCount),\r\n messageSubject: l.messageSubject,\r\n sender: l.sender,\r\n sendDate: moment(l.sendDate).format('DD.MM.YYYY HH:mm'),\r\n insertDate: moment(l.insertDate).format('DD.MM.YYYY HH:mm'),\r\n totalMessageCount: (l.totalMessageCount || '0').toLocaleString(\"tr-TR\"),\r\n totalDelivered: (l.totalDelivered || '0').toLocaleString(\"tr-TR\"),\r\n totalUndelivered: (l.totalUndelivered || '0').toLocaleString(\"tr-TR\"),\r\n totalWaiting: (l.totalWaiting || '0').toLocaleString(\"tr-TR\"),\r\n action: <>\r\n \r\n handleDetail(l)} >\r\n \r\n \r\n \r\n >\r\n }\r\n })\r\n )\r\n }\r\n\r\n const getSendSeperatedPeriodicallyOptionsDescription = (sendDate, options, messageCount) => {\r\n if (options == null || !options.isActive) return Gönderim zamana yayılmadan tek seferde gönderilecek ;\r\n\r\n\r\n var description = (\"Gönderim başlatma periyodu: \" + (options.period || 0).toLocaleString(\"tr-TR\") + \" dakikada bir \" + (options.packageSize || 0).toLocaleString(\"tr-TR\") + \" adet gönderim\");\r\n\r\n var description2 = \"\";\r\n if (options.isShiftTimePeriodActive) {\r\n description2 += (\"Gönderim başlatılmayacak saat aralığı: \"\r\n + DateUtils.buildTimeString(options.shiftTimePeriodStartHour, options.shiftTimePeriodStartMinute) + \" - \"\r\n + DateUtils.buildTimeString(options.shiftTimePeriodEndHour, options.shiftTimePeriodEndMinute));\r\n }\r\n\r\n var description3 = (\"Son gönderim başlatma zamanı: \"\r\n + moment(calculateLastSendDate(sendDate, options, messageCount)).format('DD.MM.YYYY HH:mm'));\r\n\r\n if (description2 !== \"\")\r\n return {description} {description2} {description3} ;\r\n else\r\n return {description} {description3} ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Adı :\r\n \r\n \r\n \r\n setTaskName(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Başlığı :\r\n \r\n \r\n \r\n setSender(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Başlık Seçiniz \r\n {senderList && senderList.map(item => {\r\n return (\r\n {item.sender} \r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Mesaj Konusu :\r\n \r\n \r\n \r\n setSubject(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n İYS Marka Kodu:\r\n \r\n \r\n \r\n setIysBrandCode(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderimin Eklendiği Tarih :\r\n \r\n \r\n \r\n \r\n {\r\n SetStartDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n SetEndDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Tarih :\r\n \r\n \r\n \r\n \r\n {\r\n SetStartDate2(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n SetEndDate2(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n\r\n \r\n {/* */}\r\n \r\n\r\n \r\n fetchData({})}>\r\n SORGULA\r\n \r\n \r\n \r\n \r\n Tümü\r\n \r\n \r\n \r\n \r\n {fileLoad\r\n ? \r\n : \r\n \r\n \r\n }\r\n \r\n \r\n\r\n \r\n {loading\r\n ? \r\n \r\n
\r\n : \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { user } = state.userReducer\r\n return { user }\r\n}\r\n\r\nexport default connect(mapStateToProps)(MMSRaporlari)","import React, { useState, useEffect } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\n\r\nimport SmsRaporlari from './SmsRaporlari.js'\r\nimport EmailRaporlari from './EmailRaporlari.js'\r\nimport MMSRaporlari from './MMSRaporlari.js';\r\nimport { UserRightVisibility } from 'variables/userRightVisibility.js';\r\n\r\n\r\nconst RaporlarMaster = props => {\r\n const [mode, setMode] = useState('sms')\r\n const { user } = props\r\n const { contextSessionId, sessionId } = user\r\n const handleModeChange = (mode) => {\r\n setMode(mode)\r\n }\r\n\r\n const { serviceRight_Email, serviceRight_MMS } = user.user.userRights\r\n\r\n if (serviceRight_Email !== UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE && serviceRight_MMS !== UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n handleModeChange('sms')} simple={mode === 'sms' ? false : true} block>SMS RAPORLARI \r\n \r\n {serviceRight_Email === 2 &&\r\n \r\n handleModeChange('email')} simple={mode === 'email' ? false : true} block>E-POSTA RAPORLARI \r\n \r\n }\r\n {serviceRight_MMS === 2 &&\r\n \r\n handleModeChange('MMS')} simple={mode === 'MMS' ? false : true} block>MMS RAPORLARI \r\n \r\n }\r\n \r\n {mode === 'sms' &&\r\n \r\n }\r\n {mode === 'email' &&\r\n \r\n }\r\n {mode === 'MMS' &&\r\n \r\n }\r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { user } = state.userReducer\r\n return { user }\r\n}\r\nexport default connect(mapStateToProps)(RaporlarMaster)","export const GET = 'GET_NOTIFICATIONS'\r\nexport const UPDATE = 'UPDATE_NOTIFICATION'","import { domain } from './domain'\r\nimport axios from 'axios'\r\n\r\nexport const getNotifications = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Notification/GetNotifications', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const log = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Notification/Log', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const userLog = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Notification/UserLog', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const queryUserLogKeyAndValue = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Notification/QueryUserLogKeyAndValue', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}","import { alertResponseError } from '_helpers/notification'\r\nimport { checkResponse } from '_helpers/notification'\r\nimport * as notificationActionTypes from '../_actionTypes/notification'\r\nimport * as notificationServices from '../_services/notification'\r\n\r\nexport const getNotifications = (data) => {\r\n return dispatch => {\r\n notificationServices.getNotifications(data)\r\n .then(\r\n res => {\r\n if (checkResponse(res, null, null, 'Bilgilendirmeler getirilemedi.')) {\r\n dispatch(success(res.data.notifications))\r\n }\r\n else{\r\n return\r\n }\r\n }\r\n )\r\n .catch(err => {\r\n alertResponseError(err, 'Bilgilendirmeler getirilemedi.')\r\n })\r\n }\r\n\r\n function success(notifications){ return { type : notificationActionTypes.GET, notifications }}\r\n}\r\n\r\nexport const log = (data) => {\r\n return dispatch => {\r\n notificationServices.log(data)\r\n .then(\r\n res => {\r\n if (checkResponse(res, null, null, 'Bilgilendirmeler getirilemedi.')) {\r\n dispatch(success(res.data.notifications))\r\n }\r\n else{\r\n return\r\n }\r\n }\r\n )\r\n .catch(err => {\r\n alertResponseError(err, 'Bilgilendirmeler getirilemedi.')\r\n })\r\n }\r\n\r\n function success(notifications){ return { type : notificationActionTypes.GET, notifications }}\r\n}\r\n\r\nexport const userLog = (data) => {\r\n return dispatch => {\r\n notificationServices.userLog(data)\r\n .then(\r\n res => {\r\n if (checkResponse(res, null, null, 'Bilgilendirmeler getirilemedi.')) {\r\n dispatch(success(res.data.notifications))\r\n }\r\n else{\r\n return\r\n }\r\n }\r\n )\r\n .catch(err => {\r\n alertResponseError(err, 'Bilgilendirmeler getirilemedi.')\r\n })\r\n }\r\n\r\n function success(notifications){ return { type : notificationActionTypes.GET, notifications }}\r\n}\r\n\r\nexport const queryUserLogKeyAndValue = (data) => {\r\n return dispatch => {\r\n notificationServices.queryUserLogKeyAndValue(data)\r\n .then(\r\n res => {\r\n if (checkResponse(res, null, null, 'Bilgilendirmeler getirilemedi.')) {\r\n dispatch(success(res.data.notifications))\r\n }\r\n else{\r\n return\r\n }\r\n }\r\n )\r\n .catch(err => {\r\n alertResponseError(err, 'Bilgilendirmeler getirilemedi.')\r\n })\r\n }\r\n\r\n function success(notifications){ return { type : notificationActionTypes.GET, notifications }}\r\n}","import cover from \"assets/img/medyamobil_slide_bg.jpg\";\r\n\r\nconst loginPageStyles = {\r\n container : {\r\n height: \"100%\",\r\n width : \"98%\",\r\n overFlow : \"hidden\",\r\n position: \"relative\",\r\n top: \"0\",\r\n margin : \"0 !important\",\r\n },\r\n cardHeader : {\r\n textAlign : \"center\",\r\n position : \"relative\",\r\n },\r\n cardHeaderIcon: {\r\n width : \"92%\",\r\n },\r\n title: {\r\n color : \"#ffffff\",\r\n fontWeight : \"500\",\r\n },\r\n cardContainer : {\r\n justifyContent: \"center !important\",\r\n height : \"90vh\",\r\n width : \"100%\",\r\n position : \"relative\",\r\n top : \"0\"\r\n },\r\n loginCard : {\r\n position : \"relative\",\r\n top : \"50%\",\r\n left : \"50%\",\r\n transform : \"translate(-50%, -50%)\",\r\n zIndex : \"15\"\r\n }, \r\n bgDiv : {\r\n position : 'absolute',\r\n top : \"0\",\r\n left : \"0\",\r\n width : \"100vw\",\r\n height : \"100vh\",\r\n backgroundImage: \"url(\" + cover + \")\",\r\n backgroundPosition: 'center',\r\n backgroundSize: 'cover',\r\n backgroundRepeat: 'no-repeat'\r\n },\r\n justifyContentCenter :{\r\n justifyContent : \"center !important\",\r\n height : \"60px\"\r\n },\r\n modalFooterText : {\r\n fontSize : 12\r\n },\r\n backdrop: {\r\n zIndex: 100,\r\n color: '#000000',\r\n },\r\n textCenter : {\r\n textAlign : \"center\"\r\n },\r\n logoImage: {\r\n width: \"150px\",\r\n display: \"inline-block\",\r\n marginTop : 20\r\n },\r\n img: {\r\n width: \"150px\",\r\n border: \"0\"\r\n },\r\n}\r\n\r\nexport default loginPageStyles","import React, { useState } from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport {\r\n SortingState,\r\n IntegratedSorting,\r\n PagingState,\r\n IntegratedPaging,\r\n GroupingState,\r\n IntegratedGrouping,\r\n SearchState,\r\n IntegratedFiltering,\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n VirtualTable,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableGroupRow,\r\n GroupingPanel,\r\n DragDropProvider,\r\n Toolbar,\r\n SearchPanel,\r\n ColumnChooser,\r\n TableColumnVisibility,\r\n TableColumnResizing,\r\n} from '@devexpress/dx-react-grid-material-ui';\r\n\r\nconst groupingPanelMessages = {\r\n groupByColumn: \"Gruplamak istediğiniz kolonu bu alana sürükleyip bırakınız.\"\r\n}\r\n\r\nconst tableMessages = {\r\n noData: 'Gösterilecek veri yok',\r\n};\r\n\r\nconst filterRowMessages = {\r\n filterPlaceholder: 'Filtrele...',\r\n};\r\n\r\nconst searchPanelMessages = {\r\n searchPlaceholder : \"Arama\"\r\n}\r\n\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki kayıt sayısı',\r\n info: '{count} kayıttan {from} - {to} gösteriliyor.',\r\n}\r\n\r\nconst SimpleGrid = (props) => {\r\n const { columns, rows, defaultColumnWidths, page, setPage } = props\r\n\r\n\r\n const [currentPage, setCurrentPage] = useState(0);\r\n const [pageSize, setPageSize] = useState(20);\r\n const [pageSizes] = useState([10, 15, 20, 30, 50, 100, 250]);\r\n const [grouping] = useState([]);\r\n const [groupingStateColumnExtensions] = useState([]);\r\n const [defaultHiddenColumnNames] = useState([]);\r\n const [columnWidths, setColumnWidths] = useState(defaultColumnWidths);\r\n\r\n const pageAtom = page ? page : currentPage\r\n const setPageAtom = setPage ? setPage : setCurrentPage\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 \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SimpleGrid","import React from 'react'\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport SimpleGrid from 'components/DataGrid/SimpleGrid';\r\nimport moment from 'moment';\r\nimport { numberFormat } from '../../formats/number'\r\nimport { DialogActions } from '@material-ui/core';\r\nimport Button from \"components/CustomButtons/Button.js\";\r\n\r\nconst EmailCreditInfoDialog = props => {\r\n\r\n const { open, toggle, emailCreditList } = props\r\n\r\n const columns = [\r\n { name: 'insertDate', title: \"Yüklenme Tarihi\" },\r\n { name: 'beginDate', title: \"Kullanım Başlangıç Tarihi\" },\r\n { name: 'endDate', title: \"Kullanım Bitiş Tarihi\" },\r\n { name: 'totalCredit', title: \"Toplam Kredi\" },\r\n { name: 'spentCredit', title: \"Harcanan Kredi\" },\r\n { name: 'availableCredit', title: \"Kalan Kredi\" }\r\n ];\r\n\r\n const rows = () => {\r\n return emailCreditList.map((p) => ({\r\n insertDate: moment(p.insertDate).format(\"DD.MM.YYYY\"),\r\n beginDate: moment(p.beginDate).format(\"DD.MM.YYYY\"),\r\n endDate: moment(p.endDate).format(\"DD.MM.YYYY\"),\r\n totalCredit: numberFormat(p.totalCredit || 0),\r\n availableCredit: numberFormat(p.availableCredit || 0),\r\n spentCredit: numberFormat(p.spentCredit || 0),\r\n }));\r\n };\r\n\r\n const defaultColumnWidths = [\r\n { columnName: 'insertDate', width: 180 },\r\n { columnName: 'beginDate', width: 180 },\r\n { columnName: 'endDate', width: 180 },\r\n { columnName: 'spentCredit', width: 180 },\r\n { columnName: 'totalCredit', width: 180 },\r\n { columnName: 'availableCredit', width: 180 }\r\n ];\r\n\r\n return (\r\n \r\n E-posta Kredi Bilgileri \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n KAPAT\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default EmailCreditInfoDialog","import { CircularProgress, Dialog } from '@material-ui/core'\r\nimport React, { useEffect, useState } from 'react'\r\nimport { getEmailCreditInfo } from '_services/email'\r\nimport EmailCreditInfoDialog from './EmailCreditInfoDialog'\r\n// import TableCell from '@material-ui/core/TableCell';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport styles from \"assets/jss/loginPage.js\";\r\nimport MuiTableCell from \"@material-ui/core/TableCell\";\r\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\r\n\r\n\r\nconst TableCell = withStyles({\r\n root: {\r\n borderBottom: \"none\"\r\n }\r\n})(MuiTableCell);\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\n\r\nconst EmailCredit = props => {\r\n const [availableTotalCredit, setAvailableTotalCredit] = useState(0)\r\n const [emailCreditList, setEmailCreditList] = useState([])\r\n const { sessionId, contextSessionId, user } = props.user\r\n const [loading, setLoading] = useState(false)\r\n const classes = useStyles();\r\n\r\n const [emailCreditDialog, setEmailCreditDialog] = useState(false)\r\n\r\n const emailCreditDialogToggle = () => {\r\n setEmailCreditDialog(!emailCreditDialog)\r\n }\r\n\r\n useEffect(() => {\r\n if (sessionId && contextSessionId) {\r\n const data = { sessionId, contextSessionId }\r\n setLoading(true)\r\n getEmailCreditInfo(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (res.data) {\r\n setAvailableTotalCredit(res.data.availableTotalCredit)\r\n if (res.data.result && res.data.result.resultCode === 0) {\r\n setEmailCreditList(res.data.emailCreditList)\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n })\r\n }\r\n }, [sessionId, contextSessionId])\r\n\r\n return (\r\n <>\r\n {loading\r\n ? \r\n \r\n \r\n \r\n \r\n \r\n : <>\r\n \r\n E-posta hesap tipi : \r\n {availableTotalCredit > -1 ? \"Kredili\" : \"Normal\"} \r\n \r\n {availableTotalCredit > -1 &&\r\n <>\r\n \r\n E-posta Kalan Kredi : \r\n {availableTotalCredit} \r\n \r\n \r\n E-posta Kredi Detay : \r\n \r\n emailCreditDialogToggle()} > TIKLAYINIZ. \r\n \r\n \r\n >\r\n }\r\n >\r\n }\r\n \r\n >\r\n )\r\n}\r\n\r\nexport default EmailCredit","import React, { useEffect } from 'react'\r\nimport { makeStyles, withStyles } from \"@material-ui/core/styles\";\r\nimport { connect } from 'react-redux'\r\n\r\nimport * as notificationActions from '../../_actions/notification.js'\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport CardHeader from \"components/Card/CardHeader.js\";\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport CardFooter from \"components/Card/CardFooter.js\";\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\n// import TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport styles from \"assets/jss/loginPage.js\";\r\nimport EmailCredit from 'components/Sidebar/EmailCredit.js';\r\nimport MuiTableCell from \"@material-ui/core/TableCell\";\r\nimport { UserRightVisibility } from 'variables/userRightVisibility.js';\r\nimport { getCustomerCustomFields } from '_services/definitions.js';\r\n\r\nconst TableCell = withStyles({\r\n root: {\r\n borderBottom: \"none\"\r\n }\r\n})(MuiTableCell);\r\n\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst KullaniciBilgileri = props => {\r\n const classes = useStyles();\r\n\r\n const { dispatch } = props\r\n const notifications = props.notificationReducer\r\n const { user, sessionId, contextSessionId } = props.userReducer.user\r\n\r\n const notify = nots => {\r\n return nots.map(\r\n (not, i) => {\r\n if ((not.startDate < Date.now() && Date.now() < not.endDate) || (!not.endDate || !not.startDate)) {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n }\r\n )\r\n }\r\n\r\n // useEffect(() => {\r\n // const data = { sessionId, contextSessionId }\r\n // dispatch(notificationActions.getNotifications(data))\r\n\r\n // getCustomerCustomFields(data)\r\n // .then(res => {\r\n // if (res.data) {\r\n // if (res.data.result && res.data.result.resultCode === 0) {\r\n // user.customerCustomFields = res.data.customerCustomFields\r\n // }\r\n // }\r\n // })\r\n // .catch(err => {\r\n // })\r\n // }, [])\r\n\r\n const getUserTypeDescription = userType => {\r\n switch (userType) {\r\n case 1:\r\n return \"Faturalı\";\r\n case 2:\r\n return \"Faturalı (Sınırlı Yetki)\";\r\n case 3:\r\n return \"Ön Ödemeli\";\r\n case 4:\r\n return \"Ön Ödemeli (Sınırlı Yetki)\";\r\n default:\r\n return \"Tanımsız\";\r\n }\r\n }\r\n\r\n return (\r\n \r\n {notify(notifications)}\r\n \r\n \r\n \r\n Kullanıcı Bilgileri \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Adı : \r\n {user.userInfo.userName} \r\n \r\n \r\n Soyadı : \r\n {user.userInfo.userSurname} \r\n \r\n \r\n Bölüm : \r\n {user.userInfo.userDepartment} \r\n \r\n \r\n Kullanıcı Adı : \r\n {user.userInfo.userLoginName} \r\n \r\n \r\n Hesap Tipi : \r\n {getUserTypeDescription(user.userInfo.userType)} \r\n \r\n\r\n {(user.userInfo.userType === 3 || user.userInfo.userType === 4) && \r\n \r\n Kalan SMS Kredisi : \r\n {(user.customerInfo.credit || '0').toLocaleString(\"tr-TR\")} \r\n \r\n }\r\n {user.userRights.serviceRight_Email === UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE &&\r\n \r\n }\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer, notificationReducer } = state\r\n return { userReducer, notificationReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps)(KullaniciBilgileri)","import React from \"react\";\r\nimport { Chart } from \"react-google-charts\";\r\n\r\n\r\nexport const options = {\r\n //title: \"My Daily Activities\",\r\n pieHole: 0.3,\r\n is3D: false,\r\n};\r\n\r\nexport function DonutChart(props) {\r\n return (\r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\nexport default function Title(props) {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nTitle.propTypes = {\r\n children: PropTypes.node,\r\n};","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Title from './Title';\r\n\r\nconst useStyles = makeStyles({\r\n depositContext: {\r\n flex: 1,\r\n },\r\n});\r\n\r\nexport function StatisticCard(props) {\r\n const classes = useStyles();\r\n return (\r\n \r\n\r\n \r\n {new Intl.NumberFormat('tr-TR', { minimumFractionDigits: 0 }).format(props.total)}\r\n \r\n {props.title} \r\n\r\n \r\n {/* {moment(new Date()).format(\"DD.MM.YYYY\")} */}\r\n {props.rate !== 0 ? \"%\" + props.rate : \" \"}\r\n \r\n\r\n\r\n \r\n );\r\n}","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Title from './Title';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n table: {\r\n marginTop: theme.spacing(1),\r\n },\r\n}));\r\n\r\nexport function ErrorMessages(props) {\r\n\r\n const classes = useStyles();\r\n return (\r\n \r\n En Çok Alınan 10 Hata Mesajı \r\n \r\n \r\n \r\n Hata Kodu \r\n Operatör \r\n Açıklama \r\n Hata Adedi \r\n \r\n \r\n \r\n {props.data.map((row) => (\r\n \r\n {row.errorCode} \r\n {row.operatorName} \r\n {row.errorDescription} \r\n {new Intl.NumberFormat('tr-TR', { minimumFractionDigits: 0 }).format(row.totalCount)} \r\n \r\n ))}\r\n \r\n
\r\n \r\n );\r\n}","import React, { useEffect, useState } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport * as notificationActions from '../../_actions/notification.js'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport { getCustomerCustomFields } from '_services/definitions.js';\r\nimport { DonutChart } from \"./Components/DonutChart.js\";\r\nimport { StatisticCard } from \"./Components/StatisticCard.js\";\r\nimport { ErrorMessages } from \"./Components/ErrorMessages.js\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n minWidth: 275,\r\n // backgroundColor: \"#c9f1fd\",\r\n margin: \"5px\"\r\n },\r\n bullet: {\r\n display: 'inline-block',\r\n margin: '0 2px',\r\n transform: 'scale(0.8)',\r\n },\r\n title: {\r\n fontSize: 25,\r\n textAlign: \"center\",\r\n border: \"outset\",\r\n backgroundColor: \"#c9f1fd\",\r\n width: \"100%\"\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n div: {\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n boxSizing: \"borderBox\"\r\n },\r\n divider: {\r\n fontSize: \"24px\",\r\n fontWeight: 400,\r\n backgroundColor: \"#fff\",\r\n paddingRight: \"10px\",\r\n display: \"inline-block\",\r\n width: \"15%\",\r\n padding: \"0 3px\",\r\n margin: 0,\r\n //verticalAlign: \"middle\"\r\n },\r\n divLine: {\r\n borderBottom: \"1px solid #9a9a9a\",\r\n borderTop: \"1px solid #9a9a9a\",\r\n width: \"40%\",\r\n height: \"1px\",\r\n display: \"inline-block\",\r\n verticalAlign: \"middle\",\r\n marginBottom: 0,\r\n }\r\n});\r\n\r\nconst SmsIstatistikler = props => {\r\n\r\n const { dispatch } = props\r\n const { user, sessionId, contextSessionId } = props.userReducer.user\r\n const [smsServiceSummary, setSmsServiceSummary] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n const [last1WeekServiceProviderSummaryDataStateShow, setLast1WeekServiceProviderSummaryDataStateShow] = useState(false);\r\n const [last1WeekStatusSummaryDataStateShow, setLast1WeekStatusSummaryDataStateShow] = useState(false);\r\n \r\n const classes = useStyles();\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n const data = { sessionId, contextSessionId }\r\n dispatch(notificationActions.getNotifications(data))\r\n\r\n getCustomerCustomFields(data)\r\n .then(res => {\r\n if (res.data) {\r\n if (res.data.result && res.data.result.resultCode === 0) {\r\n user.customerCustomFields = res.data.customerCustomFields\r\n setLoading(false);\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false);\r\n })\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (props.dashboardReducer.smsServiceSummary !== undefined) {\r\n setSmsServiceSummary(props.dashboardReducer.smsServiceSummary);\r\n }\r\n }, [props.dashboardReducer])\r\n\r\n const [last1WeekServiceProviderSummaryDataState, setLast1WeekServiceProviderSummaryDataState] = useState(null);\r\n const [last1WeekStatusSummaryDataState, setLast1WeekStatusSummaryDataState] = useState(null);\r\n\r\n const last1WeekServiceProviderSummaryData = [[\"Pizza\", \"Popularity\"]];\r\n const last1WeekStatusSummaryData = [[\"Pizza\", \"Popularity\"]];\r\n\r\n useEffect(() => {\r\n if (smsServiceSummary !== null) {\r\n smsServiceSummary.last1WeekServiceProviderSummary.map(item => {\r\n var serviceProvider = item.serviceProvider;\r\n var totalCount = item.totalCount;\r\n last1WeekServiceProviderSummaryData.push([serviceProvider, totalCount])\r\n });\r\n\r\n if(smsServiceSummary.last1WeekStatusSummary.totalDeliveredCount > 0)\r\n {\r\n last1WeekStatusSummaryData.push([\"İletilen\", smsServiceSummary.last1WeekStatusSummary.totalDeliveredCount]);\r\n }\r\n if(smsServiceSummary.last1WeekStatusSummary.totalUndeliveredCount > 0)\r\n {\r\n last1WeekStatusSummaryData.push([\"İletilemeyen\", smsServiceSummary.last1WeekStatusSummary.totalUndeliveredCount]);\r\n }\r\n if(smsServiceSummary.last1WeekStatusSummary.totalWaitingCount > 0)\r\n {\r\n last1WeekStatusSummaryData.push([\"İletim Raporu Beklenen\", smsServiceSummary.last1WeekStatusSummary.totalWaitingCount]);\r\n }\r\n\r\n setLast1WeekServiceProviderSummaryDataState(last1WeekServiceProviderSummaryData)\r\n setLast1WeekStatusSummaryDataState(last1WeekStatusSummaryData)\r\n }\r\n }, [smsServiceSummary])\r\n\r\n useEffect(() => {\r\n if(last1WeekServiceProviderSummaryDataState !== null)\r\n {\r\n\r\n if(last1WeekServiceProviderSummaryDataState.length > 1){\r\n setLast1WeekServiceProviderSummaryDataStateShow(true);\r\n }\r\n }\r\n }, [last1WeekServiceProviderSummaryDataState])\r\n\r\n useEffect(() => {\r\n if(last1WeekStatusSummaryDataState !== null)\r\n {\r\n \r\n if(last1WeekStatusSummaryDataState.length > 1){\r\n setLast1WeekStatusSummaryDataStateShow(true);\r\n }\r\n }\r\n }, [last1WeekStatusSummaryDataState])\r\n \r\n return (\r\n \r\n\r\n {loading\r\n ? \r\n \r\n
\r\n :\r\n <>\r\n\r\n \r\n
BUGÜ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 {(user.userInfo.userType === 3 || user.userInfo.userType === 4) &&\r\n \r\n \r\n Kalan Kontör Miktarı : {(user.customerInfo.credit || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n\r\n \r\n
SON 1 HAFTA \r\n \r\n \r\n \r\n {last1WeekServiceProviderSummaryDataStateShow\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 {last1WeekStatusSummaryDataStateShow\r\n ?\r\n <>\r\n \r\n \r\n \r\n >\r\n :\r\n <>\r\n\r\n >\r\n }\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n >\r\n }\r\n\r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer, dashboardReducer } = state\r\n return { userReducer, dashboardReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps)(SmsIstatistikler)","import React, { useEffect, useState } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport * as notificationActions from '../../_actions/notification.js'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport { getCustomerCustomFields } from '_services/definitions.js';\r\nimport { DonutChart } from \"./Components/DonutChart.js\";\r\nimport { StatisticCard } from \"./Components/StatisticCard.js\";\r\nimport { ErrorMessages } from \"./Components/ErrorMessages.js\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n minWidth: 275,\r\n // backgroundColor: \"#c9f1fd\",\r\n margin: \"5px\"\r\n },\r\n bullet: {\r\n display: 'inline-block',\r\n margin: '0 2px',\r\n transform: 'scale(0.8)',\r\n },\r\n title: {\r\n fontSize: 25,\r\n textAlign: \"center\",\r\n border: \"outset\",\r\n backgroundColor: \"#c9f1fd\",\r\n width: \"100%\"\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n div: {\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n boxSizing: \"borderBox\"\r\n },\r\n divider: {\r\n fontSize: \"24px\",\r\n fontWeight: 400,\r\n backgroundColor: \"#fff\",\r\n paddingRight: \"10px\",\r\n display: \"inline-block\",\r\n width: \"15%\",\r\n padding: \"0 3px\",\r\n //verticalAlign: \"middle\"\r\n },\r\n divLine: {\r\n borderBottom: \"1px solid #9a9a9a\",\r\n borderTop: \"1px solid #9a9a9a\",\r\n width: \"40%\",\r\n height: \"1px\",\r\n display: \"inline-block\",\r\n verticalAlign: \"middle\",\r\n marginBottom: 0,\r\n }\r\n});\r\n\r\nconst MmsIstatistikler = props => {\r\n\r\n const { dispatch } = props\r\n const { user, sessionId, contextSessionId } = props.userReducer.user\r\n const [mmsServiceSummary, setMmsServiceSummary] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n const [last1WeekServiceProviderSummaryDataStateShow, setLast1WeekServiceProviderSummaryDataStateShow] = useState(false);\r\n const [last1WeekStatusSummaryDataStateShow, setLast1WeekStatusSummaryDataStateShow] = useState(false);\r\n const classes = useStyles();\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n const data = { sessionId, contextSessionId }\r\n dispatch(notificationActions.getNotifications(data))\r\n\r\n getCustomerCustomFields(data)\r\n .then(res => {\r\n if (res.data) {\r\n if (res.data.result && res.data.result.resultCode === 0) {\r\n user.customerCustomFields = res.data.customerCustomFields\r\n setLoading(false);\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false);\r\n })\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (props.dashboardReducer.smsServiceSummary !== undefined) {\r\n setMmsServiceSummary(props.dashboardReducer.mmsServiceSummary);\r\n }\r\n }, [props.dashboardReducer])\r\n\r\n const [last1WeekServiceProviderSummaryDataState, setLast1WeekServiceProviderSummaryDataState] = useState(null);\r\n const [last1WeekStatusSummaryDataState, setLast1WeekStatusSummaryDataState] = useState(null);\r\n\r\n const last1WeekServiceProviderSummaryData = [[\"Pizza\", \"Popularity\"]];\r\n const last1WeekStatusSummaryData = [[\"Pizza\", \"Popularity\"]];\r\n\r\n useEffect(() => {\r\n\r\n if (mmsServiceSummary !== null) {\r\n mmsServiceSummary.last1WeekServiceProviderSummary.map(item => {\r\n var serviceProvider = item.serviceProvider;\r\n var totalCount = item.totalCount;\r\n last1WeekServiceProviderSummaryData.push([serviceProvider, totalCount])\r\n });\r\n\r\n if(mmsServiceSummary.last1WeekStatusSummary.totalDeliveredCount > 0)\r\n {\r\n last1WeekStatusSummaryData.push([\"İletilen\", mmsServiceSummary.last1WeekStatusSummary.totalDeliveredCount]);\r\n }\r\n if(mmsServiceSummary.last1WeekStatusSummary.totalUndeliveredCount > 0)\r\n {\r\n last1WeekStatusSummaryData.push([\"İletilemeyen\", mmsServiceSummary.last1WeekStatusSummary.totalUndeliveredCount]);\r\n }\r\n if(mmsServiceSummary.last1WeekStatusSummary.totalWaitingCount > 0)\r\n {\r\n last1WeekStatusSummaryData.push([\"İletim Raporu Beklenen\", mmsServiceSummary.last1WeekStatusSummary.totalWaitingCount]);\r\n }\r\n\r\n setLast1WeekServiceProviderSummaryDataState(last1WeekServiceProviderSummaryData)\r\n setLast1WeekStatusSummaryDataState(last1WeekStatusSummaryData)\r\n }\r\n }, [mmsServiceSummary])\r\n\r\n useEffect(() => {\r\n if(last1WeekServiceProviderSummaryDataState !== null)\r\n {\r\n\r\n if(last1WeekServiceProviderSummaryDataState.length > 1){\r\n setLast1WeekServiceProviderSummaryDataStateShow(true);\r\n }\r\n }\r\n }, [last1WeekServiceProviderSummaryDataState])\r\n\r\n useEffect(() => {\r\n if(last1WeekStatusSummaryDataState !== null)\r\n {\r\n \r\n if(last1WeekStatusSummaryDataState.length > 1){\r\n setLast1WeekStatusSummaryDataStateShow(true);\r\n }\r\n }\r\n }, [last1WeekStatusSummaryDataState])\r\n\r\n return (\r\n \r\n\r\n {loading\r\n ? \r\n \r\n
\r\n :\r\n <>\r\n \r\n
BUGÜ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 {(user.userInfo.userType === 3 || user.userInfo.userType === 4) &&\r\n \r\n \r\n Kalan Kontör Miktarı : {(user.customerInfo.credit || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n\r\n \r\n
SON 1 HAFTA \r\n \r\n\r\n \r\n {last1WeekServiceProviderSummaryDataStateShow\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 {last1WeekStatusSummaryDataStateShow\r\n ?\r\n <>\r\n \r\n \r\n \r\n >\r\n :\r\n <>\r\n\r\n >\r\n }\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n >\r\n }\r\n\r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer, dashboardReducer } = state\r\n return { userReducer, dashboardReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps)(MmsIstatistikler)","import React, { useEffect, useState } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport * as notificationActions from '../../_actions/notification.js'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport { getCustomerCustomFields } from '_services/definitions.js';\r\nimport { DonutChart } from \"./Components/DonutChart.js\";\r\nimport { StatisticCard } from \"./Components/StatisticCard.js\";\r\nimport { ErrorMessages } from \"./Components/ErrorMessages.js\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { getEmailCreditInfo } from '_services/email'\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n minWidth: 275,\r\n // backgroundColor: \"#c9f1fd\",\r\n margin: \"5px\"\r\n },\r\n bullet: {\r\n display: 'inline-block',\r\n margin: '0 2px',\r\n transform: 'scale(0.8)',\r\n },\r\n title: {\r\n fontSize: 25,\r\n textAlign: \"center\",\r\n border: \"outset\",\r\n backgroundColor: \"#c9f1fd\",\r\n width: \"100%\"\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n div: {\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n boxSizing: \"borderBox\"\r\n },\r\n divider: {\r\n fontSize: \"24px\",\r\n fontWeight: 400,\r\n backgroundColor: \"#fff\",\r\n paddingRight: \"10px\",\r\n display: \"inline-block\",\r\n width: \"15%\",\r\n padding: \"0 3px\",\r\n //verticalAlign: \"middle\"\r\n },\r\n divLine: {\r\n borderBottom: \"1px solid #9a9a9a\",\r\n borderTop: \"1px solid #9a9a9a\",\r\n width: \"40%\",\r\n height: \"1px\",\r\n display: \"inline-block\",\r\n verticalAlign: \"middle\",\r\n marginBottom: 0,\r\n }\r\n});\r\n\r\nconst EmailIstatistikler = props => {\r\n\r\n const { dispatch } = props\r\n const { user, sessionId, contextSessionId } = props.userReducer.user\r\n const [emailServiceSummary, setEmailServiceSummary] = useState(null);\r\n const [loading, setLoading] = useState(false);\r\n const [last1WeekServiceProviderSummaryDataStateShow, setLast1WeekServiceProviderSummaryDataStateShow] = useState(false);\r\n const [last1WeekStatusSummaryDataStateShow, setLast1WeekStatusSummaryDataStateShow] = useState(false);\r\n const classes = useStyles();\r\n\r\n useEffect(() => {\r\n setLoading(true);\r\n const data = { sessionId, contextSessionId }\r\n dispatch(notificationActions.getNotifications(data))\r\n\r\n getCustomerCustomFields(data)\r\n .then(res => {\r\n if (res.data) {\r\n if (res.data.result && res.data.result.resultCode === 0) {\r\n user.customerCustomFields = res.data.customerCustomFields\r\n setLoading(false);\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false);\r\n })\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (props.dashboardReducer.smsServiceSummary !== undefined) {\r\n setEmailServiceSummary(props.dashboardReducer.emailServiceSummary);\r\n }\r\n }, [props.dashboardReducer])\r\n\r\n const [last1WeekServiceProviderSummaryDataState, setLast1WeekServiceProviderSummaryDataState] = useState(null);\r\n const [last1WeekStatusSummaryDataState, setLast1WeekStatusSummaryDataState] = useState(null);\r\n\r\n const last1WeekServiceProviderSummaryData = [[\"Pizza\", \"Popularity\"]];\r\n const last1WeekStatusSummaryData = [[\"Pizza\", \"Popularity\"]];\r\n\r\n useEffect(() => {\r\n\r\n if (emailServiceSummary !== null) {\r\n emailServiceSummary.last1WeekServiceProviderSummary.map(item => {\r\n var serviceProvider = item.serviceProvider;\r\n var totalCount = item.totalCount;\r\n last1WeekServiceProviderSummaryData.push([serviceProvider, totalCount])\r\n });\r\n\r\n if(emailServiceSummary.last1WeekStatusSummary.totalDeliveredCount > 0)\r\n {\r\n last1WeekStatusSummaryData.push([\"İletilen\", emailServiceSummary.last1WeekStatusSummary.totalDeliveredCount]);\r\n }\r\n if(emailServiceSummary.last1WeekStatusSummary.totalUndeliveredCount > 0)\r\n {\r\n last1WeekStatusSummaryData.push([\"İletilemeyen\", emailServiceSummary.last1WeekStatusSummary.totalUndeliveredCount]);\r\n }\r\n if(emailServiceSummary.last1WeekStatusSummary.totalWaitingCount > 0)\r\n {\r\n last1WeekStatusSummaryData.push([\"İletim Raporu Beklenen\", emailServiceSummary.last1WeekStatusSummary.totalWaitingCount]);\r\n }\r\n \r\n setLast1WeekServiceProviderSummaryDataState(last1WeekServiceProviderSummaryData)\r\n setLast1WeekStatusSummaryDataState(last1WeekStatusSummaryData)\r\n }\r\n }, [emailServiceSummary])\r\n\r\n const [emailAvailableTotalCredit, setEmailAvailableTotalCredit] = useState(null);\r\n\r\n useEffect(() => {\r\n if (sessionId && contextSessionId) {\r\n const data = { sessionId, contextSessionId }\r\n getEmailCreditInfo(data)\r\n .then(res => {\r\n if (res.data) {\r\n setEmailAvailableTotalCredit(res.data.availableTotalCredit)\r\n }\r\n })\r\n .catch(err => {\r\n\r\n })\r\n }\r\n }, [sessionId, contextSessionId])\r\n\r\n useEffect(() => {\r\n if(last1WeekServiceProviderSummaryDataState !== null)\r\n {\r\n\r\n if(last1WeekServiceProviderSummaryDataState.length > 1){\r\n setLast1WeekServiceProviderSummaryDataStateShow(true);\r\n }\r\n }\r\n }, [last1WeekServiceProviderSummaryDataState])\r\n\r\n useEffect(() => {\r\n if(last1WeekStatusSummaryDataState !== null)\r\n {\r\n \r\n if(last1WeekStatusSummaryDataState.length > 1){\r\n setLast1WeekStatusSummaryDataStateShow(true);\r\n }\r\n }\r\n }, [last1WeekStatusSummaryDataState])\r\n\r\n return (\r\n \r\n\r\n {loading\r\n ? \r\n \r\n
\r\n :\r\n <>\r\n \r\n
BUGÜ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 {(user.userInfo.userType === 3 || user.userInfo.userType === 4) &&\r\n \r\n \r\n Kalan Kontör Miktarı : {(emailAvailableTotalCredit || '0').toLocaleString(\"tr-TR\")} \r\n \r\n \r\n }\r\n\r\n \r\n
SON 1 HAFTA \r\n \r\n\r\n \r\n {last1WeekServiceProviderSummaryDataStateShow\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 {last1WeekStatusSummaryDataStateShow\r\n ?\r\n <>\r\n \r\n \r\n \r\n >\r\n :\r\n <>\r\n\r\n >\r\n }\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n >\r\n }\r\n\r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer, dashboardReducer } = state\r\n return { userReducer, dashboardReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps)(EmailIstatistikler)","import { alertResponseError } from '_helpers/notification'\r\nimport { checkResponse } from '_helpers/notification'\r\nimport * as dashboardActionTypes from '../_actionTypes/dashboard'\r\nimport * as dashboardServices from '../_services/dashboard'\r\n\r\nexport const getDashboardDatas = (data) => {\r\n return dispatch => {\r\n dashboardServices.getDashboardSendingSummary(data)\r\n .then(\r\n res => {\r\n if (checkResponse(res, null, null, 'Dashboard datası getirilemedi.')) {\r\n dispatch(success(res.data.data))\r\n }\r\n else{\r\n return\r\n }\r\n }\r\n )\r\n .catch(err => {\r\n alertResponseError(err, 'Dashboard datası getirilemedi.')\r\n })\r\n }\r\n\r\n function success(dashboardDatas){ return { type : dashboardActionTypes.GET, dashboardDatas }}\r\n}","import { domain } from './domain'\r\nimport axios from 'axios'\r\n\r\nexport const getDashboardSendingSummary = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/Dashboard/GetDashboardSendingSummary', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}","export const GET = 'GET_DASHBOARD_DATAS'","import React, { useEffect, useState } from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport clsx from 'clsx';\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Box from '@material-ui/core/Box';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n '&:hover': {\r\n backgroundColor: 'transparent',\r\n },\r\n },\r\n icon: {\r\n borderRadius: '50%',\r\n width: 16,\r\n height: 16,\r\n boxShadow: 'inset 0 0 0 1px rgba(16,22,26,.2), inset 0 -1px 0 rgba(16,22,26,.1)',\r\n backgroundColor: '#f5f8fa',\r\n backgroundImage: 'linear-gradient(180deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0))',\r\n '$root.Mui-focusVisible &': {\r\n outline: '2px auto rgba(19,124,189,.6)',\r\n outlineOffset: 2,\r\n },\r\n 'input:hover ~ &': {\r\n backgroundColor: '#ebf1f5',\r\n },\r\n 'input:disabled ~ &': {\r\n boxShadow: 'none',\r\n background: 'rgba(206,217,224,.5)',\r\n },\r\n },\r\n checkedIcon: {\r\n backgroundColor: '#3c54a5',\r\n backgroundImage: 'linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))',\r\n '&:before': {\r\n display: 'block',\r\n width: 16,\r\n height: 16,\r\n backgroundImage: 'radial-gradient(#fff,#fff 28%,transparent 32%)',\r\n content: '\"\"',\r\n },\r\n 'input:hover ~ &': {\r\n backgroundColor: '#3c54a5',\r\n },\r\n },\r\n textBox : {\r\n maxHeight : '80vh',\r\n overflowY : 'scroll'\r\n }\r\n}));\r\n\r\nconst Notification_20240220_Security = props => {\r\n const [ isAccepted, setIsAccepted ] = useState(false)\r\n const [ IpAddress ] = useState(null)\r\n\r\n\r\n const { open, toggle, notificationAnswer, setNotificationAnswer, okFunc } = props\r\n const classes = useStyles();\r\n\r\n const handlClose = () => {\r\n setIsAccepted(false)\r\n toggle()\r\n }\r\n\r\n const StyledRadio = (props) => {\r\n\r\n return (\r\n }\r\n icon={ }\r\n {...props}\r\n />\r\n );\r\n }\r\n\r\n const handleEtk = (q) => {\r\n setNotificationAnswer({\r\n isAccepted,\r\n IpAddress,\r\n ...q\r\n })\r\n }\r\n\r\n const handleOk = () => {\r\n okFunc()\r\n handlClose()\r\n }\r\n\r\n return(\r\n \r\n Önemli Uyarı: Şüpheli Telefon Araması Sahtecilik ve Dolandırıcılık \r\n \r\n \r\n \r\n \r\n \r\n Değerli Kullanıcımız,\r\n \r\n \r\n \r\n Dolandırıcılar, Codec gibi şirketlerin telefon numaralarını taklit etmek için sahte Arayan Numara bilgisi kullanır ve genellikle dikkatinizi çekmek için hesabınızda şüpheli bir etkinlik olduğunu iddia eder. Sizi onlara bilgi, kullanıcı adı , 2FA doğrulama kodu ve şifre vermeye ikna etmek için övgü ya da tehdit ifadeleri kullanabilir. \r\n \r\n \r\n \r\n Hizmet vermekte olduğumuz tüm kurumsal hesaplarınız ve Toplu SMS gönderimleriyle ilgili olarak; tarafınıza, Codec İletişim ve Danışmanlık Hizmetleri adına telefonla ya da mail ile ulaşan, kullanıcı adı, şifre, eposta veya kişisel bilgilerinizi paylaşmanızı talep eden kişilere lütfen itibar etmeyiniz. Şifre bilgilerinizi Codec personeli dahil hiç kimse ile paylaşmayınız. Firmamız hiçbir zaman sizi arayarak şifrelerinizi sormaz veya şifrenizi telefona tuşlamanızı istemez. \r\n \r\n \r\n \r\n Firmamız güvenlik ekibinden aradığını söyleyip hesaplarınızdan izinsiz işlemlerin yapıldığını, bunların durdurulması için panel bilgi/şifrelerinizi paylaşmanızı isteyen kişilere itibar etmeyiniz, onların yönlendirmesi ile işlem yapmayınız.\r\n \r\n \r\n \r\n Şüpheli durumlarda 0(212) 483 71 13 numaralı Musteri Hizmetleri numaramızdan bizimle iletişime geçmenizi veya satış sorumlunuzu bilgilendirmenizi rica ederiz. \r\n \r\n \r\n \r\n Lütfen bu uyarıları dikkate alınız ve hassas bilgilerinizi korumak için her zaman dikkatli olunuz. Sahtekârlık ve dolandırıcılığı güvenlik önemleri ve hassasiyet göstererek engelleyebiliriz.\r\n \r\n \r\n \r\n Saygılarımızla. \r\n \r\n \r\n \r\n CODEC \r\n \r\n \r\n \r\n \r\n {\r\n setIsAccepted(!isAccepted)\r\n handleEtk({ isAccepted : !isAccepted})\r\n }}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n }\r\n label='Bilgilendirme metnini okudum. Kabul ediyorum.'\r\n />\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n TAMAM\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Notification_20240220_Security","import React, { useEffect } from 'react'\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\n\r\nimport SmsIcon from '@material-ui/icons/Sms';\r\nimport MmsIcon from '@material-ui/icons/Mms';\r\nimport MailIcon from '@material-ui/icons/Mail';\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport { connect } from 'react-redux';\r\nimport SmsIstatistikler from './SmsIstatistikler';\r\nimport MmsIstatistikler from './MmsIstatistikler';\r\nimport EmailIstatistikler from './EmailIstatistikler';\r\n\r\nimport { UserRightVisibility } from 'variables/userRightVisibility.js';\r\n\r\nimport * as dashboardActions from '../../_actions/dashboard.js'\r\nimport { queryUserLogKeyAndValue } from '_services/notification';\r\nimport Notification_20240220_Security from 'components/Notification/Notification_20240220_Security';\r\nimport { checkResultResponse } from '_helpers/notification';\r\nimport { userLog } from '_services/notification';\r\nimport { AppVersion } from 'variables/appVersion';\r\nimport moment from 'moment';\r\n\r\nfunction TabPanel(props) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.any.isRequired,\r\n value: PropTypes.any.isRequired,\r\n};\r\n\r\nfunction a11yProps(index) {\r\n return {\r\n id: `scrollable-force-tab-${index}`,\r\n 'aria-controls': `scrollable-force-tabpanel-${index}`,\r\n };\r\n}\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n flexGrow: 1,\r\n width: '100%',\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n}));\r\n\r\nconst Anasayfa = props => {\r\n const classes = useStyles();\r\n const [value, setValue] = React.useState(0);\r\n const { user, sessionId, contextSessionId } = props.userReducer.user\r\n const [notification_20240220_SecurityDialogAnswer, setNotification_20240220_SecurityDialogAnswer] = React.useState(null)\r\n const [notification_20240220_SecurityDialog, setNotification_20240220_SecurityDialog] = React.useState(false)\r\n\r\n const { dispatch } = props\r\n \r\n useEffect(() => {\r\n const data = { sessionId, contextSessionId }\r\n dispatch(dashboardActions.getDashboardDatas(data))\r\n showNotifications();\r\n}, [])\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n };\r\n\r\n const showNotifications = () => {\r\n if (user\r\n && (\r\n !user.userGroupAdminInfo\r\n || user.userGroupAdminInfo == null\r\n || user.userGroupAdminInfo.userGroupAdmin == null\r\n || user.userGroupAdminInfo.userGroupAdmin.loginName == null)) {\r\n const AuthData = {\r\n sessionId,\r\n contextSessionId,\r\n }\r\n const data = { AuthData, ProcessType: \"NotificationIsSeen\", LogKey: \"Notification_2FASecurityWarning_20240220\", LogValue: \"true\" }\r\n queryUserLogKeyAndValue(data).then(res => {\r\n if (checkResultResponse(res, null, null, 'Bilgilndirme sorgusu başarısız oldu.')) {\r\n let dontShow = false;\r\n if (res.data && res.data.result && res.data.result != null) {\r\n if (res.data.result.resultCode == 0) {\r\n if (res.data.returnValue) {\r\n dontShow = true;\r\n }\r\n }\r\n }\r\n\r\n if (!dontShow) {\r\n setNotification_20240220_SecurityDialog(true);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n const notification_20240220_Security_OkFunc = () => {\r\n const AuthData = {\r\n sessionId,\r\n contextSessionId,\r\n }\r\n const data = {\r\n AuthData,\r\n ProcessType: \"NotificationIsSeen\",\r\n Request: {\r\n sessionId: sessionId,\r\n logType: \"INFO\", \r\n source: \"App.Anasayfa.Notification_20240220_Security.TAMAM\", \r\n logKey: \"Notification_2FASecurityWarning_20240220\", \r\n logValue: notification_20240220_SecurityDialogAnswer.isAccepted,\r\n localDate: moment().format(\"YYYY-MM-DDTHH:mm:ssZ\")\r\n },\r\n ClientUniqueId: AppVersion.clientUniqueId,\r\n ClientVersion: AppVersion.APPVERSION\r\n }\r\n userLog(data); \r\n }\r\n\r\n const handlNotification_20240220_SecurityDialogToggle = () => {\r\n setNotification_20240220_SecurityDialog(!notification_20240220_SecurityDialog)\r\n }\r\n\r\n return (\r\n \r\n
\r\n \r\n } {...a11yProps(0)} />\r\n } {...a11yProps(1)} />\r\n {user.userRights.serviceRight_Email === UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE &&\r\n } {...a11yProps(2)} />\r\n }\r\n \r\n \r\n\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n {user.userRights.serviceRight_Email === UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE &&\r\n
\r\n \r\n \r\n }\r\n\r\n
\r\n\r\n
\r\n );\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer } = state\r\n return { userReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps)(Anasayfa)\r\n","import { domain } from './domain'\r\nimport axios from 'axios'\r\n\r\nexport const getSavedFiles = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/SavedFiles/GetSavedFileList', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\n\r\nexport const uploadFile = (fd) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data : fd\r\n }\r\n return axios(domain+'/SavedFiles/UploadFile', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const deleteSavedFiles = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/SavedFiles/DeleteSavedFileList', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getUploadedFileContentInfo = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/SavedFiles/GetUploadedFileContentInfo', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const importUploadedFile = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/SavedFiles/ImportUploadedFile', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\n\r\nexport const getClipboardContentInfo = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/SavedFiles/GetClipboardContentInfo', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const importClipboard = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/SavedFiles/ImportClipboard', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const uploadPhoneBookFile = (fd) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data : fd\r\n }\r\n return axios(domain+'/PhoneBook/UploadFile', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const deletePhoneBookFiles = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/PhoneBook/DeleteSavedFileList', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getUploadedPhoneBookFileContentInfo = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/PhoneBook/GetUploadedFileContentInfo', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const importUploadedPhoneBookFile = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/PhoneBook/ImportUploadedFile', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\n\r\nexport const getPhoneBookClipboardContentInfo = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/PhoneBook/GetClipboardContentInfo', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const importPhoneBookClipboard = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/PhoneBook/ImportClipboard', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const savedFilesBulkOperation = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/SavedFiles/SavedFilesBulkOperation', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getFileAsExcel = (data) => {\r\n const requestOptions = {\r\n method : \"POST\",\r\n headers : {\r\n 'Content-type' : 'application/json' \r\n },\r\n data\r\n }\r\n return axios(domain+'/SavedFiles/GetFileAsExcel', requestOptions)\r\n .then( res => {\r\n return res\r\n })\r\n}","import React from 'react'\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\nimport styles from \"assets/jss/loginPage.js\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst NewFileDialog = props => {\r\n const { fileModal, handleFileUpload, handleFileUploadModal, handleClipBoardModalToggle } = props\r\n const classes = useStyles();\r\n\r\n return(\r\n \r\n Kişi Listenizi Hangi Kaynaktan Aktaracağınızı Seçiniz \r\n \r\n \r\n \r\n \r\n BİLGİSAYARINIZDAN\r\n \r\n \r\n \r\n \r\n Panodan \r\n \r\n \r\n \r\n Dosyanızı ZIP ya da RAR formatında içerisinde sadece yükleme yapacağınız dosya olacak şekilde \r\n sıkıştırarak da yükleyebilirsiniz. Özellikle büyük boyulu dosyalarda dosyanızı sıkıştırarak \r\n yüklemeniz daha hızlı aktarılmasını sağlayacaktır.\r\n \r\n \r\n \r\n \r\n Vazgeç\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default NewFileDialog","import React, { useState, useEffect } from 'react';\r\nimport { getUploadedPhoneBookFileContentInfo, importUploadedPhoneBookFile, getPhoneBookClipboardContentInfo, importPhoneBookClipboard } from '../../_services/file.js'\r\nimport { getGroupList } from '../../_services/phoneBook'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Box from '@material-ui/core/Box';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Slide from '@material-ui/core/Slide';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Divider from '@material-ui/core/Divider';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\n\r\nimport Button from '../CustomButtons/Button.js';\r\n\r\nimport styles from \"assets/jss/material-dashboard-react/components/importFileDialog.js\"\r\nimport { checkResponse } from '_helpers/notification.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return ;\r\n});\r\n\r\nconst ImportFileDialog = (props) => {\r\n\r\n const [loading, setLoading] = useState(false)\r\n const [groupListLoading, setGroupListLoading] = useState(false)\r\n\r\n const [mode, setMode] = useState('file')\r\n const [Groups, SetGroups] = useState([])\r\n const [TableName, SetTableName] = useState('')\r\n const [Delimiter, SetDelimiter] = useState('')\r\n const [CaptionRowIndex, SetCaptionRowIndex] = useState(-2)\r\n\r\n const [fileImportJob, setFileImportJob] = useState({})\r\n const [fileFields, setFileFields] = useState([])\r\n const [tableList, setTableList] = useState([])\r\n const [delimiterList, setDelimiterList] = useState([])\r\n // const [ fileUserFriendlyName, setFileUserFriendlyName ] = useState('')\r\n const [keyFieldType, setKeyFieldType] = useState('')\r\n const [sourceType, setSourceType] = useState('')\r\n const [fileType, setFileType] = useState('')\r\n const [fileOriginalName, setFileOriginalName] = useState('')\r\n\r\n const [UserFileName, SetUserFileName] = useState('')\r\n // const [ UserFileDescription, SetUserFileDescription ] = useState('')\r\n\r\n const [ExistenceOption, SetExistenceOption] = useState(1)\r\n const [ImportDataOption, SetImportDataOption] = useState(3)\r\n const [GroupName, SetGroupName] = useState('')\r\n\r\n const [selectedTableName, setSelectedTableName] = useState('')\r\n const [selectedFieldDelimiter, setSelectedFieldDelimiter] = useState('')\r\n const [alert, setAlert] = useState('')\r\n\r\n const { open, handleToggle, sessionId, contextSessionId, FileName, getResult,\r\n Content, clipBoardTrigger\r\n } = props\r\n\r\n const AuthData = { sessionId, contextSessionId }\r\n\r\n useEffect(() => {\r\n fetchData({})\r\n }, [])\r\n\r\n const clearModal = () => {\r\n setLoading(false)\r\n\r\n setMode('file')\r\n SetTableName('')\r\n SetDelimiter('')\r\n SetCaptionRowIndex(-2)\r\n\r\n setFileImportJob({})\r\n setFileFields([])\r\n setTableList([])\r\n setDelimiterList([])\r\n // setFileUserFriendlyName('')\r\n setKeyFieldType('')\r\n setSourceType('')\r\n setFileType('')\r\n setFileOriginalName('')\r\n\r\n SetUserFileName('')\r\n // SetUserFileDescription('')\r\n\r\n SetExistenceOption(1)\r\n SetImportDataOption(3)\r\n SetGroupName('')\r\n\r\n setSelectedTableName('')\r\n setSelectedFieldDelimiter('')\r\n setAlert('')\r\n }\r\n\r\n const fetchData = query => {\r\n const ListRequest = {\r\n PageSize: 0,\r\n PageNumber: 1,\r\n SelectFields: null,\r\n SortFields: [],\r\n Includes: null,\r\n SearchExpression: null,\r\n SearchCriterias: null,\r\n SearchQuery: null,\r\n IntersectList: null,\r\n ExceptList: null,\r\n CalculateTotalRecordCount: true,\r\n ...query\r\n }\r\n const data = { AuthData, ListRequest }\r\n setGroupListLoading(true)\r\n getGroupList(data)\r\n .then(res => {\r\n setGroupListLoading(false)\r\n if (checkResponse(res, null, null, 'Grup listesi getirilemedi.')) {\r\n SetGroups(res.data.list)\r\n }\r\n })\r\n .catch(err => {\r\n setGroupListLoading(false)\r\n alertResponseError(err, 'Grup listesi getirilemedi.')\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n setAlert('')\r\n }, [])\r\n\r\n\r\n useEffect(() => {\r\n let data = { sessionId, contextSessionId, Delimiter, CaptionRowIndex }\r\n if (FileName !== '') {\r\n data = { ...data, FileName, TableName }\r\n getColumns(data)\r\n }\r\n if (clipBoardTrigger && Content !== '') {\r\n data = { ...data, Content }\r\n getColumns(data)\r\n }\r\n }, [FileName, Content, clipBoardTrigger, TableName, Delimiter])\r\n\r\n const getColumns = data => {\r\n if (FileName !== '') {\r\n setMode('file')\r\n setLoading(true)\r\n getUploadedPhoneBookFileContentInfo(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'Dosya içerik bilgileri alınırken bir hata oluştu.')) {\r\n setFileImportJob(res.data.fileImportJob)\r\n setFileFields(res.data.fileImportJob.fileFields)\r\n SetCaptionRowIndex(res.data.fileImportJob.captionRowIndex)\r\n setTableList(res.data.tableList)\r\n setDelimiterList(res.data.delimiterList)\r\n // setFileUserFriendlyName(res.data.fileImportJob.fileUserFriendlyName)\r\n setKeyFieldType(res.data.fileImportJob.keyFieldType)\r\n setSourceType(res.data.fileImportJob.sourceType)\r\n setFileType(res.data.fileImportJob.fileType)\r\n setFileOriginalName(res.data.fileImportJob.fileOriginalName)\r\n SetUserFileName(res.data.fileImportJob.fileUserFriendlyName)\r\n setSelectedTableName(res.data.fileImportJob.selectedTableName)\r\n setSelectedFieldDelimiter(res.data.fileImportJob.selectedFieldDelimiter)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Dosya içerik bilgileri alınırken bir hata oluştu.')\r\n })\r\n } else {\r\n setMode('clipboard')\r\n setLoading(true)\r\n getPhoneBookClipboardContentInfo(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'İçerik bilgileri alınırken bir hata oluştu.')) {\r\n setFileImportJob(res.data.fileImportJob)\r\n setFileFields(res.data.fileImportJob.fileFields)\r\n SetCaptionRowIndex(res.data.fileImportJob.captionRowIndex)\r\n setTableList(res.data.tableList)\r\n setDelimiterList(res.data.delimiterList)\r\n // setFileUserFriendlyName(res.data.fileImportJob.fileUserFriendlyName)\r\n setKeyFieldType(res.data.fileImportJob.keyFieldType)\r\n setSourceType(res.data.fileImportJob.sourceType)\r\n setFileType(res.data.fileImportJob.fileType)\r\n setFileOriginalName(res.data.fileImportJob.fileOriginalName)\r\n SetUserFileName(res.data.fileImportJob.fileUserFriendlyName)\r\n setSelectedTableName(res.data.fileImportJob.selectedTableName)\r\n setSelectedFieldDelimiter(res.data.fileImportJob.selectedFieldDelimiter)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'İçerik bilgileri alınırken bir hata oluştu.')\r\n })\r\n }\r\n }\r\n\r\n const classes = useStyles();\r\n\r\n const handleFirstRowCheckBox = e => {\r\n const { checked } = e.target\r\n const value = checked ? 0 : -1\r\n SetCaptionRowIndex(value)\r\n let data = { sessionId, contextSessionId, Delimiter, CaptionRowIndex: value }\r\n if (FileName !== '') {\r\n data = { ...data, FileName, TableName }\r\n getColumns(data)\r\n }\r\n if (clipBoardTrigger && Content !== '') {\r\n data = { ...data, Content }\r\n getColumns(data)\r\n }\r\n }\r\n\r\n\r\n const setNewFileFileds = (item, index) => {\r\n const newFileFields = [\r\n ...fileFields.slice(0, index),\r\n item,\r\n ...fileFields.slice(index + 1)\r\n ]\r\n setFileFields(newFileFields)\r\n }\r\n\r\n const handleFieldNameChange = e => {\r\n let { value, name } = e.target\r\n name = parseInt(name)\r\n const newItem = {\r\n ...fileFields[name],\r\n fieldName: value\r\n }\r\n setNewFileFileds(newItem, name)\r\n }\r\n\r\n const handleSelectedChange = e => {\r\n let { checked, name } = e.target\r\n name = parseInt(name)\r\n const newItem = {\r\n ...fileFields[name],\r\n selected: checked\r\n }\r\n setNewFileFileds(newItem, name)\r\n }\r\n\r\n const handleColumnInfoChange = e => {\r\n let { value, name } = e.target\r\n name = parseInt(name)\r\n const newItem = {\r\n ...fileFields[name],\r\n phoneBookFieldType: value\r\n }\r\n setNewFileFileds(newItem, name)\r\n setAlert('')\r\n }\r\n\r\n const fieldNameInputs = fileFileds => {\r\n return (\r\n fileFields.map((field) => {\r\n const modulus = parseInt(field.id) % 2\r\n return (\r\n \r\n \r\n \r\n )\r\n })\r\n )\r\n }\r\n\r\n const selectedCheckBoxes = fileFileds => {\r\n return (\r\n fileFields.map((field) => {\r\n const modulus = parseInt(field.id) % 2\r\n return (\r\n \r\n \r\n \r\n )\r\n })\r\n )\r\n }\r\n\r\n const columnInfoSelects = fileFileds => {\r\n return (\r\n fileFields.map((field) => {\r\n const modulus = parseInt(field.id) % 2\r\n return (\r\n \r\n \r\n \r\n Seçiniz\r\n \r\n Ünvanı \r\n Adı \r\n İkinci Adı \r\n Soyadı \r\n İkinci Soyadı \r\n Cep Telefonu \r\n E-posta adresi \r\n Cep Telefonu #2 \r\n Cep Telefonu #2 \r\n T.C. Kimlik No \r\n Cinsiyeti \r\n Evlilik Durumu \r\n Eşinin Adı \r\n HomePhone \r\n Ev Adresi \r\n Ev Posta Kodu \r\n Ev Semti \r\n\r\n Ev Şehri \r\n Ev Ülkesi \r\n Web Adresi \r\n Doğum Tarihi \r\n Evlilik Tarihi \r\n Özel Tarih #1 \r\n\r\n Özel Tarih #2 \r\n Kan Grubu \r\n Firma Adı \r\n Sektörü \r\n Bölümü \r\n Telefon #1 \r\n Telefon #2 \r\n Telefon #3 \r\n Faks \r\n\r\n E-posta Adresi #1 \r\n E-posta Adresi #2 \r\n Web \r\n Adres #1 \r\n Adres #2 \r\n Posta Kodu \r\n Semti \r\n Şehir \r\n Ülke \r\n \r\n \r\n )\r\n })\r\n )\r\n }\r\n\r\n const sampleDataInfos = fileFileds => {\r\n return (\r\n fileFields.map((field) => {\r\n const modulus = parseInt(field.id) % 2\r\n return (\r\n \r\n {field.sampleData}\r\n \r\n )\r\n })\r\n )\r\n }\r\n\r\n const handleSubmitAction = () => {\r\n if (ExistenceOption === -1) {\r\n setAlert(\"Kayıt mevcutsa ne yapalım?\")\r\n } else {\r\n const FileImportJob = {\r\n ...fileImportJob,\r\n fileFields,\r\n fileType,\r\n fileOriginalName,\r\n sourceType,\r\n selectedTableName,\r\n selectedFieldDelimiter,\r\n captionRowIndex: CaptionRowIndex,\r\n keyFieldType\r\n }\r\n\r\n if (mode === 'file') {\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n FileName,\r\n ExistenceOption,\r\n ImportDataOption,\r\n GroupName,\r\n FileImportJob\r\n }\r\n setLoading(true)\r\n importUploadedPhoneBookFile(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'Dosya içeri aktarılırken bir hata oluştu.')) {\r\n const result = {\r\n ...res.data,\r\n UserFileName,\r\n fileOriginalName\r\n }\r\n // SetUserFileDescription('')\r\n getResult(result)\r\n SetExistenceOption(-1)\r\n SetImportDataOption(2)\r\n SetGroupName('')\r\n handleToggle()\r\n clearModal()\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Dosya içeri aktarılırken bir hata oluştu.')\r\n })\r\n } else {\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n Content,\r\n ExistenceOption,\r\n ImportDataOption,\r\n GroupName,\r\n FileImportJob\r\n }\r\n setLoading(true)\r\n importPhoneBookClipboard(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'İçerik içeri aktarılırken bir hata oluştu.')) {\r\n const result = {\r\n ...res.data,\r\n UserFileName,\r\n fileOriginalName\r\n }\r\n // SetUserFileDescription('')\r\n getResult(result)\r\n SetExistenceOption(0)\r\n SetImportDataOption(3)\r\n SetGroupName('')\r\n handleToggle()\r\n clearModal()\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'İçerik içeri aktarılırken bir hata oluştu.')\r\n })\r\n }\r\n }\r\n }\r\n\r\n const handleSubmit = () => {\r\n setAlert('')\r\n let fileFieldsCheck = false\r\n let mobileCheck = false\r\n let idNoCheck = false\r\n let taxNoCheck = false\r\n let emailCheck = false\r\n let typeCheck = false\r\n let fieldNameCheck = true\r\n fileFields.forEach(field => {\r\n if (field.selected) {\r\n if (field.fieldName === '') {\r\n fieldNameCheck = false\r\n }\r\n if (parseInt(field.fieldType) === 2) {\r\n mobileCheck = mobileCheck || true\r\n }\r\n if (parseInt(field.fieldType) === 5) {\r\n idNoCheck = idNoCheck || true\r\n }\r\n if (parseInt(field.fieldType) === 6) {\r\n emailCheck = emailCheck || true\r\n }\r\n if (parseInt(field.fieldType) === 16) {\r\n taxNoCheck = taxNoCheck || true\r\n }\r\n }\r\n fileFieldsCheck = fileFieldsCheck || field.selected || emailCheck || mobileCheck || idNoCheck\r\n })\r\n if (!fileFieldsCheck) {\r\n setAlert('Lütfen dosyanızdaki aktarmak istediğiniz tüm sütunlar için aktarımın yapılacağı bir telefon rehberi alanını seçiniz. Örneğin dosyanızda cep telefonu numaraları hangi sütundaysa o sütuna ait \"Alan içeriği\" değerini \"Cep Telefonu\" olarak seçiniz.')\r\n } else {\r\n typeCheck = mobileCheck || idNoCheck || taxNoCheck || emailCheck\r\n if (!typeCheck) {\r\n setAlert('Lütfen dosyanızdan en az bir cep telefonu, T.C. kimlik no, Vergi no ya da e-posta adresi alanı seçiniz. Örneğin dosyanızda cep telefonu numaraları hangi sütundaysa o sütuna ait \"Alan içeriği\" değerini \"Cep Telefonu\" olarak seçiniz.')\r\n } else if (!fieldNameCheck) {\r\n setAlert('Lütfen aktarılan sütunların alan adlarının boş olmadığından emin olunuz.')\r\n } else {\r\n handleSubmitAction()\r\n }\r\n }\r\n }\r\n\r\n const tableListOptions = list => {\r\n return (\r\n list.map((l, i) => {\r\n return (\r\n {l} \r\n )\r\n })\r\n )\r\n }\r\n\r\n const delimiterListOptions = list => {\r\n return (\r\n list.map((l, i) => {\r\n return (\r\n {l.label} \r\n )\r\n })\r\n )\r\n }\r\n\r\n const handleSelectTableName = e => {\r\n const { value } = e.target\r\n setSelectedTableName(value)\r\n SetTableName(value)\r\n }\r\n\r\n const handleSelectDelimiterName = e => {\r\n const { value } = e.target\r\n setSelectedFieldDelimiter(value)\r\n SetDelimiter(value)\r\n }\r\n\r\n return (\r\n {\r\n handleToggle()\r\n clearModal()\r\n }}\r\n TransitionComponent={Transition}\r\n style={{ zIndex: 800 }}>\r\n \r\n \r\n {\r\n handleToggle()\r\n clearModal()\r\n }}\r\n aria-label=\"close\">\r\n \r\n \r\n \r\n Dosyadan Aktarım\r\n \r\n {\r\n handleToggle()\r\n clearModal()\r\n }}\r\n >\r\n\r\n Geri\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {alert !== '' &&\r\n \r\n }\r\n \r\n \r\n {loading\r\n ? \r\n : \r\n \r\n \r\n \r\n \r\n Aktarılan dosyanın adı :\r\n \r\n \r\n {fileOriginalName}\r\n \r\n \r\n \r\n {(tableList && tableList.length > 0)\r\n ? <>\r\n \r\n Aktarılan Sayfa :\r\n \r\n \r\n \r\n {tableListOptions(tableList)}\r\n \r\n \r\n >\r\n : <>\r\n \r\n Kullanılan alan ayıracı :\r\n \r\n \r\n \r\n {delimiterListOptions(delimiterList)}\r\n \r\n \r\n >\r\n }\r\n \r\n \r\n \r\n Listenin ilk satırı başlıktır\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n }\r\n \r\n \r\n {loading\r\n ? \r\n : \r\n \r\n \r\n \r\n \r\n Alan adı\r\n \r\n {fieldNameInputs(fileFields)}\r\n \r\n \r\n \r\n Sütun aktarılsın mı?\r\n \r\n {selectedCheckBoxes(fileFields)}\r\n \r\n \r\n \r\n Sütun ne tür bilgi içeriyor?\r\n \r\n {columnInfoSelects(fileFields)}\r\n \r\n \r\n \r\n Örnek değer\r\n \r\n {sampleDataInfos(fileFields)}\r\n \r\n \r\n
\r\n \r\n }\r\n \r\n \r\n {loading\r\n ? \r\n : \r\n \r\n \r\n Kayıt Mevcutsa : \r\n \r\n \r\n \r\n SetExistenceOption(e.target.value)}\r\n displayEmpty\r\n className={classes.selectEmpty}\r\n fullWidth\r\n inputProps={{ 'aria-label': 'Bilgi' }}\r\n >\r\n Sadece girilmemiş alanları güncelle \r\n Var olan kaydı sil yenisini ekle \r\n Ekleme yapma \r\n Var olan kaydı silmeden yenisini ekle \r\n \r\n \r\n \r\n \r\n {\r\n setAlert('')\r\n SetImportDataOption(parseInt(e.target.value))\r\n }}>\r\n } label=\"Mevcut gruba ekle\" />\r\n } label=\"Yeni grup oluştur\" />\r\n } label=\"Hiçbir gruba ekleme\" />\r\n \r\n \r\n \r\n {ImportDataOption === 2 &&\r\n {\r\n setAlert('')\r\n SetGroupName(e.target.value)\r\n }}\r\n label='Grup Adı' variant=\"outlined\" />\r\n }\r\n {ImportDataOption === 1 &&\r\n (groupListLoading ?\r\n \r\n : {\r\n setAlert('')\r\n SetGroupName(e.target.value)\r\n }}\r\n displayEmpty\r\n fullWidth\r\n inputProps={{ 'aria-label': 'Mevcut Gruba Ekle' }}\r\n >\r\n \r\n Seçiniz\r\n \r\n {Groups.map(group => {\r\n return (\r\n {group.groupName} ({(group.totalPersonCount || '').toLocaleString(\"tr-TR\")} kişi) \r\n )\r\n })}\r\n \r\n )\r\n }\r\n \r\n \r\n }\r\n {!loading && KONTROL ETTİM, AKTARIMI BAŞLAT }\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default ImportFileDialog\r\n","export class FileImportResult {\r\n static KEY_TOTALRECORDCOUNT = \"TotalRecordCount\";\r\n static KEY_VALIDRECORDS = \"ValidRecords\";\r\n static KEY_INVALIDRECORDS = \"InvalidRecords\";\r\n static KEY_SAVEDMOBILENUMBERCOUNT = \"SavedMobileNumberCount\";\r\n static KEY_SAVEDIDENTITYNUMBERCOUNT = \"SavedIdentityNumberCount\";\r\n static KEY_SAVEDTAXNUMBERCOUNT = \"SavedTaxNumberCount\";\r\n static KEY_SAVEDEMAILADDRESSCOUNT = \"SavedEmailAddressCount\";\r\n static KEY_SAVEDPHONENUMBERCOUNT = \"SavedPhoneNumberCount\";\r\n static KEY_MOBILEPHONEFORMATERRORCOUNT = \"MobilePhoneFormatErrorCount\";\r\n static KEY_MOBILEPHONEDUPLICATEERRORCOUNT = \"MobilePhoneDuplicateErrorCount\";\r\n static KEY_IDENTITYNUMBERISINVALIDERRORCOUNT = \"IdentityNumberIsInvalidErrorCount\";\r\n static KEY_IDENTITYNUMBERISDUPLICATEDERRORCOUNT = \"IdentityNumberIsDuplicatedErrorCount\";\r\n static KEY_TAXNUMBERISINVALIDERRORCOUNT = \"TaxNumberIsInvalidErrorCount\";\r\n static KEY_TAXNUMBERISDUPLICATEDERRORCOUNT = \"TaxNumberIsDuplicatedErrorCount\";\r\n static KEY_EMAILADDRESSISINVALIDERRORCOUNT = \"EmailAddressIsInvalidErrorCount\";\r\n static KEY_EMAILADDRESSISDUPLICATEDERRORCOUNT = \"EmailAddressIsDuplicatedErrorCount\";\r\n static KEY_OTHERERRORCOUNT = \"OtherErrorCount\";\r\n\r\n\r\n static getValue = (key, array) => {\r\n for (var i = 0; i < array.length; i++) {\r\n if (array[i].label === key) {\r\n return array[i].value\r\n }\r\n }\r\n }\r\n}","import React from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport Box from '@material-ui/core/Box';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport { FileImportResult } from 'variables/fileImportResult';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n link: {\r\n textAlign: \"center\"\r\n },\r\n bold: {\r\n fontSize: \"bold\"\r\n },\r\n success: {\r\n color: \"green\"\r\n },\r\n danger: {\r\n color: \"red\"\r\n }\r\n}));\r\n\r\nconst ResultDialog = props => {\r\n\r\n const { open, handleToggle, result, fileSize } = props\r\n const classes = useStyles();\r\n\r\n const bytesToKilBytes = (bytes, digits) => digits ? (bytes / (1024)).toFixed(digits) : (bytes / (1024 * 1024));\r\n\r\n if (result.statusSummaryValues) {\r\n return (\r\n \r\n Dosya Aktarımı Tamamlandı \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Orjinal dosya adı\r\n \r\n \r\n {result.fileOriginalName}\r\n \r\n \r\n \r\n \r\n Dosya adı\r\n \r\n \r\n {result.UserFileName}\r\n \r\n \r\n \r\n \r\n Dosya boyutu\r\n \r\n \r\n {bytesToKilBytes(fileSize, 2)}KB\r\n \r\n \r\n \r\n \r\n Toplam Kayıt \r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_TOTALRECORDCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n Geçerli Kayıt \r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_VALIDRECORDS, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n Geçersiz Kayıt \r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_INVALIDRECORDS, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n Aktarılan toplam cep telefonu adedi\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_SAVEDMOBILENUMBERCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n \r\n \r\n Aktarılan toplam kimlik numarası adedi\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_SAVEDIDENTITYNUMBERCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n \r\n \r\n Aktarılan toplam vergi numarası adedi\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_SAVEDTAXNUMBERCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n \r\n \r\n Aktarılan toplam e-posta adresi adedi\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_SAVEDEMAILADDRESSCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n \r\n {Number(FileImportResult.getValue(FileImportResult.KEY_MOBILEPHONEFORMATERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n Cep tel. format hatası\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_MOBILEPHONEFORMATERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n {Number(FileImportResult.getValue(FileImportResult.KEY_MOBILEPHONEDUPLICATEERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n Cep tel. mükerrer hatası\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_MOBILEPHONEDUPLICATEERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n {Number(FileImportResult.getValue(FileImportResult.KEY_IDENTITYNUMBERISINVALIDERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n Kimlik numarası format hatası\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_IDENTITYNUMBERISINVALIDERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n {Number(FileImportResult.getValue(FileImportResult.KEY_IDENTITYNUMBERISINVALIDERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n Kimlik numarası mükerrer hatası\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_IDENTITYNUMBERISDUPLICATEDERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n {Number(FileImportResult.getValue(FileImportResult.KEY_TAXNUMBERISINVALIDERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n Vergi numarası format hatası\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_TAXNUMBERISINVALIDERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n {Number(FileImportResult.getValue(FileImportResult.KEY_TAXNUMBERISDUPLICATEDERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n Vergi numarası mükerrer hatası\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_TAXNUMBERISDUPLICATEDERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n {Number(FileImportResult.getValue(FileImportResult.KEY_EMAILADDRESSISINVALIDERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n E-posta adresi format hatası\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_EMAILADDRESSISINVALIDERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n {Number(FileImportResult.getValue(FileImportResult.KEY_EMAILADDRESSISDUPLICATEDERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n E-posta adresi mükerrer hatası\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_EMAILADDRESSISDUPLICATEDERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n {Number(FileImportResult.getValue(FileImportResult.KEY_OTHERERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n Diğer hatalar\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_OTHERERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n
\r\n \r\n \r\n \r\n {result.importDataNoticeListFilePath &&\r\n \r\n \r\n Aktarım Hata ve Uyarıları Listesini İndirmek İçin Tıklayınız\r\n \r\n \r\n }\r\n \r\n \r\n \r\n Kapat\r\n \r\n \r\n \r\n )\r\n } else {\r\n return (\r\n <>>\r\n )\r\n }\r\n}\r\n\r\nexport default ResultDialog","import React from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\r\n}));\r\n\r\nconst ClipBoardDialog = props => {\r\n\r\n const { open, handleToggle, Content, handleContentChange, handleClipBoardTrigger } = props\r\n const classes = useStyles();\r\n\r\n return(\r\n \r\n Panodan Ekle \r\n \r\n \r\n \r\n Aşağıdaki alana sağ tıklayıp 'Yapıştır' seçerek ya da Ctrl+V tuşlarına basarak listenizi yapıştırabilirsiniz.\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Devam Et\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ClipBoardDialog","export const GETPEOPLE = 'GET_PEOPLE_PHONEBOOK_LIST'\r\nexport const GETGROUPS = 'GET_GROUPS_PHONEBOOK_LIST'\r\nexport const PEOPLEREQ = 'GET_PEOPLE_LIST_REQUEST'\r\nexport const GROUPREQ = 'GET_GROUP_LIST_REQUEST'","import { alertResponseError } from '_helpers/notification'\r\nimport { checkResponse } from '_helpers/notification'\r\nimport * as phonebookActionTypes from '../_actionTypes/phonebook'\r\nimport * as phonebookServices from '../_services/phoneBook'\r\n\r\nexport const getGroups = (data) => {\r\n return dispatch => {\r\n dispatch(req())\r\n phonebookServices.getGroupList(data)\r\n .then(res => {\r\n if (checkResponse(res, null, null, 'Grup listesi getirilemedi.')) {\r\n dispatch(success(res.data))\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Grup listesi getirilemedi.')\r\n })\r\n }\r\n function req() { return { type: phonebookActionTypes.GROUPREQ } }\r\n function success(groups) { return { type: phonebookActionTypes.GETGROUPS, groups } }\r\n}\r\n\r\nexport const getPeople = (data) => {\r\n return dispatch => {\r\n dispatch(req())\r\n phonebookServices.getPersonList(data)\r\n .then(res => {\r\n if (checkResponse(res, null, null, 'Kişi listesi getirilemedi.')) {\r\n dispatch(success(res.data))\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Kişi listesi getirilemedi.')\r\n })\r\n }\r\n function req() { return { type: phonebookActionTypes.PEOPLEREQ } }\r\n function success(people) { return { type: phonebookActionTypes.GETPEOPLE, people } }\r\n}\r\n","import React from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles'\r\nimport { Paper, Typography } from '@material-ui/core'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport { DatePicker } from \"@material-ui/pickers\";\r\nimport moment from 'moment';\r\n\r\n\r\nconst styles = {\r\n container : {\r\n padding : 50\r\n }\r\n}\r\n\r\nconst useStyles = makeStyles(styles)\r\n\r\n\r\nexport const Tab1 = props => {\r\n const { PersonData, handleSetPersonData } = props\r\n const classes = useStyles()\r\n return(\r\n \r\n \r\n \r\n \r\n GENEL BİLGİLER\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport const Tab2 = props => {\r\n const { PersonData, handleSetPersonData } = props\r\n const classes = useStyles()\r\n return(\r\n \r\n \r\n \r\n \r\n ÖNEMLİ TARİHLER\r\n \r\n \r\n \r\n { \r\n const e = {target:{value:date, name:'BirthDate'}}\r\n handleSetPersonData(e)\r\n }}\r\n format = 'DD.MM.YYYY'\r\n okLabel = 'TAMAM'\r\n cancelLabel = 'VAZGEÇ'\r\n />\r\n \r\n \r\n { \r\n const e = {target:{value:date, name:'MarriageDate'}}\r\n handleSetPersonData(e)\r\n }}\r\n format = 'DD.MM.YYYY'\r\n okLabel = 'TAMAM'\r\n cancelLabel = 'VAZGEÇ'\r\n /> \r\n \r\n \r\n { \r\n const e = {target:{value:date, name:'SpecialDate1'}}\r\n handleSetPersonData(e)\r\n }}\r\n format = 'DD.MM.YYYY'\r\n okLabel = 'TAMAM'\r\n cancelLabel = 'VAZGEÇ'\r\n /> \r\n \r\n \r\n { \r\n const e = {target:{value:date, name:'SpecialDate2'}}\r\n handleSetPersonData(e)\r\n }}\r\n format = 'DD.MM.YYYY'\r\n okLabel = 'TAMAM'\r\n cancelLabel = 'VAZGEÇ'\r\n /> \r\n \r\n \r\n {/* */} \r\n {/* */}\r\n {/* */}\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport const Tab3 = props => {\r\n const { PersonData, handleSetPersonData, cities } = props\r\n const classes = useStyles()\r\n return(\r\n \r\n \r\n \r\n \r\n DİĞER BİLGİLER\r\n \r\n \r\n \r\n \r\n \r\n Cinsiyet\r\n \r\n Belirtilmemiş \r\n Bayan \r\n Bay \r\n \r\n \r\n \r\n \r\n \r\n Medeni Hali\r\n \r\n Bekar \r\n Evli \r\n Boşanmış \r\n Dul \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Kan Grubu\r\n \r\n 0+ \r\n 0- \r\n A+ \r\n A- \r\n B+ \r\n B- \r\n AB+ \r\n AB- \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 Ev Şehir\r\n \r\n { cities.map( city => {\r\n return(\r\n {city.cityName} \r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport const Tab4 = props => {\r\n const { PersonData, handleSetPersonData, cities } = props\r\n const classes = useStyles()\r\n return(\r\n \r\n \r\n \r\n \r\n FİRMA BİLGİLERİ\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 Şehir\r\n \r\n { cities.map( city => {\r\n return(\r\n {city.cityName} \r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport const Tab5 = props => {\r\n const { GroupList, SetGroupList } = props\r\n\r\n const handleGroupList = e => {\r\n let {value} = e.target\r\n value = parseInt(value)\r\n const index = GroupList.map( i => i.groupId).indexOf(value)\r\n let newList = GroupList\r\n if( index > -1 ){\r\n let newMember = { ...GroupList[index], selected : !GroupList[index].selected}\r\n newList = [\r\n ...newList.slice(0,index),\r\n newMember,\r\n ...newList.slice(index+1)\r\n ]\r\n }\r\n SetGroupList(newList)\r\n }\r\n\r\n const checkBoxes = list => {\r\n return(\r\n list.map( l => {\r\n return(\r\n \r\n \r\n {l.groupName} \r\n \r\n )\r\n })\r\n )\r\n }\r\n\r\n const classes = useStyles()\r\n return(\r\n \r\n \r\n \r\n \r\n KİŞİNİN İÇİNDE OLDUĞU GRUPLAR\r\n \r\n \r\n Kişi seçili olan gruplar içerisindedir.\r\n \r\n \r\n {checkBoxes(GroupList)}\r\n \r\n \r\n \r\n \r\n )\r\n}","import React, { useEffect, useState } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Box from '@material-ui/core/Box';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Slide from '@material-ui/core/Slide';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Button from '../CustomButtons/Button.js';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport SwipeableViews from 'react-swipeable-views';\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport { Tab1, Tab2, Tab3, Tab4, Tab5 } from './Tabs'\r\nimport { getCityList, addOrUpdatePersonList, getGroupListOfPerson } from '../../_services/phoneBook.js'\r\nimport styles from \"assets/jss/material-dashboard-react/components/importFileDialog.js\"\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport { checkResponse } from '_helpers/notification.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\nimport { CircularProgress } from '@material-ui/core';\r\nimport { checkResultResponse } from '_helpers/notification.js';\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return ;\r\n})\r\n\r\nconst TabPanel = (props) => {\r\n const classes = useStyles();\r\n const { children, value, index, ...other } = props;\r\n return (\r\n \r\n {value === index && (\r\n \r\n {children}\r\n \r\n )}\r\n
\r\n );\r\n}\r\n\r\nconst NewPersonDialog = props => {\r\n const { open, handleToggle, sessionId, contextSessionId, customerId, person, setPerson, fetchData, mode, setMode } = props\r\n const data = { sessionId, contextSessionId }\r\n const classes = useStyles();\r\n const [value, setValue] = React.useState(0);\r\n const [cities, setCities] = useState([])\r\n const [_isMounted, _setIsMounted] = useState(false)\r\n const [alert, setAlert] = useState('')\r\n const [citiesLoading, setCitiesLoading] = useState(false)\r\n const [groupListLoading, setGroupListLoading] = useState(false)\r\n const [saveLoading, setSaveLoading] = useState(false)\r\n const [PersonData, SetPersonData] = useState({\r\n RecordId: 0,\r\n CustomerId: customerId,\r\n MobilePhone: '',\r\n IdentityNumber: '',\r\n TaxNumber: '',\r\n EMail: ''\r\n })\r\n const [GroupList, SetGroupList] = useState([])\r\n\r\n useEffect(() => {\r\n if (person.recordId) {\r\n let data = { sessionId, contextSessionId, PersonId: person.recordId }\r\n setGroupListLoading(true)\r\n getGroupListOfPerson(data)\r\n .then(res => {\r\n setGroupListLoading(false)\r\n if (checkResponse(res, null, null, 'Kişinin grup listeleri getirilirken bir hata oluştu.')) {\r\n SetGroupList(res.data.list)\r\n }\r\n })\r\n .catch(err => {\r\n setGroupListLoading(false)\r\n alertResponseError(err, 'Kişinin grup listeleri getirilirken bir hata oluştu.')\r\n })\r\n }\r\n }, [person])\r\n\r\n useEffect(() => {\r\n if (!person.recordId) {\r\n let data = { sessionId, contextSessionId, PersonId: 0 }\r\n setGroupListLoading(true)\r\n getGroupListOfPerson(data)\r\n .then(res => {\r\n setGroupListLoading(false)\r\n if (checkResponse(res, null, null, 'Grup listeleri getirilirken bir hata oluştu.')) {\r\n SetGroupList(res.data.list)\r\n }\r\n })\r\n .catch(err => {\r\n setGroupListLoading(false)\r\n alertResponseError(err, 'Grup listeleri getirilirken bir hata oluştu.')\r\n })\r\n }\r\n }, [person])\r\n\r\n useEffect(() => {\r\n let newData = {}\r\n if (person.recordId) {\r\n for (let data in person) {\r\n const firstLetter = data.charAt(0).toUpperCase()\r\n const key = firstLetter + data.slice(1)\r\n newData = {\r\n ...newData,\r\n [key]: person[data]\r\n }\r\n }\r\n }\r\n SetPersonData({\r\n ...PersonData,\r\n ...newData\r\n })\r\n }, [person])\r\n\r\n useEffect(() => {\r\n _setIsMounted(true)\r\n if (_isMounted) {\r\n setCitiesLoading(true)\r\n getCityList(data)\r\n .then(res => {\r\n setCitiesLoading(false)\r\n if (checkResponse(res, null, null, 'Şehir listesi getirilemedi.')) {\r\n if (_isMounted) {\r\n setCities(res.data.list)\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n setCitiesLoading(false)\r\n alertResponseError(err, 'Şehir listesi getirilemedi.')\r\n })\r\n }\r\n return () => {\r\n _setIsMounted(false)\r\n }\r\n }, [_isMounted])\r\n\r\n const AuthData = data\r\n\r\n const handleSubmit = () => {\r\n let List = GroupList.filter(l => l.selected)\r\n List = List.map(l => { return l.groupId })\r\n const data = { AuthData, PersonData, GroupList: List }\r\n handleChangeIndex(0)\r\n const { IdentityNumber, TaxNumber, MobilePhone, EMail } = PersonData\r\n if (IdentityNumber === '' && TaxNumber === '' && MobilePhone === '' && EMail === '') {\r\n setAlert(\"Telefon numarası, T.C. kimlik No, vergi kimlik no ya da e-posta adresi gerekli.\")\r\n } else {\r\n setSaveLoading(true)\r\n addOrUpdatePersonList(data)\r\n .then(res => {\r\n setSaveLoading(false)\r\n if (checkResultResponse(res, null, (mode === 1 ? 'Kişi başarıyla düzenlendi.' : 'Yeni kişi başarıyla eklendi.'), (mode === 1 ? 'Kişi düzenlenirken bir hata oluştu.' : 'Yeni kişi eklerken bir hata oluştu.'))) {\r\n _setIsMounted(false)\r\n SetPersonData({\r\n RecordId: 0,\r\n CustomerId: customerId,\r\n Name: '',\r\n Surname: '',\r\n MobilePhone: ''\r\n })\r\n setMode(0)\r\n setPerson({})\r\n fetchData({})\r\n handleToggle()\r\n }\r\n })\r\n .catch(err => {\r\n setSaveLoading(false)\r\n alertResponseError(err, (mode === 1 ? 'Kişi düzenlenirken bir hata oluştu.' : 'Yeni kişi eklerken bir hata oluştu.'))\r\n })\r\n }\r\n }\r\n\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n };\r\n\r\n const handleChangeIndex = (index) => {\r\n setValue(index);\r\n };\r\n\r\n const handleSetPersonData = (e) => {\r\n const { value, name } = e.target\r\n setAlert('')\r\n SetPersonData({\r\n ...PersonData,\r\n [name]: value\r\n })\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {mode === 1 ? \"KİŞİ DÜZENLE\" : \"YENİ KİŞİ EKLE\"}\r\n \r\n {saveLoading ?\r\n \r\n \r\n
\r\n :\r\n \r\n Kaydet\r\n \r\n }\r\n \r\n GERİ\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 {alert !== '' &&\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 {citiesLoading ?\r\n \r\n \r\n
\r\n : \r\n }\r\n \r\n \r\n \r\n \r\n \r\n {groupListLoading ?\r\n \r\n \r\n
\r\n :\r\n \r\n }\r\n \r\n \r\n \r\n \r\n
\r\n \r\n )\r\n}\r\n\r\nexport default NewPersonDialog","import React, { useState, useEffect } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport { useHistory } from 'react-router-dom'\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport { getPeople } from '../../_actions/phonebook.js'\r\nimport { deletePersonList, getListAsExcel, getPersonListAsExcel } from '../../_services/phoneBook.js'\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport {\r\n PagingState,\r\n CustomPaging,\r\n SelectionState,\r\n IntegratedSelection\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableColumnResizing,\r\n TableSelection,\r\n // ColumnChooser,\r\n // TableColumnVisibility,\r\n // Toolbar,\r\n} from '@devexpress/dx-react-grid-material-ui';\r\nimport NewPersonDialog from 'components/PhoneBook/NewPersonDialog.js'\r\nimport Swal from 'sweetalert2'\r\nimport { numberFormat } from \"../../formats/number.js\"\r\nimport { checkResponse } from '_helpers/notification.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\nimport { alertErrorText } from '_helpers/notification.js';\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\nconst columns = [\r\n { name: 'phone', title: 'Cep Telefonu' },\r\n { name: 'name', title: 'Adı' },\r\n { name: 'surname', title: 'Soyadı' },\r\n { name: 'firmName', title: 'Firma Adı' },\r\n { name: 'action', title: 'İşlem' },\r\n];\r\n\r\nconst Kisiler = props => {\r\n const history = useHistory();\r\n const [person, setPerson] = useState({})\r\n const [mode, setMode] = useState(0)\r\n const [count, setCount] = useState(5)\r\n const [PageSize, SetPageSize] = useState(10)\r\n const [PageNumber, SetPageNumber] = useState(0)\r\n const [selection, setSelection] = useState([])\r\n const [peopleList, setPeopleList] = useState([])\r\n const [newPersonDialog, setNewPersonDialog] = useState(false)\r\n const [deleteLoading, setDeleteLoading] = useState(false)\r\n const [listLoading, setListLoading] = useState(false)\r\n const [SortFields, SetSortFields] = useState([\r\n {\r\n FieldName: \"Name\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"Surname\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"MobilePhone\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: 'phone', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'name', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'surname', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'firmName', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'action', width: 55, align: 'center' },\r\n ]);\r\n\r\n // const [ Direction, SetDirection ] = useState('')\r\n const [search, setSearch] = useState('')\r\n\r\n const handleNewPersonDialogToggle = () => {\r\n setNewPersonDialog(!newPersonDialog)\r\n }\r\n\r\n const handleEdit = (person) => {\r\n setNewPersonDialog(!newPersonDialog)\r\n setPerson(person)\r\n setMode(1)\r\n }\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return ({\r\n phone: numberFormat(l.mobilePhone || ''),\r\n name: l.name,\r\n surname: l.surname,\r\n firmName: l.firmName,\r\n action: \r\n handleEdit(l)} >\r\n \r\n \r\n \r\n }\r\n )\r\n })\r\n )\r\n }\r\n const {\r\n dispatch,\r\n phonebook\r\n } = props\r\n const loading = phonebook.peopleLoading\r\n const { sessionId, contextSessionId, user } = props.userReducer.user\r\n const { customerInfo, userInfo } = user\r\n const { customerId } = customerInfo\r\n const { userId } = userInfo\r\n\r\n useEffect(() => {\r\n if (props.phonebook.people && props.phonebook.people.list !== undefined) {\r\n setPeopleList(props.phonebook.people.list)\r\n setCount(props.phonebook.people.totalRecordCount)\r\n }\r\n }, [props.phonebook])\r\n\r\n useEffect(() => {\r\n fetchData({})\r\n }, [])\r\n const AuthData = { sessionId, contextSessionId }\r\n\r\n const fetchData = query => {\r\n const ListRequest = {\r\n PageSize,\r\n PageNumber,\r\n SelectFields: null,\r\n SortFields,\r\n Includes: null,\r\n SearchExpression: null,\r\n SearchCriterias: null,\r\n SearchQuery: null,\r\n IntersectList: null,\r\n ExceptList: null,\r\n CalculateTotalRecordCount: true,\r\n ...query\r\n }\r\n const data = { AuthData, ListRequest }\r\n dispatch(getPeople(data))\r\n }\r\n const handlePageSizeChange = (value) => {\r\n setSelection([])\r\n SetPageSize(value)\r\n SetPageNumber(0)\r\n fetchData({ PageSize: value, PageNumber: 1 })\r\n }\r\n\r\n const handlePageChange = (value) => {\r\n setSelection([])\r\n SetPageNumber(value)\r\n fetchData({ PageNumber: value + 1 })\r\n }\r\n\r\n const handleSearch = e => {\r\n const { value } = e.target\r\n setSearch(value)\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n setSelection([])\r\n fetchData({ SearchExpression: search })\r\n }\r\n\r\n // const handleSort = params => {\r\n // setSelection([])\r\n // if( params[0].columnName !== 'id'){\r\n // if(Direction === 'Ascending'){\r\n // fetchData({ SortFields : [{FieldName: params[0].columnName, Direction: \"Descending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Descending\"}])\r\n // SetDirection('Descending')\r\n // }else{\r\n // fetchData({ SortFields : [{FieldName: params[0].columnName, Direction: \"Ascending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Ascending\"}])\r\n // SetDirection('Ascending')\r\n // }\r\n // }else{\r\n // return\r\n // }\r\n // }\r\n\r\n const handleSms = () => {\r\n if (selection.length > 0) {\r\n let PbPersonList = []\r\n for (let i = 0; i < selection.length; i++) {\r\n PbPersonList = [\r\n ...PbPersonList,\r\n peopleList[selection[i]].recordId\r\n ]\r\n }\r\n\r\n history.push({\r\n pathname: '/admin/sms',\r\n PbPersonList\r\n })\r\n }\r\n else {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: 'Hiçbir kayıt seçilmemiş.'\r\n })\r\n }\r\n }\r\n\r\n const handleDelete = () => {\r\n if (selection.length > 0) {\r\n let PersonIdList = []\r\n for (let i = 0; i < selection.length; i++) {\r\n PersonIdList = [\r\n ...PersonIdList,\r\n peopleList[selection[i]].recordId\r\n ]\r\n }\r\n Swal.fire({\r\n title: selection.length + ' adet kişi silinecek! Silmek istediğinize emin misiniz?',\r\n showDenyButton: true,\r\n // showCancelButton: true,\r\n confirmButtonText: 'Sil',\r\n denyButtonText: 'Vazgeç',\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n const data = { PersonIdList, sessionId, contextSessionId }\r\n setDeleteLoading(true)\r\n deletePersonList(data)\r\n .then(res => {\r\n setDeleteLoading(false)\r\n if (checkResponse(res, null, (res && res.data && res.data.returnParameters && res.data.returnParameters.length > 0 ? res.data.returnParameters[0].value + ' kişi silindi.' : 'Kişi silindi.'), 'Seçili kişi(ler) silinemedi.')) {\r\n setSelection([])\r\n fetchData()\r\n }\r\n })\r\n .catch(err => {\r\n setDeleteLoading(false)\r\n alertResponseError(err, 'Seçili kişi(ler) silinemedi.')\r\n })\r\n } else if (result.isDenied) {\r\n Swal.fire('Kişi silme işleminden vazgeçildi..', '', 'info')\r\n }\r\n })\r\n } else {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: 'Hiçbir kayıt seçilmemiş.'\r\n })\r\n }\r\n }\r\n\r\n const handleExcelExport = (id) => {\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n userId,\r\n customerId,\r\n SearchExpression: search\r\n }\r\n setListLoading(true)\r\n getPersonListAsExcel(data)\r\n .then(res => {\r\n setListLoading(false)\r\n if (res && res.data) {\r\n if (res.data.fileDownloadUrl) {\r\n const link = document.createElement('a');\r\n link.href = res.data.fileDownloadUrl\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n else {\r\n alertErrorText('Telefon rehberi kişi listesi dosyaya aktarılamadı. İndirme URL\\'i alınamadı.')\r\n }\r\n }\r\n else {\r\n alertErrorText('Telefon rehberi kişi listesi dosyaya aktarılamadı. Yanıt alınamadı.')\r\n }\r\n })\r\n .catch(err => {\r\n setListLoading(false)\r\n alertResponseError(err, 'Telefon rehberi kişi listesi dosyaya aktarılamadı.')\r\n })\r\n }\r\n\r\n return (\r\n \r\n \r\n YENİ KİŞİ EKLE \r\n \r\n \r\n SEÇİLİ KİŞİLERE SMS GÖNDER \r\n \r\n \r\n {deleteLoading\r\n ? \r\n \r\n
\r\n :\r\n SEÇİLİLERİ SİL \r\n }\r\n \r\n \r\n {deleteLoading\r\n ? \r\n \r\n
\r\n :\r\n LİSTEYİ EXCEL'E AKTAR \r\n }\r\n \r\n \r\n \r\n \r\n { if (e.keyCode === 13) { handleSearchSubmit() } },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n fetchData({ SearchExpression: '' })\r\n }}>Tümü \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n {loading || listLoading\r\n ? \r\n \r\n
\r\n : \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer, phonebook } = state\r\n return { userReducer, phonebook }\r\n}\r\n\r\nexport default connect(mapStateToProps)(Kisiler)","import React from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\nimport { CircularProgress } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n nameContainer: {\r\n marginBottom: 10\r\n }\r\n}));\r\n\r\nconst NewGroupDialog = props => {\r\n\r\n const { open, handleToggle, Mode, GroupName, SetGroupName, Description, SetDescription, handleSubmit, alert, loading } = props\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {Mode === 0 ? \"Yeni Grup Ekle\" : \"Grup Düzenle\"} \r\n \r\n {alert !== '' &&\r\n \r\n \r\n
\r\n }\r\n \r\n \r\n SetGroupName(e.target.value)}\r\n className={classes.nameContainer}\r\n fullWidth\r\n />\r\n \r\n \r\n SetDescription(e.target.value)}\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Vazgeç\r\n \r\n {loading ?\r\n \r\n \r\n
\r\n : \r\n {Mode === 0 ? 'Oluştur' : \"Düzenle\"}\r\n \r\n }\r\n \r\n \r\n )\r\n}\r\n\r\nexport default NewGroupDialog","import React, { useEffect, useState } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { getGroupPersonData, getListAsExcel, getPersonListAsExcel, groupPersonOperation } from '../../_services/phoneBook.js'\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Slide from '@material-ui/core/Slide';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Button from '../CustomButtons/Button.js';\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport styles from \"assets/jss/material-dashboard-react/components/importFileDialog.js\"\r\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\r\nimport ChevronLeftIcon from '@material-ui/icons/ChevronLeft';\r\nimport { numberFormat } from '../../formats/number.js'\r\n\r\nimport {\r\n PagingState,\r\n CustomPaging,\r\n SelectionState,\r\n IntegratedSelection\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableSelection,\r\n} from '@devexpress/dx-react-grid-material-ui';\r\nimport { checkResponse } from '_helpers/notification.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\nimport { CircularProgress, IconButton, Tooltip } from '@material-ui/core';\r\nimport { alertErrorText } from '_helpers/notification.js';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy'\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{from}-{to}/{count}',\r\n};\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return ;\r\n})\r\n\r\nconst GroupPeopleDialog = props => {\r\n const { open, handleToggle, AuthData, GroupId, CustomerId, UserId } = props\r\n const classes = useStyles();\r\n const [SourceListRequest, SetSourceListRequest] = useState({ PageSize: 20, PageNumber: 1, SearchExpression: '' })\r\n const [DestinationListRequest, SetDestinationListRequest] = useState({ PageSize: 20, PageNumber: 1, SearchExpression: '' })\r\n\r\n const [SourceList, SetSourceList] = useState([])\r\n const [DestinationList, SetDestinationList] = useState([])\r\n const [leftSelection, setLeftSelection] = useState([])\r\n const [rightSelection, setRightSelection] = useState([])\r\n const [SourceCount, SetSourceCount] = useState(0)\r\n const [DestinationCount, SetDestinationCount] = useState(0)\r\n const [loading, setLoading] = useState(false)\r\n const [fileLoading, setFileLoading] = useState(false)\r\n\r\n const columns = [\r\n { name: 'mobilePhone', title: 'Telefon' },\r\n { name: 'name', title: 'İsim' },\r\n ];\r\n\r\n const clearModal = () => {\r\n SetSourceListRequest({ PageSize: 20, PageNumber: 1, SearchExpression: '' })\r\n SetDestinationListRequest({ PageSize: 20, PageNumber: 1, SearchExpression: '' })\r\n\r\n SetSourceList([])\r\n SetDestinationList([])\r\n setLeftSelection([])\r\n setRightSelection([])\r\n SetSourceCount(0)\r\n SetDestinationCount(0)\r\n }\r\n\r\n useEffect(() => {\r\n if (GroupId !== 0) {\r\n fetchData({})\r\n }\r\n }, [GroupId])\r\n\r\n const fetchData = (query) => {\r\n const data = {\r\n AuthData,\r\n GroupId,\r\n SourceListRequest,\r\n DestinationListRequest,\r\n ...query\r\n }\r\n setLoading(true)\r\n getGroupPersonData(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'Grup kişileri getirilemedi.')) {\r\n SetSourceList(res.data.sourceList)\r\n SetDestinationList(res.data.destinationList)\r\n SetSourceCount(res.data.sourceListCount)\r\n SetDestinationCount(res.data.destinationListCount)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Grup kişileri getirilemedi.')\r\n })\r\n }\r\n\r\n const operateData = (query) => {\r\n const data = {\r\n AuthData,\r\n GroupId,\r\n SourceListRequest,\r\n DestinationListRequest,\r\n PersonIdList: [],\r\n OperationType: 0,\r\n ...query\r\n }\r\n setLoading(true)\r\n groupPersonOperation(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'Grup kişileri üzerinde işlem yapılamadı.')) {\r\n SetSourceList(res.data.sourceList)\r\n SetDestinationList(res.data.destinationList)\r\n SetSourceCount(res.data.sourceListCount)\r\n SetDestinationCount(res.data.destinationListCount)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Grup kişileri üzerinde işlem yapılamadı.')\r\n })\r\n }\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return {\r\n id: l.recordId,\r\n name: (l.name || l.surname ? (l.name ? l.name : '') + ' ' + (l.surname ? l.surname : '') : (l.firmName ? l.firmName : '')),\r\n mobilePhone: numberFormat(l.mobilePhone || ''),\r\n }\r\n })\r\n )\r\n }\r\n\r\n const handlePageSizeChange = (value) => {\r\n const newSourceListRequest = {\r\n ...SourceListRequest,\r\n PageSize: value\r\n }\r\n SetSourceListRequest(newSourceListRequest)\r\n fetchData({ SourceListRequest: newSourceListRequest })\r\n }\r\n\r\n const handlePageChange = (value) => {\r\n const newSourceListRequest = {\r\n ...SourceListRequest,\r\n PageNumber: value + 1\r\n }\r\n SetSourceListRequest(newSourceListRequest)\r\n fetchData({ SourceListRequest: newSourceListRequest })\r\n }\r\n\r\n const handleDestinationPageSizeChange = (value) => {\r\n const newDestinationListRequest = {\r\n ...DestinationListRequest,\r\n PageSize: value\r\n }\r\n SetDestinationListRequest(newDestinationListRequest)\r\n fetchData({ DestinationListRequest: newDestinationListRequest })\r\n }\r\n\r\n const handleDestinationPageChange = (value) => {\r\n const newDestinationListRequest = {\r\n ...DestinationListRequest,\r\n PageNumber: value + 1\r\n }\r\n SetDestinationListRequest(newDestinationListRequest)\r\n fetchData({ DestinationListRequest: newDestinationListRequest })\r\n }\r\n\r\n const handleClose = () => {\r\n SetSourceList([])\r\n SetDestinationList([])\r\n handleToggle()\r\n clearModal()\r\n }\r\n\r\n const handleAllSearchList = () => {\r\n SetSourceListRequest({ ...SourceListRequest, SearchExpression: \"\", PageNumber: 0 })\r\n fetchData({ SourceListRequest: { PageSize: 20, PageNumber: 1, SearchExpression: null } })\r\n }\r\n\r\n const handleAllDestinationSearchList = () => {\r\n SetDestinationListRequest({ ...DestinationListRequest, SearchExpression: \"\", PageNumber: 0 })\r\n fetchData({ DestinationListRequest: { PageSize: 20, PageNumber: 1, SearchExpression: null } })\r\n }\r\n\r\n const addSelectedList = () => {\r\n let PersonIdList = []\r\n for (let i = 0; i < leftSelection.length; i++) {\r\n PersonIdList = [\r\n ...PersonIdList,\r\n SourceList[leftSelection[i]].recordId\r\n ]\r\n }\r\n setLeftSelection([])\r\n operateData({ PersonIdList, OperationType: 2 })\r\n }\r\n\r\n const addFilteredList = () => {\r\n operateData({ OperationType: 4 })\r\n }\r\n\r\n const addAllList = () => {\r\n operateData({ OperationType: 6 })\r\n }\r\n\r\n const removeSelectedList = () => {\r\n let PersonIdList = []\r\n for (let i = 0; i < rightSelection.length; i++) {\r\n PersonIdList = [\r\n ...PersonIdList,\r\n DestinationList[rightSelection[i]].recordId\r\n ]\r\n }\r\n setRightSelection([])\r\n operateData({ PersonIdList, OperationType: 3 })\r\n }\r\n\r\n const removeFilteredList = () => {\r\n operateData({ OperationType: 5 })\r\n }\r\n\r\n const removeAllList = () => {\r\n operateData({ OperationType: 7 })\r\n }\r\n\r\n const handleExcelExport = (id) => {\r\n const data = {\r\n SessionId: AuthData.sessionId,\r\n ContextSessionId: AuthData.contextSessionId,\r\n UserId: UserId,\r\n CustomerId: CustomerId,\r\n GroupId: GroupId,\r\n SearchExpression: DestinationListRequest.SearchExpression\r\n }\r\n setFileLoading(true)\r\n getPersonListAsExcel(data)\r\n .then(res => {\r\n setFileLoading(false)\r\n if (res && res.data) {\r\n if (res.data.fileDownloadUrl) {\r\n const link = document.createElement('a');\r\n link.href = res.data.fileDownloadUrl\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n else {\r\n alertErrorText('Telefon rehberi grup kişileri listesi dosyaya aktarılamadı. İndirme URL\\'i alınamadı.')\r\n }\r\n }\r\n else {\r\n alertErrorText('Telefon rehberi grup kişileri listesi dosyaya aktarılamadı. Yanıt alınamadı.')\r\n }\r\n })\r\n .catch(err => {\r\n setFileLoading(false)\r\n alertResponseError(err, 'Telefon rehberi grup kişileri listesi dosyaya aktarılamadı.')\r\n })\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n GRUP ÜYELERİNİ DÜZENLE\r\n \r\n \r\n {fileLoading\r\n ? \r\n : \r\n \r\n \r\n }\r\n \r\n \r\n KAPAT\r\n \r\n \r\n \r\n \r\n
\r\n \r\n Gruba Eklenebilir Kişiler \r\n SetSourceListRequest({ ...SourceListRequest, SearchExpression: e.target.value }),\r\n onKeyDown: e => { if (e.keyCode === 13) { operateData({ OperationType: 1 }) } },\r\n endAdornment: (\r\n <>\r\n operateData({ OperationType: 1 })}>Ara \r\n Tümü \r\n >\r\n )\r\n }}\r\n />\r\n {loading\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 onClick={addSelectedList}\r\n >\r\n SEÇİLİ KİŞİLERİ EKLE\r\n \r\n }\r\n onClick={addFilteredList}\r\n >\r\n FİLTRELENENLERİ EKLE\r\n \r\n }\r\n onClick={addAllList}\r\n >\r\n Tüm KİŞİLERİ EKLE\r\n \r\n }\r\n onClick={removeSelectedList}\r\n >\r\n SEÇİLİ KİŞİLERİ ÇIKART\r\n \r\n }\r\n onClick={removeFilteredList}\r\n >\r\n FİLTRELENENLERİ ÇIKART\r\n \r\n }\r\n onClick={removeAllList}\r\n >\r\n TÜM KİŞİLERİ ÇIKART\r\n \r\n \r\n \r\n Gruba Eklenmiş Kişiler \r\n SetDestinationListRequest({ ...DestinationListRequest, SearchExpression: e.target.value }),\r\n onKeyDown: e => { if (e.keyCode === 13) { operateData({ OperationType: 1 }) } },\r\n endAdornment: (\r\n <>\r\n operateData({ OperationType: 1 })}>Ara \r\n Tümü \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n )\r\n}\r\n\r\nexport default GroupPeopleDialog","import React, { useState, useEffect } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport { useHistory } from 'react-router-dom'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport { deleteGroupList, addOrUpdateGroup } from '../../_services/phoneBook.js'\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport PeopleIcon from '@material-ui/icons/People';\r\nimport { getGroups } from '../../_actions/phonebook.js'\r\nimport {\r\n PagingState,\r\n CustomPaging,\r\n SelectionState,\r\n IntegratedSelection\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableSelection,\r\n TableColumnResizing\r\n} from '@devexpress/dx-react-grid-material-ui';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport NewGroupDialog from 'components/PhoneBook/NewGroupDialog.js'\r\nimport GroupPeopleDialog from 'components/PhoneBook/GroupPeopleDialog.js'\r\nimport Swal from 'sweetalert2'\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport { checkResultResponse } from '_helpers/notification.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\nconst columns = [\r\n { name: 'groupName', title: 'Grup Adı' },\r\n { name: 'description', title: 'Açıklama' },\r\n { name: 'totalPersonCount', title: 'Kişi Sayısı' },\r\n { name: 'insertDate', title: 'Eklenme Tarihi' },\r\n { name: 'action', title: 'İşlem' },\r\n];\r\n\r\nconst Gruplar = props => {\r\n const history = useHistory();\r\n const [count, setCount] = useState(5)\r\n const [PageSize, SetPageSize] = useState(10)\r\n const [PageNumber, SetPageNumber] = useState(0)\r\n const [selection, setSelection] = useState([])\r\n const [groupList, setGroupList] = useState([])\r\n const [SortFields, SetSortFields] = useState([\r\n {\r\n FieldName: \"GroupName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n\r\n // const [ sorting, setSorting ] = useState([])\r\n const [Direction, SetDirection] = useState('')\r\n const [search, setSearch] = useState('')\r\n const [newGroupDialog, setNewGroupDialog] = useState(false)\r\n const [groupPeopleDialog, setGroupPeopleDialog] = useState(false)\r\n const [GroupName, SetGroupName] = useState('')\r\n const [GroupId, SetGroupId] = useState(0)\r\n const [Description, SetDescription] = useState('')\r\n const [Mode, SetMode] = useState(0)\r\n const [alert, setAlert] = useState('')\r\n const [saveLoading, setSaveLoading] = useState(false)\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: 'groupName', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'description', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'totalPersonCount', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'insertDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'action', width: 120, align: 'center' },\r\n ]);\r\n\r\n const handleNewGroupDialogToggle = () => {\r\n SetMode(0)\r\n setNewGroupDialog(!newGroupDialog)\r\n }\r\n\r\n const handleGroupPeopleDialogToggle = () => {\r\n fetchData({})\r\n setGroupPeopleDialog(!groupPeopleDialog)\r\n }\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return (\r\n {\r\n groupName: l.groupName,\r\n description: l.description,\r\n totalPersonCount: (l.totalPersonCount || 0).toLocaleString(\"tr-TR\"),\r\n insertDate: moment(l.insertDate).format('DD.MM.YYYY HH:mm'),\r\n action: <>\r\n \r\n handleEdit(l)} >\r\n \r\n \r\n \r\n \r\n handleEditGroupPeople(l)} >\r\n \r\n \r\n \r\n >\r\n }\r\n )\r\n })\r\n )\r\n }\r\n const {\r\n dispatch,\r\n phonebook\r\n } = props\r\n const loading = phonebook.groupLoading\r\n const { sessionId, contextSessionId, user } = props.userReducer.user\r\n const { customerInfo, userInfo } = user\r\n const { customerId } = customerInfo\r\n const { userId } = userInfo\r\n const AuthData = { sessionId, contextSessionId }\r\n\r\n const handleEditGroupPeople = (group) => {\r\n handleGroupPeopleDialogToggle()\r\n SetGroupId(group.groupId)\r\n }\r\n\r\n const handleEdit = (group) => {\r\n handleNewGroupDialogToggle()\r\n SetGroupName(group.groupName)\r\n SetGroupId(group.groupId)\r\n SetDescription(group.description)\r\n SetMode(1)\r\n }\r\n\r\n const handleSubmit = () => {\r\n const GroupData = { GroupId, GroupName, Description, CustomerId: customerId }\r\n const data = { AuthData, GroupData }\r\n if (GroupName === '') {\r\n setAlert('Lütfen grup adını giriniz.')\r\n\r\n } else {\r\n setSaveLoading(true)\r\n addOrUpdateGroup(data)\r\n .then(res => {\r\n setSaveLoading(false)\r\n if (checkResultResponse(res, null, (Mode === 1 ? 'Grup başarıyla düzenlendi.' : 'Yeni grup başarıyla eklendi.'), (Mode === 1 ? 'Grup düzenlenirken bir hata oluştu.' : 'Yeni grup eklerken bir hata oluştu.'))) {\r\n SetMode(0)\r\n handleNewGroupDialogToggle()\r\n fetchData({})\r\n }\r\n })\r\n .catch(err => {\r\n setSaveLoading(false)\r\n alertResponseError(err, (Mode === 1 ? 'Grup düzenlenirken bir hata oluştu.' : 'Yeni Grup eklerken bir hata oluştu.'))\r\n })\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (props.phonebook.groups && props.phonebook.groups.list !== undefined) {\r\n setGroupList(props.phonebook.groups.list)\r\n setCount(props.phonebook.groups.totalRecordCount)\r\n }\r\n }, [props.phonebook])\r\n\r\n useEffect(() => {\r\n fetchData({})\r\n }, [])\r\n\r\n const fetchData = query => {\r\n const ListRequest = {\r\n PageSize,\r\n PageNumber,\r\n SelectFields: null,\r\n SortFields,\r\n Includes: null,\r\n SearchExpression: null,\r\n SearchCriterias: null,\r\n SearchQuery: null,\r\n IntersectList: null,\r\n ExceptList: null,\r\n CalculateTotalRecordCount: true,\r\n ...query\r\n }\r\n const data = { AuthData, ListRequest }\r\n dispatch(getGroups(data))\r\n }\r\n\r\n const handlePageSizeChange = (value) => {\r\n setSelection([])\r\n SetPageSize(value)\r\n SetPageNumber(0)\r\n fetchData({ PageSize: value, PageNumber: 1 })\r\n }\r\n\r\n const handlePageChange = (value) => {\r\n setSelection([])\r\n SetPageNumber(value)\r\n fetchData({ PageNumber: value + 1 })\r\n }\r\n\r\n const handleSearch = e => {\r\n const { value } = e.target\r\n setSearch(value)\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n setSelection([])\r\n fetchData({ SearchExpression: search })\r\n }\r\n\r\n // const handleSort = params => {\r\n // setSelection([])\r\n // if( params[0].columnName !== 'id'){\r\n // if(Direction === 'Ascending'){\r\n // fetchData({ SortFields : [{FieldName: params[0].columnName, Direction: \"Descending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Descending\"}])\r\n // setSorting(params)\r\n // SetDirection('Descending')\r\n // }else{\r\n // fetchData({ SortFields : [{FieldName: params[0].columnName, Direction: \"Ascending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Ascending\"}])\r\n // setSorting(params)\r\n // SetDirection('Ascending')\r\n // }\r\n // }else{\r\n // setSorting(params)\r\n // return\r\n // }\r\n // }\r\n const handleSms = () => {\r\n if (selection.length > 0) {\r\n let PbGroupList = []\r\n for (let i = 0; i < selection.length; i++) {\r\n PbGroupList = [\r\n ...PbGroupList,\r\n groupList[selection[i]].groupId\r\n ]\r\n }\r\n\r\n history.push({\r\n pathname: '/admin/sms',\r\n PbGroupList\r\n })\r\n }\r\n else {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: 'Hiçbir kayıt seçilmemiş.'\r\n })\r\n }\r\n }\r\n\r\n const handleDelete = () => {\r\n if (selection.length > 0) {\r\n let GroupIdList = []\r\n for (let i = 0; i < selection.length; i++) {\r\n GroupIdList = [\r\n ...GroupIdList,\r\n groupList[selection[i]].groupId\r\n ]\r\n }\r\n Swal.fire({\r\n title: selection.length + ' adet grup silinecek! Silmek istediğinize emin misiniz?',\r\n showDenyButton: true,\r\n // showCancelButton: true,\r\n confirmButtonText: 'Sil',\r\n denyButtonText: 'Vazgeç',\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n const data = { GroupIdList, sessionId, contextSessionId }\r\n deleteGroupList(data)\r\n .then(res => {\r\n if (checkResultResponse(res, null, (res && res.data && res.data.returnParameters && res.data.returnParameters.length > 0 ? res.data.returnParameters[0].value + ' grup silindi.' : ''), 'Seçili gruplar silinemedi.')) {\r\n setSelection([])\r\n fetchData()\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Seçili gruplar silinemedi.')\r\n })\r\n } else if (result.isDenied) {\r\n Swal.fire('Grup silinmedi.', '', 'info')\r\n }\r\n })\r\n } else {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: 'Hiçbir kayıt seçilmemiş.'\r\n })\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n YENİ GRUP EKLE \r\n \r\n \r\n SEÇİLİ GRUPLARA SMS GÖNDER \r\n \r\n \r\n SEÇİLİLERİ SİL \r\n \r\n \r\n \r\n \r\n { if (e.keyCode === 13) { handleSearchSubmit() } },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n fetchData({ SearchExpression: '' })\r\n }}>Tümü \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n {loading\r\n ? \r\n \r\n
\r\n : \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer, phonebook } = state\r\n return { userReducer, phonebook }\r\n}\r\n\r\nexport default connect(mapStateToProps)(Gruplar)","import React, { useState } from 'react'\r\nimport { uploadPhoneBookFile } from '../../_services/file.js'\r\nimport { connect } from 'react-redux'\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Paper from '@material-ui/core/Paper'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Divider from '@material-ui/core/Divider';\r\nimport NewFileDialog from 'components/PhoneBook/NewFileDialog.js'\r\nimport ImportFileDialog from 'components/PhoneBook/ImportFileDialog.js'\r\nimport ResultDialog from 'components/PhoneBook/ResultDialog.js'\r\nimport ClipBoardDialog from 'components/PhoneBook/ClipBoardDialog.js'\r\nimport Kisiler from './Kisiler'\r\nimport Gruplar from './Gruplar'\r\nimport Swal from 'sweetalert2'\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport styles from \"assets/jss/loginPage.js\";\r\nimport { checkResultResponse } from '_helpers/notification.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst TelefonRehberi = props => {\r\n const [mode, setMode] = useState('kisiler')\r\n const [fileModal, setFileModal] = useState(false)\r\n const [clipBoardModal, setClipBoardModal] = useState(false)\r\n const [Content, SetContent] = useState('')\r\n const [importModal, setImportModal] = useState(false)\r\n const [backdrop, setBackdrop] = useState(false)\r\n const [FileName, SetFileName] = useState('')\r\n const [fileSize, setFileSize] = useState('')\r\n const [clipBoardTrigger, setClipBoardTrigger] = useState(false)\r\n // const [ SortFields, SetSortFields ] = useState([\r\n // {\r\n // FieldName: \"FileName\",\r\n // Direction: \"Ascending\"\r\n // },\r\n // {\r\n // FieldName: \"InsertDate\",\r\n // Direction: \"Descending\"\r\n // }\r\n // ])\r\n // const [ sorting, setSorting ] = useState([])\r\n const [result, setResult] = useState({})\r\n const [resultModal, setResultModal] = useState(false)\r\n\r\n const { sessionId, contextSessionId, user } = props.userReducer.user\r\n const { customerInfo, userInfo } = user\r\n const { customerId } = customerInfo\r\n const { userId } = userInfo\r\n\r\n // const AuthData = { sessionId, contextSessionId }\r\n const classes = useStyles();\r\n\r\n const handleModeChange = mode => {\r\n setMode(mode)\r\n }\r\n\r\n const handleFileUploadModal = () => {\r\n setFileModal(!fileModal)\r\n }\r\n\r\n const handleClipBoardModalToggle = () => {\r\n setFileModal(false)\r\n setClipBoardModal(!clipBoardModal)\r\n }\r\n\r\n const handleImportModalToggle = () => {\r\n if (importModal) {\r\n SetFileName('')\r\n SetContent('')\r\n }\r\n setImportModal(!importModal)\r\n }\r\n\r\n const getResult = res => {\r\n setResult(res)\r\n setResultModal(true)\r\n }\r\n\r\n const handleResultModalToggle = () => {\r\n setResultModal(!resultModal)\r\n }\r\n\r\n const handleContentChange = e => {\r\n const { value } = e.target\r\n SetContent(value)\r\n }\r\n\r\n const handleClipBoardTrigger = () => {\r\n setClipBoardModal(false)\r\n setClipBoardTrigger(true)\r\n handleImportModalToggle()\r\n }\r\n\r\n const handleFileUpload = (e) => {\r\n const file = e.target.files[0]\r\n const { name } = file\r\n const extension = name.split('.').pop()\r\n const whiteList = [\r\n \"xlsx\",\r\n \"xls\",\r\n \"txt\",\r\n \"csv\",\r\n \"zip\",\r\n \"rar\",\r\n \"7z\"\r\n ]\r\n const index = whiteList.indexOf(extension)\r\n if (index > - 1) {\r\n const fd = new FormData();\r\n fd.append('File', file, name)\r\n fd.append('SessionId', sessionId)\r\n fd.append('Filename', name)\r\n fd.append('UserId', userId)\r\n fd.append('ContextSessionId', contextSessionId)\r\n fd.append('CustomerId', customerId)\r\n handleSubmitFile(fd)\r\n } else {\r\n setFileModal(false)\r\n Swal.fire({\r\n icon: \"error\",\r\n title: 'Desteklenmeyen dosya formatı.',\r\n text: 'XLSX, XLS, TXT, CSV, ZIP, RAR, 7Z uzantılarına sahip dosyaları yükleyebilirsiniz.'\r\n })\r\n }\r\n }\r\n\r\n const handleSubmitFile = fd => {\r\n setFileModal(false)\r\n setBackdrop(true)\r\n uploadPhoneBookFile(fd)\r\n .then(res => {\r\n setBackdrop(false)\r\n if (checkResultResponse(res, null, null, 'Dosya aktarılırken bir hata oluştu.')) {\r\n SetFileName(res.data.uploadedFileName)\r\n setFileSize(res.data.uploadedFileSize)\r\n handleImportModalToggle()\r\n }\r\n })\r\n .catch(err => {\r\n setBackdrop(false)\r\n alertResponseError(err, 'Dosya aktarılırken bir hata oluştu.')\r\n })\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n handleModeChange('kisiler')} simple={mode === 'kisiler' ? false : true} block>KİŞİLER \r\n \r\n \r\n handleModeChange('gruplar')} simple={mode === 'gruplar' ? false : true} block>GRUPLAR \r\n \r\n \r\n DOSYADAN AKTAR \r\n \r\n \r\n \r\n {mode === 'kisiler'\r\n ? \r\n : \r\n }\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer, notificationReducer } = state\r\n return { userReducer, notificationReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps)(TelefonRehberi)","import React from 'react'\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\nimport styles from \"assets/jss/loginPage.js\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst NewFileDialog = props => {\r\n const { fileModal, handleFileUpload, handleFileUploadModal, handleClipBoardModalToggle } = props\r\n const classes = useStyles();\r\n\r\n return(\r\n \r\n Kişi Listenizi Hangi Kaynaktan Aktaracağınızı Seçiniz \r\n \r\n \r\n \r\n \r\n BİLGİSAYARINIZDAN\r\n \r\n \r\n \r\n \r\n Panodan \r\n \r\n \r\n \r\n Dosyanızı ZIP ya da RAR formatında içerisinde sadece yükleme yapacağınız dosya olacak şekilde \r\n sıkıştırarak da yükleyebilirsiniz. Özellikle büyük boyulu dosyalarda dosyanızı sıkıştırarak \r\n yüklemeniz daha hızlı aktarılmasını sağlayacaktır.\r\n \r\n \r\n \r\n \r\n Vazgeç\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default NewFileDialog","import React, { useState, useEffect } from 'react';\r\n\r\nimport { getUploadedFileContentInfo, importUploadedFile, getClipboardContentInfo, importClipboard } from '../../_services/file.js'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Box from '@material-ui/core/Box';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Slide from '@material-ui/core/Slide';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\n\r\nimport Button from '../CustomButtons/Button.js';\r\n\r\nimport styles from \"assets/jss/material-dashboard-react/components/importFileDialog.js\"\r\nimport { checkResponse } from '_helpers/notification.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return ;\r\n});\r\n\r\nconst ImportFileDialog = (props) => {\r\n\r\n const [loading, setLoading] = useState(false)\r\n\r\n const [mode, setMode] = useState('file')\r\n\r\n const [TableName, SetTableName] = useState('')\r\n const [Delimiter, SetDelimiter] = useState('')\r\n const [CaptionRowIndex, SetCaptionRowIndex] = useState(-2)\r\n\r\n const [fileImportJob, setFileImportJob] = useState({})\r\n const [fileFields, setFileFields] = useState([])\r\n const [tableList, setTableList] = useState([])\r\n const [delimiterList, setDelimiterList] = useState([])\r\n // const [ fileUserFriendlyName, setFileUserFriendlyName ] = useState('')\r\n const [keyFieldType, setKeyFieldType] = useState('')\r\n const [sourceType, setSourceType] = useState('')\r\n const [fileType, setFileType] = useState('')\r\n const [fileOriginalName, setFileOriginalName] = useState('')\r\n const [UserFileName, SetUserFileName] = useState('')\r\n const [UserFileDescription, SetUserFileDescription] = useState('')\r\n const [selectedTableName, setSelectedTableName] = useState('')\r\n const [selectedFieldDelimiter, setSelectedFieldDelimiter] = useState('')\r\n const [alert, setAlert] = useState('')\r\n const [showAllowSamePhones, setShowAllowSamePhones] = useState(false)\r\n const [allowSamePhonesContainingDifferentMessages, setAllowSamePhonesContainingDifferentMessages] = useState(false)\r\n useEffect(() => {\r\n let bool = false\r\n fileFields.map(item => {\r\n if (item.fieldType === 4) {\r\n bool = true\r\n } else {\r\n bool = bool || false\r\n }\r\n })\r\n setShowAllowSamePhones(bool)\r\n }, [fileFields])\r\n\r\n const { open, handleToggle, sessionId, contextSessionId, FileName, getResult,\r\n Content, clipBoardTrigger\r\n } = props\r\n\r\n useEffect(() => {\r\n let data = { sessionId, contextSessionId, Delimiter, CaptionRowIndex }\r\n if (FileName !== '') {\r\n data = { ...data, FileName, TableName }\r\n getColumns(data)\r\n }\r\n if (clipBoardTrigger && Content !== '') {\r\n data = { ...data, Content }\r\n getColumns(data)\r\n }\r\n }, [FileName, Content, clipBoardTrigger, TableName, Delimiter])\r\n\r\n const getColumns = data => {\r\n if (FileName !== '') {\r\n setMode('file')\r\n setLoading(true)\r\n getUploadedFileContentInfo(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'Dosya içeriği bilgileri getirilirken hata oluştu.')) {\r\n setFileImportJob(res.data.fileImportJob)\r\n setFileFields(res.data.fileImportJob.fileFields)\r\n SetCaptionRowIndex(res.data.fileImportJob.captionRowIndex)\r\n setTableList(res.data.tableList)\r\n setDelimiterList(res.data.delimiterList)\r\n // setFileUserFriendlyName(res.data.fileImportJob.fileUserFriendlyName)\r\n setKeyFieldType(res.data.fileImportJob.keyFieldType)\r\n setSourceType(res.data.fileImportJob.sourceType)\r\n setFileType(res.data.fileImportJob.fileType)\r\n setFileOriginalName(res.data.fileImportJob.fileOriginalName)\r\n SetUserFileName(res.data.fileImportJob.fileUserFriendlyName)\r\n setSelectedTableName(res.data.fileImportJob.selectedTableName)\r\n setSelectedFieldDelimiter(res.data.fileImportJob.selectedFieldDelimiter)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Dosya içeriği bilgileri getirilirken hata oluştu.')\r\n })\r\n } else {\r\n setMode('clipboard')\r\n setLoading(true)\r\n getClipboardContentInfo(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'İçerik bilgileri getirilirken bir hata oluştu.')) {\r\n setFileImportJob(res.data.fileImportJob)\r\n setFileFields(res.data.fileImportJob.fileFields)\r\n SetCaptionRowIndex(res.data.fileImportJob.captionRowIndex)\r\n setTableList(res.data.tableList)\r\n setDelimiterList(res.data.delimiterList)\r\n // setFileUserFriendlyName(res.data.fileImportJob.fileUserFriendlyName)\r\n setKeyFieldType(res.data.fileImportJob.keyFieldType)\r\n setSourceType(res.data.fileImportJob.sourceType)\r\n setFileType(res.data.fileImportJob.fileType)\r\n setFileOriginalName(res.data.fileImportJob.fileOriginalName)\r\n SetUserFileName(res.data.fileImportJob.fileUserFriendlyName)\r\n setSelectedTableName(res.data.fileImportJob.selectedTableName)\r\n setSelectedFieldDelimiter(res.data.fileImportJob.selectedFieldDelimiter)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'İçerik bilgileri getirilirken bir hata oluştu.')\r\n })\r\n }\r\n }\r\n\r\n const classes = useStyles();\r\n\r\n const handleFirstRowCheckBox = e => {\r\n setAllowSamePhonesContainingDifferentMessages(false)\r\n const { checked } = e.target\r\n const value = checked ? 0 : -1\r\n SetCaptionRowIndex(value)\r\n let data = { sessionId, contextSessionId, Delimiter, CaptionRowIndex: value }\r\n if (FileName !== '') {\r\n data = { ...data, FileName, TableName }\r\n getColumns(data)\r\n }\r\n if (clipBoardTrigger && Content !== '') {\r\n data = { ...data, Content }\r\n getColumns(data)\r\n }\r\n }\r\n\r\n\r\n const setNewFileFileds = (item, index) => {\r\n const newFileFields = [\r\n ...fileFields.slice(0, index),\r\n item,\r\n ...fileFields.slice(index + 1)\r\n ]\r\n setFileFields(newFileFields)\r\n }\r\n\r\n const handleFieldNameChange = e => {\r\n let { value, name } = e.target\r\n name = parseInt(name)\r\n const newItem = {\r\n ...fileFields[name],\r\n fieldName: value\r\n }\r\n setNewFileFileds(newItem, name)\r\n }\r\n\r\n const handleSelectedChange = e => {\r\n let { checked, name } = e.target\r\n name = parseInt(name)\r\n const newItem = {\r\n ...fileFields[name],\r\n selected: checked\r\n }\r\n setNewFileFileds(newItem, name)\r\n }\r\n\r\n const handleColumnInfoChange = e => {\r\n let { value, name } = e.target\r\n name = parseInt(name)\r\n const newItem = {\r\n ...fileFields[name],\r\n fieldType: value\r\n }\r\n setNewFileFileds(newItem, name)\r\n setAlert('')\r\n }\r\n\r\n const fieldNameInputs = fileFileds => {\r\n return (\r\n fileFields.map((field) => {\r\n const modulus = parseInt(field.id) % 2\r\n return (\r\n \r\n \r\n \r\n )\r\n })\r\n )\r\n }\r\n\r\n const selectedCheckBoxes = fileFileds => {\r\n return (\r\n fileFields.map((field) => {\r\n const modulus = parseInt(field.id) % 2\r\n return (\r\n \r\n \r\n \r\n )\r\n })\r\n )\r\n }\r\n\r\n const columnInfoSelects = fileFileds => {\r\n return (\r\n fileFields.map((field) => {\r\n const modulus = parseInt(field.id) % 2\r\n return (\r\n \r\n \r\n \r\n Seçiniz\r\n \r\n Cep Telefonu \r\n Metin \r\n Tarih \r\n SMS Metni \r\n T.C. Kimlik No \r\n Vergi No \r\n E-posta Adresi \r\n Sayı \r\n \r\n \r\n )\r\n })\r\n )\r\n }\r\n\r\n const sampleDataInfos = fileFileds => {\r\n return (\r\n fileFields.map((field) => {\r\n const modulus = parseInt(field.id) % 2\r\n return (\r\n \r\n {field.sampleData}\r\n \r\n )\r\n })\r\n )\r\n }\r\n\r\n const handleSubmitAction = () => {\r\n const FileImportJob = {\r\n ...fileImportJob,\r\n fileFields,\r\n fileType,\r\n fileOriginalName,\r\n sourceType,\r\n selectedTableName,\r\n selectedFieldDelimiter,\r\n captionRowIndex: CaptionRowIndex,\r\n keyFieldType,\r\n allowSamePhonesContainingDifferentMessages\r\n }\r\n if (mode === 'file') {\r\n const data = {\r\n sessionId, contextSessionId, FileName, UserFileName, UserFileDescription, FileImportJob\r\n }\r\n setLoading(true)\r\n importUploadedFile(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'Dosya aktarılırken bir hata oluştu.')) {\r\n const result = {\r\n ...res.data,\r\n UserFileName,\r\n fileOriginalName\r\n }\r\n SetUserFileDescription('')\r\n getResult(result)\r\n handleToggle()\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Dosya aktarılırken hata oluştu.')\r\n })\r\n } else {\r\n const data = {\r\n sessionId, contextSessionId, Content, UserFileName, UserFileDescription, FileImportJob\r\n }\r\n setLoading(true)\r\n importClipboard(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'Dosya aktarılırken bir hata oluştu.')) {\r\n const result = {\r\n ...res.data,\r\n UserFileName,\r\n fileOriginalName\r\n }\r\n SetUserFileDescription('')\r\n getResult(result)\r\n handleToggle()\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Dosya aktarılırken bir hata oluştu.')\r\n })\r\n }\r\n }\r\n\r\n const handleSubmit = () => {\r\n const name = UserFileName.trim()\r\n if (name.length === 0) {\r\n setAlert('Lütfen \"Dosya adı\" alanına dosyanıza vermek istediğiniz bir isim giriniz.”')\r\n } else {\r\n setAlert('')\r\n let fileFieldsCheck = false\r\n let mobileCheck = false\r\n let idNoCheck = false\r\n let taxNoCheck = false\r\n let emailCheck = false\r\n let typeCheck = false\r\n let fieldNameCheck = true\r\n fileFields.forEach(field => {\r\n fileFieldsCheck = fileFieldsCheck || field.selected\r\n if (field.selected) {\r\n if (field.fieldName === '') {\r\n fieldNameCheck = false\r\n }\r\n if (field.fieldType === 2) {\r\n mobileCheck = mobileCheck || true\r\n }\r\n if (field.fieldType === 5) {\r\n idNoCheck = idNoCheck || true\r\n }\r\n if (field.fieldType === 6) {\r\n emailCheck = emailCheck || true\r\n }\r\n if (field.fieldType === 16) {\r\n taxNoCheck = taxNoCheck || true\r\n }\r\n }\r\n })\r\n if (!fileFieldsCheck) {\r\n setAlert('Lütfen dosyanızdaki aktarmak istediğiniz tüm sütunlar için aktarımın yapılacağı bir telefon rehberi alanını seçiniz. Örneğin dosyanızda cep telefonu numaraları hangi sütundaysa o sütuna ait \"Alan içeriği\" değerini \"Cep Telefonu\" olarak seçiniz.')\r\n } else {\r\n typeCheck = mobileCheck || idNoCheck || taxNoCheck || emailCheck\r\n if (!typeCheck) {\r\n setAlert('Lütfen dosyanızdan en az bir cep telefonu, T.C. kimlik no, Vergi no ya da e-posta adresi alanı seçiniz. Örneğin dosyanızda cep telefonu numaraları hangi sütundaysa o sütuna ait \"Alan içeriği\" değerini \"Cep Telefonu\" olarak seçiniz.')\r\n } else if (!fieldNameCheck) {\r\n setAlert('Lütfen aktarılan sütunların alan adlarının boş olmadığından emin olunuz.')\r\n } else {\r\n handleSubmitAction()\r\n }\r\n }\r\n }\r\n }\r\n\r\n const tableListOptions = list => {\r\n return (\r\n list.map((l, i) => {\r\n return (\r\n {l} \r\n )\r\n })\r\n )\r\n }\r\n\r\n const delimiterListOptions = list => {\r\n return (\r\n list.map((l, i) => {\r\n return (\r\n {l.label} \r\n )\r\n })\r\n )\r\n }\r\n\r\n const handleSelectTableName = e => {\r\n const { value } = e.target\r\n setSelectedTableName(value)\r\n SetTableName(value)\r\n }\r\n\r\n const handleSelectDelimiterName = e => {\r\n const { value } = e.target\r\n setSelectedFieldDelimiter(value)\r\n SetDelimiter(value)\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Dosyadan Aktarım\r\n \r\n \r\n Geri\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {alert !== '' &&\r\n \r\n }\r\n \r\n \r\n {loading\r\n ? \r\n : \r\n \r\n \r\n \r\n \r\n Aktarılan dosyanın adı :\r\n \r\n \r\n {fileOriginalName}\r\n \r\n \r\n \r\n {(tableList && tableList.length > 0)\r\n ? <>\r\n \r\n Aktarılan Sayfa :\r\n \r\n \r\n \r\n {tableListOptions(tableList)}\r\n \r\n \r\n >\r\n : <>\r\n \r\n Kullanılan alan ayıracı :\r\n \r\n \r\n \r\n {delimiterListOptions(delimiterList)}\r\n \r\n \r\n >\r\n }\r\n \r\n \r\n \r\n Listenin ilk satırı başlıktır\r\n \r\n \r\n \r\n \r\n \r\n {showAllowSamePhones &&\r\n \r\n \r\n Aynı numaraya birden fazla farklı içerikten mesaj gönderimine izin ver\r\n \r\n \r\n setAllowSamePhonesContainingDifferentMessages(!allowSamePhonesContainingDifferentMessages)}\r\n color=\"primary\"\r\n inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n />\r\n \r\n \r\n }\r\n \r\n
\r\n \r\n }\r\n \r\n \r\n {loading\r\n ? \r\n : \r\n \r\n \r\n \r\n \r\n Alan adı\r\n \r\n {fieldNameInputs(fileFields)}\r\n \r\n \r\n \r\n Sütun aktarılsın mı?\r\n \r\n {selectedCheckBoxes(fileFields)}\r\n \r\n \r\n \r\n Sütun ne tür bilgi içeriyor?\r\n \r\n {columnInfoSelects(fileFields)}\r\n \r\n \r\n \r\n Örnek değer\r\n \r\n {sampleDataInfos(fileFields)}\r\n \r\n \r\n
\r\n \r\n }\r\n \r\n \r\n {loading\r\n ? \r\n : \r\n \r\n \r\n \r\n \r\n Dosya adı :\r\n \r\n \r\n SetUserFileName(e.target.value)} variant=\"outlined\" />\r\n \r\n \r\n \r\n \r\n Dosya açıklaması :\r\n \r\n \r\n SetUserFileDescription(e.target.value)} variant=\"outlined\" />\r\n \r\n \r\n \r\n
\r\n \r\n }\r\n {!loading && KONTROL ETTİM, AKTARIMI BAŞLAT }\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default ImportFileDialog","import React from 'react'\r\nimport { useHistory } from 'react-router-dom'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport Box from '@material-ui/core/Box';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport { FileFields } from 'variables/fileFields';\r\nimport { FileImportResult } from 'variables/fileImportResult';\r\nimport { UserRightVisibility } from 'variables/userRightVisibility';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n link: {\r\n textAlign: \"center\"\r\n },\r\n bold: {\r\n fontSize: \"bold\"\r\n },\r\n success: {\r\n color: \"green\"\r\n },\r\n danger: {\r\n color: \"red\"\r\n }\r\n}));\r\n\r\nconst ResultDialog = props => {\r\n const history = useHistory();\r\n const { open, handleToggle, result, fileSize, user } = props\r\n const classes = useStyles();\r\n\r\n const bytesToKilBytes = (bytes, digits) => digits ? (bytes / (1024)).toFixed(digits) : (bytes / (1024 * 1024));\r\n\r\n const sendSMS = () => {\r\n var defaultKeyFieldType = FileFields.ID_FIELDTYPE_MOBILEPHONE;\r\n if (result && result.statusSummaryValues) {\r\n var savedMobileNumberCount = Number(FileImportResult.getValue(FileImportResult.KEY_SAVEDMOBILENUMBERCOUNT, result.statusSummaryValues))\r\n var savedIdentityNumberCount = Number(FileImportResult.getValue(FileImportResult.KEY_SAVEDIDENTITYNUMBERCOUNT, result.statusSummaryValues))\r\n var savedTaxNumberCount = Number(FileImportResult.getValue(FileImportResult.KEY_SAVEDTAXNUMBERCOUNT, result.statusSummaryValues))\r\n\r\n if (savedMobileNumberCount == 0\r\n && savedIdentityNumberCount > 0) {\r\n defaultKeyFieldType = FileFields.ID_FIELDTYPE_IDENTITYNUMBER;\r\n }\r\n else if (savedMobileNumberCount == 0\r\n && savedIdentityNumberCount == 0\r\n && savedTaxNumberCount > 0) {\r\n defaultKeyFieldType = FileFields.ID_FIELDTYPE_TAXNUMBER;\r\n }\r\n }\r\n\r\n history.push({\r\n pathname: '/admin/sms',\r\n SavedFileIdList: [result.savedFileId],\r\n defaultKeyFieldType,\r\n isRedirectedFromSavedFiles: true\r\n })\r\n }\r\n\r\n const sendMMS = () => {\r\n var defaultKeyFieldType = FileFields.ID_FIELDTYPE_MOBILEPHONE;\r\n\r\n history.push({\r\n pathname: '/admin/mms',\r\n SavedFileIdList: [result.savedFileId],\r\n defaultKeyFieldType,\r\n isRedirectedFromSavedFiles: true\r\n })\r\n }\r\n\r\n const sendEmail = () => {\r\n var defaultKeyFieldType = 6;\r\n\r\n history.push({\r\n pathname: '/admin/e-posta',\r\n SavedFileIdList: [result.savedFileId],\r\n defaultKeyFieldType,\r\n isRedirectedFromSavedFiles: true\r\n })\r\n }\r\n\r\n if (result.statusSummaryValues) {\r\n return (\r\n \r\n Dosya Aktarımı Tamamlandı \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Orjinal dosya adı\r\n \r\n \r\n {result.fileOriginalName}\r\n \r\n \r\n \r\n \r\n Dosya adı\r\n \r\n \r\n {result.UserFileName}\r\n \r\n \r\n \r\n \r\n Dosya boyutu\r\n \r\n \r\n {bytesToKilBytes(fileSize, 2)}KB\r\n \r\n \r\n \r\n \r\n Toplam Kayıt \r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_TOTALRECORDCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n Geçerli Kayıt \r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_VALIDRECORDS, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n Geçersiz Kayıt \r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_INVALIDRECORDS, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n Aktarılan toplam cep telefonu adedi\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_SAVEDMOBILENUMBERCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n \r\n \r\n Aktarılan toplam kimlik numarası adedi\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_SAVEDIDENTITYNUMBERCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n \r\n \r\n Aktarılan toplam vergi numarası adedi\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_SAVEDTAXNUMBERCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n \r\n \r\n Aktarılan toplam e-posta adresi adedi\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_SAVEDEMAILADDRESSCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n {Number(FileImportResult.getValue(FileImportResult.KEY_MOBILEPHONEFORMATERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n Cep tel. format hatası\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_MOBILEPHONEFORMATERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n {Number(FileImportResult.getValue(FileImportResult.KEY_MOBILEPHONEDUPLICATEERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n Cep tel. mükerrer hatası\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_MOBILEPHONEDUPLICATEERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n {Number(FileImportResult.getValue(FileImportResult.KEY_IDENTITYNUMBERISINVALIDERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n Kimlik numarası format hatası\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_IDENTITYNUMBERISINVALIDERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n {Number(FileImportResult.getValue(FileImportResult.KEY_IDENTITYNUMBERISINVALIDERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n Kimlik numarası mükerrer hatası\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_IDENTITYNUMBERISDUPLICATEDERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n {Number(FileImportResult.getValue(FileImportResult.KEY_TAXNUMBERISINVALIDERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n Vergi numarası format hatası\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_TAXNUMBERISINVALIDERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n {Number(FileImportResult.getValue(FileImportResult.KEY_TAXNUMBERISDUPLICATEDERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n Vergi numarası mükerrer hatası\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_TAXNUMBERISDUPLICATEDERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n {Number(FileImportResult.getValue(FileImportResult.KEY_EMAILADDRESSISINVALIDERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n E-posta adresi format hatası\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_EMAILADDRESSISINVALIDERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n {Number(FileImportResult.getValue(FileImportResult.KEY_EMAILADDRESSISDUPLICATEDERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n E-posta adresi mükerrer hatası\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_EMAILADDRESSISDUPLICATEDERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n {Number(FileImportResult.getValue(FileImportResult.KEY_OTHERERRORCOUNT, result.statusSummaryValues)) > 0 &&\r\n \r\n \r\n Diğer hatalar\r\n \r\n \r\n {(Number(FileImportResult.getValue(FileImportResult.KEY_OTHERERRORCOUNT, result.statusSummaryValues)) || '0').toLocaleString(\"tr-TR\")}\r\n \r\n \r\n }\r\n \r\n
\r\n \r\n \r\n \r\n {result.importDataNoticeListFilePath &&\r\n \r\n \r\n Aktarım Hata ve Uyarıları Listesini İndirmek İçin Tıklayınız\r\n \r\n \r\n }\r\n \r\n \r\n {user.userRights.serviceRight_SMS === UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE && (\r\n Number(FileImportResult.getValue(FileImportResult.KEY_SAVEDMOBILENUMBERCOUNT, result.statusSummaryValues)) > 0 ||\r\n Number(FileImportResult.getValue(FileImportResult.KEY_SAVEDIDENTITYNUMBERCOUNT, result.statusSummaryValues)) > 0 ||\r\n Number(FileImportResult.getValue(FileImportResult.KEY_SAVEDTAXNUMBERCOUNT, result.statusSummaryValues)) > 0\r\n ) &&\r\n \r\n Bu Dosyaya SMS GÖNDER\r\n \r\n }\r\n {user.userRights.serviceRight_MMS === UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE && (\r\n Number(FileImportResult.getValue(FileImportResult.KEY_SAVEDMOBILENUMBERCOUNT, result.statusSummaryValues)) > 0\r\n ) &&\r\n \r\n Bu Dosyaya MMS GÖNDER\r\n \r\n }\r\n {user.userRights.serviceRight_Email === UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE && (\r\n Number(FileImportResult.getValue(FileImportResult.KEY_SAVEDEMAILADDRESSCOUNT, result.statusSummaryValues)) > 0\r\n ) &&\r\n \r\n Bu Dosyaya E-posta GÖNDER\r\n \r\n }\r\n \r\n Kapat\r\n \r\n \r\n \r\n )\r\n } else {\r\n return (\r\n <>>\r\n )\r\n }\r\n}\r\n\r\nexport default ResultDialog","import React from 'react'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport TextField from '@material-ui/core/TextField';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\r\n}));\r\n\r\nconst ClipBoardDialog = props => {\r\n\r\n const { open, handleToggle, Content, handleContentChange, handleClipBoardTrigger } = props\r\n const classes = useStyles();\r\n\r\n return(\r\n \r\n Panodan Ekle \r\n \r\n \r\n \r\n Aşağıdaki alana sağ tıklayıp 'Yapıştır' seçerek ya da Ctrl+V tuşlarına basarak listenizi yapıştırabilirsiniz.\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Devam Et\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default ClipBoardDialog","import React, { useState, useEffect } from 'react';\r\n\r\nimport { savedFilesBulkOperation, getSavedFiles } from '../../_services/file.js'\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Box from '@material-ui/core/Box';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Slide from '@material-ui/core/Slide';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport AddAlert from \"@material-ui/icons/AddAlert\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\n\r\nimport Button from '../CustomButtons/Button.js';\r\n\r\nimport styles from \"assets/jss/material-dashboard-react/components/importFileDialog.js\"\r\n\r\n\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport MuiAlert from '@material-ui/lab/Alert';\r\nimport { checkResponse } from '_helpers/notification.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return ;\r\n});\r\n\r\nfunction Alert(props) {\r\n return ;\r\n}\r\n\r\nconst SavedFilesBulkDialog = (props) => {\r\n const [fileList, setFileList] = useState([])\r\n const [loading, setLoading] = useState(false)\r\n const [count, setCount] = useState(1)\r\n const [SortFields, SetSortFields] = useState([\r\n {\r\n FieldName: \"FileName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Descending\"\r\n }\r\n ])\r\n const [DeleteContent, SetDeleteContent] = useState('')\r\n const [InsertContent, SetInsertContent] = useState('')\r\n const [SavedFileIds, SetSavedFileIds] = useState([])\r\n const [openSB, setOpenSB] = React.useState(false);\r\n const [message, setMessage] = useState('')\r\n const [filter, setFilter] = useState('')\r\n const { open, handleToggle, sessionId, contextSessionId } = props\r\n\r\n const classes = useStyles()\r\n\r\n const handleClose = (event, reason) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n\r\n setOpenSB(false);\r\n };\r\n\r\n useEffect(() => {\r\n if (open) {\r\n fetchData({})\r\n }\r\n }, [open])\r\n\r\n const fetchData = (query) => {\r\n const ListRequest = {\r\n PageSize: 0,\r\n PageNumber: 1,\r\n SelectFields: null,\r\n SortFields,\r\n Includes: null,\r\n SearchExpression: null,\r\n SearchCriterias: null,\r\n SearchQuery: null,\r\n IntersectList: null,\r\n ExceptList: null,\r\n CalculateTotalRecordCount: true,\r\n ...query\r\n }\r\n const data = { AuthData: { sessionId, contextSessionId }, ListRequest }\r\n setLoading(true)\r\n getSavedFiles(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'Kayıtlı dosyalar listesi getirilemedi.')) {\r\n let totalRecordCount = res.data.totalRecordCount\r\n setFileList(res.data.list)\r\n setCount(totalRecordCount)\r\n }\r\n })\r\n .catch(\r\n err => {\r\n alertResponseError(err, 'Kayıtlı dosyalar listesi getirilemedi.')\r\n }\r\n )\r\n }\r\n\r\n const handleCheck = (id) => {\r\n const index = SavedFileIds.indexOf(id)\r\n let newFileIds = []\r\n if (index > -1) {\r\n newFileIds = [\r\n ...SavedFileIds.slice(0, index),\r\n ...SavedFileIds.slice(index + 1),\r\n ]\r\n } else {\r\n newFileIds = [\r\n ...SavedFileIds,\r\n id,\r\n ]\r\n }\r\n SetSavedFileIds(newFileIds)\r\n }\r\n\r\n const handleSubmit = () => {\r\n if (SavedFileIds.length === 0) {\r\n setOpenSB(true)\r\n setMessage('Hiçbir dosya seçmediniz.')\r\n } else {\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n SavedFileIds,\r\n DeleteContent,\r\n InsertContent\r\n }\r\n savedFilesBulkOperation(data)\r\n .then(res => {\r\n if (checkResponse(res, null, null, 'Dosya işleminiz gerçekleştirilemedi.')) {\r\n setOpenSB(true)\r\n setMessage(`Silinen kayıt : ${(res.data.deletedRecordCount || '0').toLocaleString(\"tr-TR\")}, Eklenen kayıt : ${(res.data.insertedRecordCount || '0').toLocaleString(\"tr-TR\")}`)\r\n SetSavedFileIds([])\r\n SetDeleteContent('')\r\n SetInsertContent('')\r\n }\r\n else {\r\n setOpenSB(true)\r\n setMessage('İşleminiz gerçekleştirilemedi.')\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Dosya işleminiz gerçekleştirilemedi.')\r\n })\r\n }\r\n }\r\n\r\n const filteredFileList = fileList.filter(item => item.fileName.toLowerCase().includes(filter.toLowerCase()))\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n KAYITLI DOSYALAR TOPLU İŞLEM\r\n \r\n \r\n GERİ\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Üzerinde işlem yapılmasını istediğiniz kayıtlı dosyaları seçiniz.\r\n \r\n setFilter(e.target.value)}\r\n fullWidth\r\n />\r\n \r\n \r\n {filteredFileList.map(item => {\r\n return (\r\n \r\n \r\n -1}\r\n onChange={() => handleCheck(item.fileId)}\r\n inputProps={{ 'aria-label': 'primary checkbox' }}\r\n />\r\n \r\n \r\n {item.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 Silmek istediğiniz telefon numaralarını her satırda bir numara olacak şekilde giriniz.\r\n SetDeleteContent(e.target.value)}\r\n fullWidth\r\n />\r\n \r\n \r\n Eklemek istediğiniz telefon numaralarını her satırda bir numara olacak şekilde giriniz.\r\n SetInsertContent(e.target.value)}\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n EKLE VE SİL\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {message}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default SavedFilesBulkDialog","import React, { useState, useEffect } from 'react';\r\nimport { connect } from 'react-redux'\r\nimport { getSavedFiles, uploadFile, deleteSavedFiles, getFileAsExcel } from '../../_services/file.js'\r\nimport { useHistory } from 'react-router-dom'\r\nimport { FileFields } from 'variables/fileFields'\r\n\r\nimport {\r\n SortingState,\r\n PagingState,\r\n CustomPaging,\r\n SelectionState,\r\n IntegratedSelection\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableSelection,\r\n TableColumnResizing\r\n} from '@devexpress/dx-react-grid-material-ui';\r\n\r\n\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Paper from '@material-ui/core/Paper'\r\nimport Backdrop from '@material-ui/core/Backdrop';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Tooltip from '@material-ui/core/Tooltip'\r\nimport IconButton from '@material-ui/core/IconButton'\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy'\r\n\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport NewFileDialog from 'components/ImportFile/NewFileDialog.js'\r\nimport ImportFileDialog from 'components/ImportFile/ImportFileDialog.js'\r\nimport ResultDialog from 'components/ImportFile/ResultDialog.js'\r\nimport ClipBoardDialog from 'components/ImportFile/ClipBoardDialog.js'\r\nimport SavedFilesBulkDialog from 'components/ImportFile/SavedFilesBulkDialog.js'\r\n\r\nimport Swal from 'sweetalert2'\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport styles from \"assets/jss/loginPage.js\";\r\nimport { alertResponseError } from '_helpers/notification.js';\r\nimport { alertResponse } from '_helpers/notification.js';\r\nimport { alertResultResponse } from '_helpers/notification.js';\r\nimport { alertErrorText } from '_helpers/notification.js';\r\nimport { checkResponse } from '_helpers/notification.js';\r\nimport { checkResultResponse } from '_helpers/notification.js';\r\nimport { UserRightVisibility } from 'variables/userRightVisibility.js';\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\n\r\nconst KayitliDosyalar = (props) => {\r\n const history = useHistory();\r\n const [loading, setLoading] = useState(false)\r\n const [fileModal, setFileModal] = useState(false)\r\n const [PageSize, SetPageSize] = useState(10)\r\n const [PageNumber, SetPageNumber] = useState(0)\r\n const [fileList, setFileList] = useState([])\r\n const [count, setCount] = useState(1)\r\n const [importModal, setImportModal] = useState(false)\r\n const [backdrop, setBackdrop] = useState(false)\r\n const [FileName, SetFileName] = useState('')\r\n const [fileSize, setFileSize] = useState('')\r\n const [clipBoardTrigger, setClipBoardTrigger] = useState(false)\r\n const [SortFields, SetSortFields] = useState([\r\n {\r\n FieldName: \"FileName\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Descending\"\r\n }\r\n ])\r\n const [sorting, setSorting] = useState([])\r\n const [result, setResult] = useState({})\r\n const [resultModal, setResultModal] = useState(false)\r\n\r\n const [clipBoardModal, setClipBoardModal] = useState(false)\r\n const [Content, SetContent] = useState('')\r\n\r\n const [Direction, SetDirection] = useState('')\r\n const [selection, setSelection] = useState([])\r\n\r\n const [search, setSearch] = useState('')\r\n\r\n const [savedFilesBulkDialog, setSavedFilesBulkDialog] = useState(false)\r\n\r\n const classes = useStyles();\r\n const { sessionId, contextSessionId, user } = props.userReducer.user\r\n const { customerInfo, userInfo } = user\r\n const { customerId } = customerInfo\r\n const { userId } = userInfo\r\n\r\n useEffect(() => {\r\n fetchData({})\r\n }, [])\r\n const AuthData = { sessionId, contextSessionId }\r\n\r\n const fetchData = (query) => {\r\n const ListRequest = {\r\n PageSize: PageSize,\r\n PageNumber: PageNumber,\r\n SelectFields: null,\r\n SortFields,\r\n Includes: null,\r\n SearchExpression: search,\r\n SearchCriterias: null,\r\n SearchQuery: null,\r\n IntersectList: null,\r\n ExceptList: null,\r\n CalculateTotalRecordCount: true,\r\n ...query\r\n }\r\n const data = { AuthData, ListRequest }\r\n setLoading(true)\r\n getSavedFiles(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, null, null, 'Kayıtlı dosyalar listesi getirilemedi.')) {\r\n let totalRecordCount = res.data.totalRecordCount\r\n setFileList(res.data.list)\r\n setCount(totalRecordCount)\r\n }\r\n })\r\n .catch(\r\n err => {\r\n alertResponseError(err, 'Kayıtlı dosyalar listesi getirilemedi.')\r\n }\r\n )\r\n }\r\n\r\n const handleSavedFilesBulkDialogToggle = () => {\r\n setSavedFilesBulkDialog(!savedFilesBulkDialog)\r\n }\r\n\r\n const columns = [\r\n { name: 'fileName', title: 'Kayıtlı Dosya Adı' },\r\n { name: 'action', title: 'İşlem' },\r\n { name: 'recordCount', title: 'Kayıt Sayısı' },\r\n { name: 'recordCountMobileNumber', title: 'Cep No Sayısı' },\r\n { name: 'recordCountIdentityNumber', title: 'Kimlik No Sayısı' },\r\n { name: 'recordCountTaxNumber', title: 'Vergi No Sayısı' },\r\n { name: 'recordCountEmailAddress', title: 'E-posta Sayısı' },\r\n { name: 'InsertDate', title: 'Eklenme Tarihi' },\r\n ];\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: 'fileName', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'action', width: 55, align: 'center' },\r\n { columnName: 'recordCount', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'recordCountMobileNumber', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'recordCountIdentityNumber', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'recordCountTaxNumber', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'recordCountEmailAddress', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'InsertDate', width: 'auto', align: 'right', wordWrapEnabled: true }\r\n ]);\r\n\r\n const handlePageSizeChange = (value) => {\r\n setSelection([])\r\n SetPageSize(value)\r\n SetPageNumber(0)\r\n fetchData({ PageSize: value, PageNumber: 1 })\r\n }\r\n\r\n const handlePageChange = (value) => {\r\n setSelection([])\r\n SetPageNumber(value)\r\n fetchData({ PageNumber: value + 1 })\r\n }\r\n\r\n const handleSearch = e => {\r\n const { value } = e.target\r\n setSearch(value)\r\n }\r\n\r\n const handleSearchSubmit = () => {\r\n setSelection([])\r\n fetchData({ SearchExpression: search })\r\n }\r\n\r\n const handleSort = params => {\r\n setSelection([])\r\n if (params[0].columnName !== 'id') {\r\n if (Direction === 'Ascending') {\r\n fetchData({ SortFields: [{ FieldName: params[0].columnName, Direction: \"Descending\" }] })\r\n SetSortFields([{ FieldName: params[0].columnName, Direction: \"Descending\" }])\r\n setSorting(params)\r\n SetDirection('Descending')\r\n } else {\r\n fetchData({ SortFields: [{ FieldName: params[0].columnName, Direction: \"Ascending\" }] })\r\n SetSortFields([{ FieldName: params[0].columnName, Direction: \"Ascending\" }])\r\n setSorting(params)\r\n SetDirection('Ascending')\r\n }\r\n } else {\r\n setSorting(params)\r\n return\r\n }\r\n }\r\n\r\n const handleFileUploadModal = () => {\r\n setSelection([])\r\n setFileModal(!fileModal)\r\n }\r\n\r\n const handleSubmitFile = fd => {\r\n setBackdrop(true)\r\n setFileModal(false)\r\n uploadFile(fd)\r\n .then(res => {\r\n setBackdrop(false)\r\n if (checkResultResponse(res, null, null, 'Dosya aktarılırken bir hata oluştu.')) {\r\n SetFileName(res.data.uploadedFileName)\r\n setFileSize(res.data.uploadedFileSize)\r\n handleImportModalToggle()\r\n }\r\n })\r\n .catch(err => {\r\n setBackdrop(false)\r\n alertResponseError(err, 'Dosya aktarılırken bir hata oluştu.')\r\n })\r\n }\r\n\r\n const handleFileUpload = (e) => {\r\n const file = e.target.files[0]\r\n const { name } = file\r\n const extension = name.split('.').pop()\r\n const whiteList = [\r\n \"xlsx\",\r\n \"xls\",\r\n \"txt\",\r\n \"csv\",\r\n \"zip\",\r\n \"rar\",\r\n \"7z\"\r\n ]\r\n const index = whiteList.indexOf(extension)\r\n if (index > - 1) {\r\n const fd = new FormData();\r\n fd.append('File', file, name)\r\n fd.append('SessionId', sessionId)\r\n fd.append('Filename', name)\r\n fd.append('UserId', userId)\r\n fd.append('ContextSessionId', contextSessionId)\r\n fd.append('CustomerId', customerId)\r\n handleSubmitFile(fd)\r\n } else {\r\n setFileModal(false)\r\n Swal.fire({\r\n icon: \"error\",\r\n title: 'Desteklenmeyen dosya formatı.',\r\n text: 'XLSX, XLS, TXT, CSV, ZIP, RAR, 7Z uzantılarına sahip dosyaları yükleyebilirsiniz.'\r\n })\r\n }\r\n }\r\n\r\n const handleImportModalToggle = () => {\r\n if (importModal) {\r\n SetFileName('')\r\n SetContent('')\r\n }\r\n setImportModal(!importModal)\r\n fetchData({})\r\n }\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return {\r\n // id : l.fileId,\r\n fileName: l.fileName,\r\n recordCount: (l.recordCount || 0).toLocaleString(\"tr-TR\"),\r\n recordCountEmailAddress: (l.recordCountEmailAddress || 0).toLocaleString(\"tr-TR\"),\r\n recordCountIdentityNumber: (l.recordCountIdentityNumber || 0).toLocaleString(\"tr-TR\"),\r\n recordCountMobileNumber: (l.recordCountMobileNumber || 0).toLocaleString(\"tr-TR\"),\r\n recordCountTaxNumber: (l.recordCountTaxNumber || 0).toLocaleString(\"tr-TR\"),\r\n InsertDate: moment(l.insertDate).format('DD.MM.YYYY HH:mm:ss'),\r\n action: \r\n handleExcelExport(l.fileId)} >\r\n \r\n \r\n \r\n }\r\n })\r\n )\r\n }\r\n\r\n const getResult = res => {\r\n setResult(res)\r\n setResultModal(true)\r\n }\r\n\r\n const handleResultModalToggle = () => {\r\n setResultModal(!resultModal)\r\n }\r\n\r\n const handleClipBoardModalToggle = () => {\r\n setFileModal(false)\r\n setClipBoardModal(!clipBoardModal)\r\n }\r\n\r\n const handleContentChange = e => {\r\n const { value } = e.target\r\n SetContent(value)\r\n }\r\n\r\n const handleClipBoardTrigger = () => {\r\n setClipBoardModal(false)\r\n setClipBoardTrigger(true)\r\n handleImportModalToggle()\r\n }\r\n\r\n const handleSms = () => {\r\n let mobileNumber = 0\r\n let idNumber = 0\r\n let taxNumber = 0\r\n\r\n if (selection.length > 0) {\r\n let SavedFileIdList = []\r\n for (let i = 0; i < selection.length; i++) {\r\n mobileNumber += fileList[selection[i]].recordCountMobileNumber\r\n idNumber += fileList[selection[i]].recordCountIdentityNumber\r\n taxNumber += fileList[selection[i]].recordCountTaxNumber\r\n SavedFileIdList = [\r\n ...SavedFileIdList,\r\n fileList[selection[i]].fileId\r\n ]\r\n }\r\n\r\n var defaultKeyFieldType = FileFields.ID_FIELDTYPE_MOBILEPHONE;\r\n if (SavedFileIdList.length == 1) {\r\n if (fileList[selection[0]].recordCountMobileNumber == 0\r\n && fileList[selection[0]].recordCountIdentityNumber > 0) {\r\n defaultKeyFieldType = FileFields.ID_FIELDTYPE_IDENTITYNUMBER;\r\n }\r\n else if (fileList[selection[0]].recordCountMobileNumber == 0\r\n && fileList[selection[0]].recordCountIdentityNumber == 0\r\n && fileList[selection[0]].recordCountTaxNumber > 0) {\r\n defaultKeyFieldType = FileFields.ID_FIELDTYPE_TAXNUMBER;\r\n }\r\n }\r\n if( (mobileNumber + idNumber + taxNumber ) > 0 ){\r\n history.push({\r\n pathname: '/admin/sms',\r\n SavedFileIdList,\r\n defaultKeyFieldType,\r\n isRedirectedFromSavedFiles: true\r\n })\r\n }else{\r\n Swal.fire({\r\n icon : \"warning\",\r\n title : \"Seçimleriniz içerisinde SMS gönderimi yapılabilecek numara içeren bir dosya bulunamadı.\"\r\n })\r\n }\r\n\r\n }\r\n else {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: 'Hiçbir kayıt seçilmemiş.'\r\n })\r\n }\r\n }\r\n\r\n const handleEmail = () => {\r\n let emailNumber = 0\r\n if (selection.length > 0) {\r\n let SavedFileIdList = []\r\n for (let i = 0; i < selection.length; i++) {\r\n emailNumber += fileList[selection[i]].recordCountEmailAddress\r\n SavedFileIdList = [\r\n ...SavedFileIdList,\r\n fileList[selection[i]].fileId\r\n ]\r\n }\r\n if(emailNumber > 0){\r\n history.push({\r\n pathname: '/admin/e-posta',\r\n SavedFileIdList,\r\n defaultKeyFieldType: 6\r\n })\r\n }else{\r\n Swal.fire({\r\n icon : \"warning\",\r\n title : \"Seçimleriniz içerisinde e-posta gönderimi yapılabilecek numara içeren bir dosya bulunamadı.\"\r\n })\r\n }\r\n\r\n }\r\n else {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: 'Hiçbir kayıt seçilmemiş.'\r\n })\r\n }\r\n }\r\n\r\n const handleMMS = () => {\r\n let mobileNumber = 0\r\n if (selection.length > 0) {\r\n let SavedFileIdList = []\r\n for (let i = 0; i < selection.length; i++) {\r\n mobileNumber += fileList[selection[i]].recordCountMobileNumber\r\n SavedFileIdList = [\r\n ...SavedFileIdList,\r\n fileList[selection[i]].fileId\r\n ]\r\n }\r\n if(mobileNumber > 0){\r\n history.push({\r\n pathname: '/admin/mms',\r\n SavedFileIdList,\r\n defaultKeyFieldType: 2\r\n })\r\n }else{\r\n Swal.fire({\r\n icon : \"warning\",\r\n title : \"Seçimleriniz içerisinde MMS gönderimi yapılabilecek numara içeren bir dosya bulunamadı.\"\r\n })\r\n }\r\n\r\n }\r\n else {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: 'Hiçbir kayıt seçilmemiş.'\r\n })\r\n }\r\n }\r\n\r\n const handleDeleteSubmit = () => {\r\n if (selection.length > 0) {\r\n let FilesToDelete = []\r\n for (let i = 0; i < selection.length; i++) {\r\n FilesToDelete = [\r\n ...FilesToDelete,\r\n fileList[selection[i]].fileId\r\n ]\r\n }\r\n Swal.fire({\r\n title: selection.length + ' adet dosya silinecek. Silmek istediğinize emin misiniz?',\r\n showDenyButton: true,\r\n // showCancelButton: true,\r\n confirmButtonText: 'Sil',\r\n denyButtonText: 'Vazgeç',\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n const data = { FilesToDelete, sessionId, contextSessionId }\r\n deleteSavedFiles(data)\r\n .then(res => {\r\n setSelection([])\r\n fetchData()\r\n if (checkResponse(res, null, (res && res.data && res.data.returnParameters && res.data.returnParameters.length > 0 ? res.data.returnParameters[0].value + ' dosya silindi.' : 'Dosya silindi.'), 'Seçili dosya(lar) silinemedi.')) {\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Seçili dosya(lar) silinemedi.')\r\n })\r\n } else if (result.isDenied) {\r\n Swal.fire('Dosya silinmedi.', '', 'info')\r\n }\r\n })\r\n } else {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: 'Hiçbir dosya seçilmemiş.'\r\n })\r\n }\r\n }\r\n\r\n const handleExcelExport = (id) => {\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n userId,\r\n fileId: id,\r\n customerId,\r\n SearchExpression: ''\r\n }\r\n setLoading(true)\r\n getFileAsExcel(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (res && res.data) {\r\n if (res.data.fileDownloadUrl) {\r\n const link = document.createElement('a');\r\n link.href = res.data.fileDownloadUrl\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n else {\r\n alertErrorText('Kayıtlı dosya içeriği dosyaya aktarılamadı. İndirme URL\\'i alınamadı.')\r\n }\r\n }\r\n else {\r\n alertErrorText('Kayıtlı dosya içeriği dosyaya aktarılamadı. Yanıt alınamadı.')\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Kayıtlı dosya içeriği dosyaya aktarılamadı.')\r\n })\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n YENİ DOSYA \r\n \r\n {user.userRights.serviceRight_SMS === UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE &&\r\n \r\n SEÇİLİ DOSYALARA SMS GÖNDER \r\n \r\n }\r\n {user.userRights.serviceRight_Email === UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE &&\r\n \r\n SEÇİLİ DOSYALARA E-POSTA GÖNDER \r\n \r\n }\r\n {user.userRights.serviceRight_MMS === UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE &&\r\n \r\n SEÇİLİ DOSYALARA MMS GÖNDER \r\n \r\n }\r\n \r\n SEÇİLENLERİ SİL \r\n \r\n \r\n \r\n \r\n \r\n TOPLU İŞLEM\r\n \r\n \r\n \r\n\r\n \r\n \r\n { if (e.keyCode === 13) { handleSearchSubmit() } },\r\n endAdornment: (\r\n <>\r\n Ara \r\n {\r\n setSearch('')\r\n fetchData({ SearchExpression: '' })\r\n }}>Tümü \r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n \r\n {!backdrop &&\r\n loading\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 return(\r\n \r\n \r\n \r\n Ara \r\n { props.children }\r\n >\r\n )\r\n }}\r\n />\r\n \r\n \r\n )}}\r\n /> */}\r\n {/* */}\r\n \r\n }\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer, notificationReducer } = state\r\n return { userReducer, notificationReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps)(KayitliDosyalar)","import React, { useState, useEffect } from 'react';\r\nimport {\r\n getSmsDeliveryReportDetailErrorCodeList,\r\n getSmsDetailedDeliveryReport, getSmsSummaryDeliveryReport,\r\n getSmsDeliveryReportErrorSummary, getDetailedDeliveryReportExcel,\r\n cancelScheduledSmsTask,\r\n} from '../../_services/reports'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { timeout } from '../../_actions/user'\r\nimport {\r\n SortingState,\r\n PagingState,\r\n CustomPaging,\r\n SelectionState\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableSelection,\r\n TableRowDetail,\r\n TableColumnResizing\r\n} from '@devexpress/dx-react-grid-material-ui';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy'\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport HistoryIcon from '@material-ui/icons/History';\r\nimport Box from '@material-ui/core/Box';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Slide from '@material-ui/core/Slide';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport { DateTimePicker } from \"@material-ui/pickers\";\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport styles from \"assets/jss/material-dashboard-react/components/importFileDialog.js\"\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport MuiAlert from '@material-ui/lab/Alert';\r\nimport { numberFormat } from '../../formats/number.js'\r\nimport Swal from 'sweetalert2'\r\nimport { RowDetailState } from '@devexpress/dx-react-grid';\r\nimport { Doughnut } from 'react-chartjs-2';\r\nimport { default as NewTable } from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport ChangeTimeDialog from './ChangeTimeDialog.js'\r\nimport { FileFields } from 'variables/fileFields';\r\nimport { checkResponse } from '_helpers/notification';\r\nimport { alertResponseError } from '_helpers/notification';\r\n\r\nfunction Alert(props) {\r\n return ;\r\n}\r\n\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst Transition = React.forwardRef(function Transition(props, ref) {\r\n return ;\r\n});\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\n\r\nconst DetailsDialog = (props) => {\r\n const [list, setList] = useState([])\r\n const [errList, setErrList] = useState([])\r\n const [count, setCount] = useState(0)\r\n const [loading, setLoading] = useState(false)\r\n const [cancelTaskLoading, setCancelTaskLoading] = useState(false)\r\n const [MSISDN, setMSISDN] = useState('')\r\n const [content, setContent] = useState('')\r\n const [messageStatus, setMessageStatus] = useState('')\r\n const [errorCode, setErrorCode] = useState('')\r\n\r\n const [StartDate, SetStartDate] = useState('')\r\n const [EndDate, SetEndDate] = useState('')\r\n const [status, setStatus] = useState('')\r\n const [destination, setDestination] = useState('')\r\n const [source, setSource] = useState('')\r\n const [iyspusherrorcode, setIyspusherrorcode] = useState('')\r\n\r\n const [openSB, setOpenSB] = React.useState(false);\r\n const [message, setMessage] = useState('')\r\n const [ServiceType, SetServiceType] = useState(\"Msisdn\")\r\n //grid\r\n const [PageSize, SetPageSize] = useState(30)\r\n const [PageNumber, SetPageNumber] = useState(0)\r\n const [SortFields, SetSortFields] = useState([\r\n {\r\n FieldName: \"MessageId\",\r\n Direction: \"Ascending\"\r\n },\r\n {\r\n FieldName: \"SendDate\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n const [sorting, setSorting] = useState([])\r\n const [Direction, SetDirection] = useState('')\r\n\r\n //dialogs\r\n const [editPermissionDialog, setEditPermissionDialog] = useState(false)\r\n const [record, setRecord] = useState({})\r\n\r\n const [clipBoard, setClipBoard] = useState(false)\r\n\r\n const [sender, SetSender] = useState('')\r\n const [summary, setSummary] = useState([])\r\n\r\n const [messageIsDynamic, SetMessageIsDynamic] = useState(true)\r\n const [chartPage, SetChartPage] = useState(false)\r\n const [errorList, SetErrorList] = useState([])\r\n const [getSendDate, SetGetSendDate] = useState('')\r\n //iys\r\n const [iysPage, SetIysPage] = useState(true)\r\n const [iysMessageTypeDisplay, SetIysMessageTypeDisplay] = useState('')\r\n const [iysRecipientTypeDisplay, SetIysRecipientTypeDisplay] = useState('')\r\n const [iysBrandCode, SetIysBrandCode] = useState('')\r\n const [openChangeTimeDialog, setOpenChangeTimeDialog] = useState(false)\r\n\r\n\r\n const classes = useStyles()\r\n const { open, toggle, AuthData, dispatch, TaskId, keyFieldType,\r\n getTotalMessageCount,\r\n getTotalDelivered,\r\n getTotalUndelivered,\r\n getTotalWaiting,\r\n cancelButtonStatus,\r\n UserId,\r\n CustomerId,\r\n taskName\r\n } = props\r\n\r\n const hanldeChangeTimeDialogOpen = () => {\r\n setOpenChangeTimeDialog(!openChangeTimeDialog)\r\n }\r\n\r\n useEffect(() => {\r\n if (open) {\r\n getSmsDeliveryReportDetailErrorCodeList(AuthData)\r\n .then(res => {\r\n if (checkResponse(res, dispatch, null, 'SMS iletim hata kodları listesi alınamadı.')) {\r\n setErrList(res.data.list)\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'SMS iletim hata kodları listesi alınamadı.')\r\n })\r\n }\r\n }, [open])\r\n\r\n useEffect(() => {\r\n setList([])\r\n setCount(0)\r\n setSummary([])\r\n setMSISDN('')\r\n setContent('')\r\n setMessageStatus('')\r\n setErrorCode('')\r\n setLoading(false)\r\n if (open) {\r\n fetchData({})\r\n fetchSummaryData()\r\n fetchErrorData()\r\n }\r\n }, [open])\r\n\r\n const searchEx = () => {\r\n let expression = ''\r\n return expression\r\n }\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: 'messageId', width: '12%', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'msisdn', width: '20%', wordWrapEnabled: true },\r\n { columnName: 'content', width: '53%', wordWrapEnabled: true },\r\n { columnName: 'sendDate', width: '15%', align: 'right', wordWrapEnabled: true },\r\n ]);\r\n\r\n const columns = [\r\n { name: 'messageId', title: 'Sıra No' },\r\n { name: 'msisdn', title: 'Gönderilen Numara' },\r\n { name: \"content\", title: \"Mesaj Metni\" },\r\n { name: \"sendDate\", title: \"Gönderim Tarihi\" },\r\n ];\r\n\r\n\r\n const fetchSummaryData = () => {\r\n let expression = ''\r\n if (TaskId !== '') {\r\n expression += `{taskId:${TaskId}}`\r\n }\r\n const ListRequest = {\r\n PageSize, PageNumber,\r\n SortFields: [\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Descending\"\r\n },\r\n {\r\n FieldName: \"TaskName\",\r\n Direction: \"Ascending\"\r\n }\r\n ],\r\n SearchExpression: expression, CalculateTotalRecordCount: true,\r\n }\r\n const data = {\r\n AuthData,\r\n ListRequest\r\n }\r\n getSmsSummaryDeliveryReport(data)\r\n .then(res => {\r\n if (checkResponse(res, dispatch, null, 'SMS gönderim özeti getirilemedi.')) {\r\n setSummary(res.data.list)\r\n SetMessageIsDynamic(res.data.list[0].messageIsDynamic)\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'SMS gönderim özeti getirilemedi.')\r\n })\r\n }\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return {\r\n messageId: l.messageId + 1,\r\n msisdn: keyFieldType === FileFields.ID_FIELDTYPE_MOBILEPHONE ? numberFormat(l.msisdn || '') : l.msisdn,\r\n sendDate: moment(l.sendDate).format('DD.MM.YYYY HH:mm'),\r\n content: l.content\r\n }\r\n })\r\n )\r\n }\r\n\r\n const errorCodeResolve = (code) => {\r\n const index = errList.map(e => e.errorCode).indexOf(code)\r\n let ex = ''\r\n if (index > -1) {\r\n ex = errList[index].errorDescription\r\n } else {\r\n ex = 'Bilinmiyor'\r\n }\r\n return ex\r\n }\r\n\r\n const setExpression = () => {\r\n let expression = ''\r\n if (MSISDN !== '') {\r\n expression += `{msisdn:${MSISDN}}`\r\n }\r\n if (content !== '') {\r\n expression += `{content CONTAINS ${content}}`\r\n }\r\n if (messageStatus !== '') {\r\n expression += `{messageStatus:${messageStatus}}`\r\n }\r\n if (errorCode !== '') {\r\n expression += `{errorCode:${errorCode}}`\r\n }\r\n if (StartDate !== '' && EndDate !== '') {\r\n expression += `{sendDate:${StartDate}..${EndDate}}`\r\n }\r\n /*\r\n if (StartDate === '' && EndDate !== '') {\r\n expression += `{sendDate <= ${EndDate}}`\r\n }\r\n if (StartDate !== '' && EndDate === '') {\r\n expression += `{sendDate >= ${StartDate}}`\r\n }\r\n */\r\n return expression\r\n }\r\n\r\n const fetchData = (q) => {\r\n const ListRequest = {\r\n PageSize,\r\n PageNumber,\r\n SortFields,\r\n SearchExpression: setExpression(),\r\n CalculateTotalRecordCount: true,\r\n ...q\r\n }\r\n let data = {\r\n AuthData,\r\n ListRequest\r\n }\r\n if (TaskId) {\r\n data = { ...data, TaskId }\r\n } else {\r\n data = { ...data, TaskId: '00000000-0000-0000-0000-000000000000' }\r\n }\r\n setList([])\r\n setCount(0)\r\n setLoading(true)\r\n getSmsDetailedDeliveryReport(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, dispatch, null, 'SMS gönderim detay listesi getirilemedi.')) {\r\n SetGetSendDate(res.data.list && res.data.list[0] && res.data.list[0].sendDate)\r\n setList(res.data.list)\r\n setCount(res.data.totalRecordCount)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'SMS gönderim detay listesi getirilemedi.')\r\n })\r\n }\r\n\r\n\r\n const fetchErrorData = () => {\r\n const data = {\r\n ...AuthData,\r\n TaskId\r\n }\r\n getSmsDeliveryReportErrorSummary(data)\r\n .then(res => {\r\n if (checkResponse(res, dispatch, null, 'SMS gönderim hataları özet bilgisi getirilemedi.')) {\r\n SetErrorList(res.data.list)\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'SMS gönderim hataları özet bilgisi getirilemedi.')\r\n })\r\n }\r\n\r\n\r\n const handlePageSizeChange = (value) => {\r\n SetPageSize(value)\r\n SetPageNumber(0)\r\n fetchData({ PageSize: value, PageNumber: 1 })\r\n }\r\n\r\n const handlePageChange = (value) => {\r\n SetPageNumber(value)\r\n fetchData({ PageNumber: value + 1 })\r\n }\r\n\r\n const handleSort = params => {\r\n // if( params[0].columnName !== 'id'){\r\n // if(Direction === 'Ascending'){\r\n // handleGetData({},{ SortFields : [{FieldName: params[0].columnName, Direction: \"Descending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Descending\"}])\r\n // setSorting(params)\r\n // SetDirection('Descending')\r\n // }else{\r\n // handleGetData({},{ SortFields : [{FieldName: params[0].columnName, Direction: \"Ascending\"}]})\r\n // SetSortFields([{FieldName: params[0].columnName, Direction: \"Ascending\"}])\r\n // setSorting(params)\r\n // SetDirection('Ascending')\r\n // }\r\n // }else{\r\n // setSorting(params)\r\n // return\r\n // }\r\n }\r\n\r\n const handleAll = () => {\r\n setMSISDN('')\r\n setContent('')\r\n setMessageStatus('')\r\n setErrorCode('')\r\n SetStartDate('')\r\n SetEndDate('')\r\n SetPageNumber(0)\r\n fetchData({ SearchExpression: null })\r\n }\r\n\r\n const handleCancel = () => {\r\n //console.log(moment((moment(getSendDate).format('YYYY-MM-DD'))).isAfter((moment().format('YYYY-MM-DD'))))\r\n\r\n }\r\n\r\n const handleClose = (event, reason) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n\r\n setOpenSB(false);\r\n };\r\n\r\n const RowDetail = ({ row }) => (\r\n \r\n {row.content}\r\n {/* Details for\r\n {' '}\r\n {row.messageId}\r\n {' '}\r\n from\r\n {' '}\r\n {row.msisdn} */}\r\n
\r\n );\r\n\r\n const handleCancelTask = () => {\r\n const data = {\r\n ...AuthData,\r\n TaskId\r\n }\r\n Swal.fire({\r\n title: `${taskName} adlı SMS gönderim kaydını iptal etmek istediğinize emin misiniz?`,\r\n showDenyButton: true,\r\n confirmButtonText: 'Evet, İptal Et',\r\n denyButtonText: 'Vazgeç',\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n setCancelTaskLoading(true)\r\n cancelScheduledSmsTask(data)\r\n .then(res => {\r\n setCancelTaskLoading(false)\r\n if (checkResponse(res, dispatch, 'SMS gönderimi iptal edildi. ' + (res && res.data && res.data.resultUserFriendlyDescription ? res.data.resultUserFriendlyDescription : ''), 'SMS gönderim iptal işlemi başarısız.')) {\r\n fetchData({})\r\n }\r\n })\r\n .catch(err => {\r\n setCancelTaskLoading(false)\r\n alertResponseError(err, 'SMS gönderim iptal işlemi başarısız.')\r\n })\r\n } else if (result.isDenied) {\r\n Swal.fire('SMS gönderim iptali işleminden vazgeçildi.', '', 'info')\r\n }\r\n })\r\n }\r\n return (\r\n {\r\n SetChartPage(false)\r\n toggle()\r\n setList([])\r\n }}\r\n TransitionComponent={Transition} style={{ zIndex: 800 }}>\r\n \r\n \r\n {\r\n SetChartPage(false)\r\n toggle()\r\n setList([])\r\n }} aria-label=\"close\">\r\n \r\n \r\n \r\n {props.name}\r\n \r\n {\r\n SetChartPage(false)\r\n toggle()\r\n setList([])\r\n }}>\r\n GERİ\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Numara :\r\n \r\n \r\n \r\n setMSISDN(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Mesaj İçeriği :\r\n \r\n \r\n \r\n setContent(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Tarihi :\r\n \r\n \r\n \r\n \r\n \r\n {\r\n SetStartDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n {\r\n SetEndDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n fetchData({})}>\r\n SORGULA\r\n \r\n \r\n \r\n \r\n TÜMÜ\r\n \r\n \r\n\r\n \r\n \r\n \r\n {loading\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 {message}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default DetailsDialog","import React from \"react\";\r\nimport { Switch, Route, Redirect } from \"react-router-dom\";\r\n// creates a beautiful scrollbar\r\nimport PerfectScrollbar from \"perfect-scrollbar\";\r\nimport \"perfect-scrollbar/css/perfect-scrollbar.css\";\r\n// @material-ui/core components\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n// core components\r\nimport Navbar from \"components/Navbars/Navbar.js\";\r\nimport Footer from \"components/Footer/Footer.js\";\r\nimport Sidebar from \"components/Sidebar/Sidebar.js\";\r\n\r\nimport routes from \"routes.js\";\r\n\r\nimport styles from \"assets/jss/material-dashboard-react/layouts/adminStyle.js\";\r\n\r\nimport bgImage from \"assets/img/logo.svg\";\r\nimport logo from \"assets/img/logo-isim.svg\";\r\n\r\nlet ps;\r\n\r\nconst switchRoutes = (\r\n \r\n {routes.map((prop, key) => {\r\n if (prop.layout === \"/admin\") {\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n })}\r\n \r\n \r\n);\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nexport default function Admin({ ...rest }) {\r\n // styles\r\n const classes = useStyles();\r\n // ref to help us initialize PerfectScrollbar on windows devices\r\n const mainPanel = React.createRef();\r\n // states and functions\r\n const [mobileOpen, setMobileOpen] = React.useState(false);\r\n \r\n const handleDrawerToggle = () => {\r\n setMobileOpen(!mobileOpen);\r\n };\r\n const getRoute = () => {\r\n return window.location.pathname !== \"/admin/maps\";\r\n };\r\n const resizeFunction = () => {\r\n if (window.innerWidth >= 960) {\r\n setMobileOpen(false);\r\n }\r\n };\r\n // initialize and destroy the PerfectScrollbar plugin\r\n React.useEffect(() => {\r\n if (navigator.platform.indexOf(\"Win\") > -1) {\r\n ps = new PerfectScrollbar(mainPanel.current, {\r\n suppressScrollX: true,\r\n suppressScrollY: false\r\n });\r\n document.body.style.overflow = \"hidden\";\r\n }\r\n window.addEventListener(\"resize\", resizeFunction);\r\n // Specify how to clean up after this effect:\r\n return function cleanup() {\r\n if (navigator.platform.indexOf(\"Win\") > -1) {\r\n ps.destroy();\r\n }\r\n window.removeEventListener(\"resize\", resizeFunction);\r\n };\r\n }, [mainPanel]);\r\n\r\n const nav = routes.filter( r => !r.hidden )\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n {/* On the /maps route we want the map to be on full screen - this is not possible if the content and conatiner classes are present because they have some paddings which would make the map smaller */}\r\n {getRoute() ? (\r\n
\r\n ) : (\r\n
{switchRoutes}
\r\n )}\r\n {getRoute() ?
: null}\r\n
\r\n
\r\n );\r\n}\r\n","import React, { useState, useEffect } from 'react'\r\nimport { getSmsSenderList } from '../../_services/sms.js'\r\nimport { getScheduledSmsTaskList, cancelScheduledSmsTask } from '../../_services/reports.js'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport Box from '@material-ui/core/Box';\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport { DateTimePicker } from \"@material-ui/pickers\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport {\r\n SortingState,\r\n PagingState,\r\n CustomPaging\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableSelection,\r\n TableColumnResizing\r\n} from '@devexpress/dx-react-grid-material-ui';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport CancelIcon from '@material-ui/icons/Cancel';\r\nimport Swal from 'sweetalert2'\r\nimport DetailsDialog2 from 'components/Reports/DetailsDialog2.js'\r\nimport { FileFields } from 'variables/fileFields.js'\r\nimport { alertResponseError } from '_helpers/notification.js'\r\nimport { checkResponse } from '_helpers/notification.js'\r\nimport { getScheduledMmsTaskList } from '_services/mms.js';\r\nimport { UserRightVisibility } from 'variables/userRightVisibility.js';\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\nconst IleriTarihliMMS = props => {\r\n\r\n const [taskName, setTaskName] = useState('')\r\n const [sender, setSender] = useState('')\r\n const [message, setMessage] = useState('')\r\n const [iysBrandCode, setIysBrandCode] = useState('')\r\n const [StartDate, SetStartDate] = useState(moment().startOf('day').format('YYYY-MM-DDTHH:mm:ssZ'))\r\n const [EndDate, SetEndDate] = useState(moment().endOf('day').format('YYYY-MM-DDTHH:mm:ssZ'))\r\n const [StartDate2, SetStartDate2] = useState('')\r\n const [EndDate2, SetEndDate2] = useState('')\r\n const [keyFieldType, setKeyFieldType] = useState(FileFields.ID_FIELDTYPE_MOBILEPHONE)\r\n\r\n const [taskId, setTaskId] = useState('')\r\n const [detailDialog, setDetailDialog] = useState(false)\r\n\r\n const [loading, setLoading] = useState(false)\r\n const [list, setList] = useState([])\r\n const [count, setCount] = useState(0)\r\n const [PageSize, SetPageSize] = useState(30)\r\n const [PageNumber, SetPageNumber] = useState(0)\r\n const [SortFields, SetSortFields] = useState([\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Descending\"\r\n },\r\n {\r\n FieldName: \"TaskName\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n const [sorting, setSorting] = useState([])\r\n const [senderList, setSenderList] = useState([])\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: 'taskName', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'messageSubject', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'sender', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'sendDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'insertDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'totalMessageCount', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n ]);\r\n\r\n const columns = [\r\n { name: 'taskName', title: 'Gönderim Adı' },\r\n { name: 'messageSubject', title: 'Konu' },\r\n { name: 'sender', title: 'Başlık' },\r\n { name: 'sendDate', title: 'Gönderim Tarihi' },\r\n { name: 'insertDate', title: 'Ekleme Tarihi' },\r\n { name: \"totalMessageCount\", title: \"Mesaj Sayısı\" },\r\n ];\r\n\r\n const { contextSessionId, sessionId, dispatch, user, mode, setMode } = props\r\n\r\n const { serviceRight_MMS } = user.userRights\r\n\r\n const handleDetailDialogToggle = () => {\r\n setDetailDialog(!detailDialog)\r\n }\r\n\r\n const AuthData = {\r\n contextSessionId, sessionId\r\n }\r\n\r\n useEffect(() => {\r\n fetchData({})\r\n }, [])\r\n\r\n const fetchData = (query) => {\r\n let expression = ''\r\n if (taskName !== '') {\r\n expression += `{taskName CONTAINS ${taskName}}`\r\n }\r\n if (sender !== '') {\r\n expression += `{sender CONTAINS ${sender}}`\r\n }\r\n if (message !== '') {\r\n expression += `{message CONTAINS ${message}}`\r\n }\r\n if (iysBrandCode !== '') {\r\n expression += `{iysBrandCode CONTAINS ${iysBrandCode}}`\r\n }\r\n if (StartDate !== '' && EndDate !== '') {\r\n expression += `{insertDate:${StartDate}..${EndDate}}`\r\n }\r\n /*\r\n if (StartDate === '' && EndDate !== '') {\r\n expression += `{insertDate <= ${EndDate}}`\r\n }\r\n if (StartDate !== '' && EndDate === '') {\r\n expression += `{insertDate >= ${StartDate}}`\r\n }\r\n */\r\n if (StartDate2 !== '' && EndDate2 !== '') {\r\n expression += `{sendDate:${StartDate2}..${EndDate2}}`\r\n }\r\n /*\r\n if (StartDate2 === '' && EndDate2 !== '') {\r\n expression += `{sendDate <= ${EndDate2}}`\r\n }\r\n if (StartDate2 !== '' && EndDate2 === '') {\r\n expression += `{sendDate >= ${StartDate2}}`\r\n }\r\n */\r\n const Request = {\r\n PageSize, PageNumber, SortFields, SearchExpression: expression, CalculateTotalRecordCount: true,\r\n Includes: \"\",\r\n SearchCriterias: \"\",\r\n SearchQuery: \"\",\r\n IntersectList: \"\",\r\n ExceptList: \"\",\r\n ...query\r\n }\r\n const data = {\r\n AuthData,\r\n Request\r\n }\r\n setLoading(true)\r\n getScheduledMmsTaskList(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, dispatch, null, 'İleri tarihli MMS gönderim listesi getirilemedi.')) {\r\n setList(res.data.list)\r\n setCount(res.data.totalRecordCount)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'İleri tarihli MMS gönderim listesi getirilemedi.')\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n let _isMounted = true\r\n getSmsSenderList(AuthData)\r\n .then(res => {\r\n if (_isMounted) {\r\n if (checkResponse(res, dispatch, null, 'Başlık listesi getirilirken bir hata oluştu.')) {\r\n setSenderList(res.data.senderList)\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Başlık listesi getirilirken bir hata oluştu.')\r\n })\r\n return () => _isMounted = false\r\n }, [])\r\n\r\n\r\n const handleChange = () => {\r\n\r\n }\r\n\r\n const boxStyles = {\r\n padding: 5, color: \"#fff\", display: \"inline\", borderRadius: 5, fontWeight: 'bold', marginLeft: 5, display: \"inline\", float: 'right'\r\n }\r\n\r\n const styledTaskName = (name, status, isUsingMedyaMobil, sendingTimeType, sendDate, sendingTimeOptions) => {\r\n let sendDateStatus = moment(moment(sendDate)).isAfter(moment())\r\n return (\r\n \r\n \r\n {name}\r\n \r\n {status === 2 && sendingTimeType == 1 &&\r\n İşleniyor \r\n }\r\n {status === 3 && sendingTimeType == 1 &&\r\n İşleniyor... \r\n }\r\n {(status === 11 || status === 12) &&\r\n İptal Edildi \r\n }\r\n {status === 10 &&\r\n Onaylanmadı \r\n }\r\n {status === 9 &&\r\n Onay Bekliyor \r\n }\r\n {/* {(status === 4 || status === 2 || status === 3) && (sendingTimeType ==2 && sendDateStatus) &&\r\n İleri Tarihli \r\n } */}\r\n {sendingTimeOptions && sendingTimeOptions.sendSeperatedPeriodicallyOptions && sendingTimeOptions.sendSeperatedPeriodicallyOptions.isActive &&\r\n Zamana Yayılmış \r\n }\r\n {status === 5 &&\r\n Hata Oluştu \r\n }\r\n {isUsingMedyaMobil &&\r\n Medya Mobil \r\n }\r\n
\r\n )\r\n }\r\n\r\n const handleAll = () => {\r\n setTaskName('')\r\n setSender('')\r\n setMessage('')\r\n SetStartDate('')\r\n SetEndDate('')\r\n SetStartDate2('')\r\n SetEndDate2('')\r\n SetPageNumber(0)\r\n fetchData({ SearchExpression: null })\r\n }\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return {\r\n taskName: styledTaskName(l.taskName || '', l.status, l.isUsingMedyaMobil, l.sendingTimeType, l.sendDate, l.sendingTimeOptions),\r\n messageSubject: l.messageSubject,\r\n sender: l.sender,\r\n sendDate: moment(l.sendDate).format('DD.MM.YYYY HH:mm'),\r\n insertDate: moment(l.insertDate).format('DD.MM.YYYY HH:mm'),\r\n totalMessageCount: (l.totalMessageCount || '').toLocaleString(\"tr-TR\"),\r\n }\r\n })\r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {serviceRight_MMS === UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE &&\r\n \r\n \r\n \r\n setMode('sms')} simple={mode === 'sms' ? false : true} block>SMS MESAJLARI \r\n \r\n \r\n setMode('MMS')} simple={mode === 'MMS' ? false : true} block>MMS MESAJLARI \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n Gönderim Adı :\r\n \r\n \r\n \r\n setTaskName(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Başlığı :\r\n \r\n \r\n \r\n setSender(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Başlık Seçiniz \r\n {senderList && senderList.map(item => {\r\n return (\r\n {item.sender} \r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Mesaj Metni :\r\n \r\n \r\n \r\n setMessage(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n İYS Marka Kodu:\r\n \r\n \r\n \r\n setIysBrandCode(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderimin Eklendiği Tarih:\r\n \r\n \r\n \r\n \r\n {\r\n SetStartDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n SetEndDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Tarihi :\r\n \r\n \r\n \r\n \r\n {\r\n SetStartDate2(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n SetEndDate2(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n\r\n \r\n {/* */}\r\n \r\n \r\n fetchData({})}>\r\n SORGULA\r\n \r\n \r\n \r\n \r\n Tümü\r\n \r\n \r\n\r\n \r\n {loading\r\n ? \r\n \r\n
\r\n : \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n )\r\n}\r\n\r\nexport default IleriTarihliMMS\r\n","import React, { useState, useEffect } from 'react'\r\nimport { getSmsSenderList } from '../../_services/sms.js'\r\nimport { getScheduledSmsTaskList, cancelScheduledSmsTask } from '../../_services/reports.js'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport Box from '@material-ui/core/Box';\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport { DateTimePicker } from \"@material-ui/pickers\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport {\r\n SortingState,\r\n PagingState,\r\n CustomPaging\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableSelection,\r\n TableColumnResizing\r\n} from '@devexpress/dx-react-grid-material-ui';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport CancelIcon from '@material-ui/icons/Cancel';\r\nimport Swal from 'sweetalert2'\r\nimport DetailsDialog2 from 'components/Reports/DetailsDialog2.js'\r\nimport { FileFields } from 'variables/fileFields.js'\r\nimport { alertResponseError } from '_helpers/notification.js'\r\nimport { checkResponse } from '_helpers/notification.js'\r\nimport IleriTarihliMMS from './IleriTarihliMMS.js';\r\nimport { UserRightVisibility } from 'variables/userRightVisibility.js';\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\nconst IleriTarihliGonderimler = props => {\r\n\r\n const [taskName, setTaskName] = useState('')\r\n const [sender, setSender] = useState('')\r\n const [message, setMessage] = useState('')\r\n const [iysBrandCode, setIysBrandCode] = useState('')\r\n const [StartDate, SetStartDate] = useState(moment().startOf('day').format('YYYY-MM-DDTHH:mm:ssZ'))\r\n const [EndDate, SetEndDate] = useState(moment().endOf('day').format('YYYY-MM-DDTHH:mm:ssZ'))\r\n const [StartDate2, SetStartDate2] = useState('')\r\n const [EndDate2, SetEndDate2] = useState('')\r\n const [keyFieldType, setKeyFieldType] = useState(FileFields.ID_FIELDTYPE_MOBILEPHONE)\r\n\r\n const [taskId, setTaskId] = useState('')\r\n const [detailDialog, setDetailDialog] = useState(false)\r\n\r\n const [loading, setLoading] = useState(false)\r\n const [list, setList] = useState([])\r\n const [count, setCount] = useState(0)\r\n const [PageSize, SetPageSize] = useState(30)\r\n const [PageNumber, SetPageNumber] = useState(0)\r\n const [SortFields, SetSortFields] = useState([\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Descending\"\r\n },\r\n {\r\n FieldName: \"TaskName\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n const [sorting, setSorting] = useState([])\r\n const [Direction, SetDirection] = useState('')\r\n const [senderList, setSenderList] = useState([])\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: 'taskName', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'sender', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'sendDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'insertDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'totalMessageCount', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'action', width: 120, align: 'center' },\r\n ]);\r\n\r\n const columns = [\r\n { name: 'taskName', title: 'Gönderim Adı' },\r\n { name: 'sender', title: 'Başlık' },\r\n { name: 'sendDate', title: 'Gönderim Tarihi' },\r\n { name: 'insertDate', title: 'Ekleme Tarihi' },\r\n { name: \"totalMessageCount\", title: \"Mesaj Sayısı\" },\r\n { name: 'action', title: 'İşlem' },\r\n ];\r\n\r\n const [mode, setMode] = useState('sms')\r\n\r\n const { contextSessionId, sessionId, dispatch, user } = props\r\n\r\n const { serviceRight_MMS } = user.userRights\r\n\r\n const handleDetailDialogToggle = () => {\r\n setDetailDialog(!detailDialog)\r\n }\r\n\r\n const AuthData = {\r\n contextSessionId, sessionId\r\n }\r\n\r\n useEffect(() => {\r\n fetchData({})\r\n }, [])\r\n\r\n const fetchData = (query) => {\r\n let expression = ''\r\n if (taskName !== '') {\r\n expression += `{taskName CONTAINS ${taskName}}`\r\n }\r\n if (sender !== '') {\r\n expression += `{sender CONTAINS ${sender}}`\r\n }\r\n if (message !== '') {\r\n expression += `{message CONTAINS ${message}}`\r\n }\r\n if (iysBrandCode !== '') {\r\n expression += `{iysBrandCode CONTAINS ${iysBrandCode}}`\r\n }\r\n if (StartDate !== '' && EndDate !== '') {\r\n expression += `{insertDate:${StartDate}..${EndDate}}`\r\n }\r\n /*\r\n if (StartDate === '' && EndDate !== '') {\r\n expression += `{insertDate <= ${EndDate}}`\r\n }\r\n if (StartDate !== '' && EndDate === '') {\r\n expression += `{insertDate >= ${StartDate}}`\r\n }\r\n */\r\n if (StartDate2 !== '' && EndDate2 !== '') {\r\n expression += `{sendDate:${StartDate2}..${EndDate2}}`\r\n }\r\n /*\r\n if (StartDate2 === '' && EndDate2 !== '') {\r\n expression += `{sendDate <= ${EndDate2}}`\r\n }\r\n if (StartDate2 !== '' && EndDate2 === '') {\r\n expression += `{sendDate >= ${StartDate2}}`\r\n }\r\n */\r\n const ListRequest = {\r\n PageSize, PageNumber, SortFields, SearchExpression: expression, CalculateTotalRecordCount: true, ...query\r\n }\r\n const data = {\r\n AuthData,\r\n ListRequest\r\n }\r\n setLoading(true)\r\n getScheduledSmsTaskList(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, dispatch, null, 'İleri tarihli SMS gönderim listesi getirilemedi.')) {\r\n setList(res.data.list)\r\n setCount(res.data.totalRecordCount)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'İleri tarihli SMS gönderim listesi getirilemedi.')\r\n })\r\n }\r\n\r\n useEffect(() => {\r\n let _isMounted = true\r\n getSmsSenderList(AuthData)\r\n .then(res => {\r\n if (_isMounted) {\r\n if (checkResponse(res, dispatch, null, 'Başlık listesi getirilirken bir hata oluştu.')) {\r\n setSenderList(res.data.senderList)\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Başlık listesi getirilirken bir hata oluştu.')\r\n })\r\n return () => _isMounted = false\r\n }, [])\r\n\r\n\r\n const handleChange = () => {\r\n\r\n }\r\n\r\n\r\n const handleCancel = (taskName, taskId) => {\r\n const data = {\r\n contextSessionId, sessionId,\r\n TaskId: taskId\r\n }\r\n Swal.fire({\r\n title: `${taskName} adlı SMS gönderim kaydını iptal etmek istediğinize emin misiniz?`,\r\n showDenyButton: true,\r\n confirmButtonText: 'Evet, İptal Et',\r\n denyButtonText: 'Vazgeç',\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n setLoading(true)\r\n cancelScheduledSmsTask(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, dispatch, 'SMS gönderimi iptal edildi. ' + (res && res.data && res.data.resultUserFriendlyDescription ? res.data.resultUserFriendlyDescription : ''), 'SMS gönderim iptal işlemi başarısız.')) {\r\n fetchData({})\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'SMS gönderim iptal işlemi başarısız.')\r\n })\r\n } else if (result.isDenied) {\r\n Swal.fire('SMS gönderim iptali işleminden vazgeçildi.', '', 'info')\r\n }\r\n })\r\n }\r\n\r\n const handleDetail = (id) => {\r\n setTaskId(id.taskId)\r\n setTaskName(id.taskName)\r\n setKeyFieldType(id.keyFieldType)\r\n handleDetailDialogToggle()\r\n\r\n }\r\n\r\n const boxStyles = {\r\n padding: 5, color: \"#fff\", display: \"inline\", borderRadius: 5, fontWeight: 'bold', marginLeft: 5, display: \"inline\", float: 'right'\r\n }\r\n\r\n const styledTaskName = (name, status, isUsingMedyaMobil, sendingTimeType, sendDate, sendingTimeOptions) => {\r\n let sendDateStatus = moment(moment(sendDate)).isAfter(moment())\r\n return (\r\n \r\n \r\n {name}\r\n \r\n {status === 2 && sendingTimeType == 1 &&\r\n İşleniyor \r\n }\r\n {status === 3 && sendingTimeType == 1 &&\r\n İşleniyor... \r\n }\r\n {(status === 11 || status === 12) &&\r\n İptal Edildi \r\n }\r\n {status === 10 &&\r\n Onaylanmadı \r\n }\r\n {status === 9 &&\r\n Onay Bekliyor \r\n }\r\n {/* {(status === 4 || status === 2 || status === 3) && (sendingTimeType ==2 && sendDateStatus) &&\r\n İleri Tarihli \r\n } */}\r\n {sendingTimeOptions && sendingTimeOptions.sendSeperatedPeriodicallyOptions && sendingTimeOptions.sendSeperatedPeriodicallyOptions.isActive &&\r\n Zamana Yayılmış \r\n }\r\n {status === 5 &&\r\n Hata Oluştu \r\n }\r\n {isUsingMedyaMobil &&\r\n Medya Mobil \r\n }\r\n
\r\n )\r\n }\r\n\r\n const handleAll = () => {\r\n setTaskName('')\r\n setSender('')\r\n setMessage('')\r\n SetStartDate('')\r\n SetEndDate('')\r\n SetStartDate2('')\r\n SetEndDate2('')\r\n SetPageNumber(0)\r\n fetchData({ SearchExpression: null })\r\n }\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return {\r\n taskName: styledTaskName(l.taskName || '', l.status, l.isUsingMedyaMobil, l.sendingTimeType, l.sendDate, l.sendingTimeOptions),\r\n sender: l.sender,\r\n sendDate: moment(l.sendDate).format('DD.MM.YYYY HH:mm'),\r\n insertDate: moment(l.insertDate).format('DD.MM.YYYY HH:mm'),\r\n totalMessageCount: (l.totalMessageCount || '').toLocaleString(\"tr-TR\"),\r\n action: <>\r\n \r\n handleCancel(l.taskName, l.taskId)} >\r\n \r\n \r\n \r\n \r\n handleDetail(l)} >\r\n \r\n \r\n \r\n >\r\n }\r\n })\r\n )\r\n }\r\n\r\n if (mode === \"MMS\") {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {serviceRight_MMS === UserRightVisibility.ID_USERRIGHTVISIBILITY_VISIBLE &&\r\n \r\n \r\n \r\n setMode('sms')} simple={mode === 'sms' ? false : true} block>SMS MESAJLARI \r\n \r\n \r\n setMode('MMS')} simple={mode === 'MMS' ? false : true} block>MMS MESAJLARI \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n Gönderim Adı :\r\n \r\n \r\n \r\n setTaskName(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Başlığı :\r\n \r\n \r\n \r\n setSender(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Başlık Seçiniz \r\n {senderList && senderList.map(item => {\r\n return (\r\n {item.sender} \r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Mesaj Metni :\r\n \r\n \r\n \r\n setMessage(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n İYS Marka Kodu:\r\n \r\n \r\n \r\n setIysBrandCode(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderimin Eklendiği Tarih:\r\n \r\n \r\n \r\n \r\n {\r\n SetStartDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n SetEndDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Tarihi :\r\n \r\n \r\n \r\n \r\n {\r\n SetStartDate2(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n SetEndDate2(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n\r\n \r\n {/* */}\r\n \r\n \r\n fetchData({})}>\r\n SORGULA\r\n \r\n \r\n \r\n \r\n Tümü\r\n \r\n \r\n\r\n \r\n {loading\r\n ? \r\n \r\n
\r\n : \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n )\r\n}\r\n\r\nexport default IleriTarihliGonderimler\r\n","import React, { useState, useEffect } from 'react'\r\nimport { getSmsPeriodicTaskList, setPassiveSmsPeriodicTaskList } from '../../_services/reports'\r\nimport { getSmsSenderList } from '../../_services/sms.js'\r\nimport { timeout } from '../../_actions/user'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport Box from '@material-ui/core/Box';\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport { DateTimePicker } from \"@material-ui/pickers\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport {\r\n SortingState,\r\n PagingState,\r\n CustomPaging,\r\n SelectionState\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableSelection,\r\n TableColumnResizing\r\n} from '@devexpress/dx-react-grid-material-ui';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy'\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport HistoryIcon from '@material-ui/icons/History';\r\nimport CancelIcon from '@material-ui/icons/Cancel';\r\nimport { numberFormat } from '../../formats/number.js'\r\nimport Swal from 'sweetalert2'\r\nimport { checkResponse } from '_helpers/notification'\r\nimport { alertResponseError } from '_helpers/notification'\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\nconst PeriyodikGonderimler = props => {\r\n\r\n //const [ StartDate, SetStartDate ] = useState('')\r\n //const [ EndDate, SetEndDate ] = useState('')\r\n const [loading, setLoading] = useState(false)\r\n const [list, setList] = useState([])\r\n const [count, setCount] = useState(0)\r\n const [PageSize, SetPageSize] = useState(30)\r\n const [PageNumber, SetPageNumber] = useState(0)\r\n const [SortFields, SetSortFields] = useState([\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Descending\"\r\n },\r\n {\r\n FieldName: \"TaskName\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n const [sorting, setSorting] = useState([])\r\n const [Direction, SetDirection] = useState('')\r\n const [senderList, setSenderList] = useState([])\r\n\r\n const [taskName, setTaskName] = useState('')\r\n const [sender, setSender] = useState('')\r\n const [message, setMessage] = useState('')\r\n const [StartDate, SetStartDate] = useState('')\r\n const [EndDate, SetEndDate] = useState('')\r\n const [StartDate2, SetStartDate2] = useState('')\r\n const [EndDate2, SetEndDate2] = useState('')\r\n const [iysBrandCode, setIysBrandCode] = useState('')\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: 'taskName', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'sender', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'lastTotalMessageCount', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'songonderimtarihi', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'lastSendDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'nextSendDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'insertDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'action', width: 55, align: 'center' },\r\n\r\n\r\n ]);\r\n\r\n const columns = [\r\n { name: 'taskName', title: 'Gönderim Adı' },\r\n { name: 'sender', title: 'Başlık' },\r\n { name: 'lastTotalMessageCount', title: 'En Son Mesaj Sayısı' },\r\n { name: 'lastSendDate', title: 'Son Gönderim Tarihi' },\r\n { name: 'nextSendDate', title: 'Bir Sonraki Gönderim Tarihi' },\r\n { name: 'insertDate', title: 'Ekleme Tarihi' },\r\n { name: 'action', title: 'İşlem' },\r\n ];\r\n\r\n\r\n const [mode, setMode] = useState('test')\r\n\r\n\r\n const { contextSessionId, sessionId, dispatch } = props\r\n\r\n const AuthData = {\r\n contextSessionId, sessionId\r\n }\r\n\r\n useEffect(() => {\r\n let _isMounted = true\r\n getSmsSenderList(AuthData)\r\n .then(res => {\r\n if (_isMounted) {\r\n if (checkResponse(res, dispatch, null, 'Başlık listesi getirilirken bir hata oluştu.')) {\r\n setSenderList(res.data.senderList)\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Başlık listesi getirilirken bir hata oluştu.')\r\n })\r\n return () => _isMounted = false\r\n }, [])\r\n\r\n\r\n useEffect(() => {\r\n fetchData({})\r\n }, [])\r\n\r\n const fetchData = (query) => {\r\n let expression = ''\r\n if (taskName !== '') {\r\n expression += `{taskName CONTAINS ${taskName}}`\r\n }\r\n if (sender !== '') {\r\n expression += `{sender CONTAINS ${sender}}`\r\n }\r\n if (message !== '') {\r\n expression += `{message CONTAINS ${message}}`\r\n }\r\n if (iysBrandCode !== '') {\r\n expression += `{iysBrandCode CONTAINS ${iysBrandCode}}`\r\n }\r\n if (StartDate !== '' && EndDate !== '') {\r\n expression += `{insertDate:${StartDate}..${EndDate}}`\r\n }\r\n /*\r\n if (StartDate === '' && EndDate !== '') {\r\n expression += `{insertDate <= ${EndDate}}`\r\n }\r\n if (StartDate !== '' && EndDate === '') {\r\n expression += `{insertDate >= ${StartDate}}`\r\n }\r\n */\r\n if (StartDate2 !== '' && EndDate2 !== '') {\r\n expression += `{nextSendDate:${StartDate2}..${EndDate2}}`\r\n }\r\n /*\r\n if (StartDate2 === '' && EndDate2 !== '') {\r\n expression += `{nextSendDate <= ${EndDate2}}`\r\n }\r\n if (StartDate2 !== '' && EndDate2 === '') {\r\n expression += `{nextSendDate >= ${StartDate2}}`\r\n }\r\n */\r\n const ListRequest = {\r\n PageSize, PageNumber, SortFields, SearchExpression: expression, CalculateTotalRecordCount: true, ...query\r\n }\r\n const data = {\r\n AuthData,\r\n ListRequest\r\n }\r\n setLoading(true)\r\n getSmsPeriodicTaskList(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, dispatch, null, 'Periyodik SMS listesi getirilemedi.')) {\r\n setList(res.data.list)\r\n setCount(res.data.totalRecordCount)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Periyodik SMS listesi getirilemedi.')\r\n })\r\n }\r\n\r\n const handleAll = () => {\r\n setTaskName('')\r\n setSender('')\r\n setMessage('')\r\n SetStartDate('')\r\n SetEndDate('')\r\n SetStartDate2('')\r\n SetEndDate2('')\r\n SetPageNumber(0)\r\n fetchData({ SearchExpression: null })\r\n }\r\n\r\n const handleChange = () => {\r\n\r\n }\r\n\r\n const handleCancel = (taskName, scheduleId) => {\r\n const data = {\r\n contextSessionId, sessionId,\r\n ScheduleIdList: [scheduleId]\r\n }\r\n Swal.fire({\r\n title: `${taskName} adlı periyodik SMS gönderim kaydını iptal etmek istediğinize emin misiniz?`,\r\n showDenyButton: true,\r\n confirmButtonText: 'Evet, İptal Et',\r\n denyButtonText: 'Vazgeç',\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n setLoading(true)\r\n setPassiveSmsPeriodicTaskList(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, dispatch, 'Periyodik SMS gönderim tanımı iptal edildi.', 'Periyodik SMS gönderim tanımının iptali başarısız oldu.')) {\r\n fetchData({})\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Periyodik SMS gönderim tanımının iptali başarısız oldu.')\r\n })\r\n } else if (result.isDenied) {\r\n Swal.fire('Periyodik SMS gönderim tanımının iptalinden vazgeçildi.', '', 'info')\r\n }\r\n })\r\n }\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return {\r\n taskName: l.taskName,\r\n sender: l.sender,\r\n lastTotalMessageCount: (l.lastTotalMessageCount || '').toLocaleString(\"tr-TR\"),\r\n lastSendDate: l.lastSendDate ? moment(l.lastSendDate).format('DD.MM.YYYY HH:mm') : \"\",\r\n nextSendDate: moment(l.nextSendDate).format('DD.MM.YYYY HH:mm'),\r\n insertDate: moment(l.insertDate).format('DD.MM.YYYY HH:mm'),\r\n action: <>\r\n \r\n handleCancel(l.taskName, l.scheduleId)} >\r\n \r\n \r\n \r\n >\r\n }\r\n })\r\n )\r\n }\r\n\r\n const handleModeChange = (mode) => {\r\n setMode(mode)\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Adı :\r\n \r\n \r\n \r\n setTaskName(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Başlığı :\r\n \r\n \r\n \r\n setSender(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Başlık Seçiniz \r\n {senderList && senderList.map(item => {\r\n return (\r\n {item.sender} \r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Mesaj Metni :\r\n \r\n \r\n \r\n setMessage(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n İYS Marka Kodu:\r\n \r\n \r\n \r\n setIysBrandCode(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderimin Eklendiği Tarih:\r\n \r\n \r\n \r\n \r\n {\r\n SetStartDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n SetEndDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Bir Sonraki Gönderim Tarihi :\r\n \r\n \r\n \r\n \r\n {\r\n SetStartDate2(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n SetEndDate2(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY HH:mm'\r\n />\r\n \r\n \r\n \r\n \r\n\r\n \r\n {/* */}\r\n \r\n \r\n fetchData({})}>\r\n SORGULA\r\n \r\n \r\n \r\n \r\n Tümü\r\n \r\n \r\n\r\n \r\n {loading\r\n ? \r\n \r\n
\r\n : \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default PeriyodikGonderimler\r\n","import React, { useState, useEffect } from 'react'\r\nimport { connect } from 'react-redux'\r\nimport { getWaitingConfirmationSmsTaskList, confirmOrRejectWaitingConfirmationSmsTask, cancelWaitingConfirmationSmsTask } from '../../_services/reports.js'\r\nimport { getSmsSenderList } from '../../_services/sms.js'\r\nimport { timeout } from '../../_actions/user'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport Box from '@material-ui/core/Box';\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\nimport Swal from 'sweetalert2'\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport { DatePicker } from \"@material-ui/pickers\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport {\r\n SortingState,\r\n PagingState,\r\n CustomPaging,\r\n SelectionState\r\n} from '@devexpress/dx-react-grid';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableSelection,\r\n TableColumnResizing\r\n} from '@devexpress/dx-react-grid-material-ui';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy'\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport ThumbUpIcon from '@material-ui/icons/ThumbUp';\r\nimport CancelIcon from '@material-ui/icons/Cancel';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport { numberFormat } from '../../formats/number.js'\r\nimport DetailsDialog2 from 'components/Reports/DetailsDialog2.js'\r\nimport { FileFields } from 'variables/fileFields.js'\r\nimport { checkResponse } from '_helpers/notification.js'\r\nimport { alertResponseError } from '_helpers/notification.js'\r\n\r\nconst tableMessages = {\r\n noData: 'Kayıt bulunamadı.',\r\n};\r\nconst pagingPanelMessages = {\r\n showAll: 'Tümü',\r\n rowsPerPage: 'Sayfadaki satır sayısı',\r\n info: '{count} kayıttan {from} - {to} arası gösteriliyor.',\r\n};\r\n\r\nconst OnayBekleyenGonderimler = props => {\r\n const [senderList, setSenderList] = useState([])\r\n const [taskName, setTaskName] = useState('')\r\n const [sender, setSender] = useState('')\r\n const [message, setMessage] = useState('')\r\n const [StartDate, SetStartDate] = useState(moment().subtract(7, 'day').startOf('day').format('YYYY-MM-DDTHH:mm:ssZ'))\r\n const [EndDate, SetEndDate] = useState(moment().endOf('day').format('YYYY-MM-DDTHH:mm:ssZ'))\r\n const [StartDate2, SetStartDate2] = useState('')\r\n const [EndDate2, SetEndDate2] = useState('')\r\n const [iysBrandCode, setIysBrandCode] = useState('')\r\n const [taskId, setTaskId] = useState('')\r\n const [keyFieldType, setKeyFieldType] = useState(FileFields.ID_FIELDTYPE_MOBILEPHONE)\r\n const [detailDialog, setDetailDialog] = useState(false)\r\n\r\n const [loading, setLoading] = useState(false)\r\n const [list, setList] = useState([])\r\n const [count, setCount] = useState(0)\r\n const [PageSize, SetPageSize] = useState(30)\r\n const [PageNumber, SetPageNumber] = useState(1)\r\n const [SortFields, SetSortFields] = useState([\r\n {\r\n FieldName: \"InsertDate\",\r\n Direction: \"Descending\"\r\n },\r\n {\r\n FieldName: \"TaskName\",\r\n Direction: \"Ascending\"\r\n }\r\n ])\r\n const [sorting, setSorting] = useState([])\r\n const [Direction, SetDirection] = useState('')\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: 'taskName', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'sender', width: 'auto', wordWrapEnabled: true },\r\n { columnName: 'sendDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'insertDate', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'totalMessageCount', width: 'auto', align: 'right', wordWrapEnabled: true },\r\n { columnName: 'action', width: 165, align: 'center' },\r\n ]);\r\n\r\n const columns = [\r\n { name: 'taskName', title: 'Gönderim Adı' },\r\n { name: 'sender', title: 'Başlık' },\r\n { name: 'sendDate', title: 'Gönderim Tarihi' },\r\n { name: 'insertDate', title: 'Ekleme Tarihi' },\r\n { name: \"totalMessageCount\", title: \"Mesaj Sayısı\" },\r\n { name: \"action\", title: \"İşlem\" },\r\n ];\r\n\r\n const handleChange = () => {\r\n\r\n }\r\n\r\n const { dispatch } = props\r\n const { contextSessionId, sessionId, user } = props.user\r\n\r\n const AuthData = {\r\n contextSessionId, sessionId\r\n }\r\n\r\n useEffect(() => {\r\n let _isMounted = true\r\n getSmsSenderList(AuthData)\r\n .then(res => {\r\n if (_isMounted) {\r\n if (checkResponse(res, dispatch, null, 'Başlık listesi getirilirken bir hata oluştu.')) {\r\n setSenderList(res.data.senderList)\r\n }\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Başlık listesi getirilirken bir hata oluştu.')\r\n })\r\n return () => _isMounted = false\r\n }, [])\r\n\r\n const handleDetailDialogToggle = () => {\r\n setDetailDialog(!detailDialog)\r\n }\r\n\r\n\r\n useEffect(() => {\r\n fetchData({})\r\n }, [])\r\n\r\n const fetchData = (query) => {\r\n let expression = ''\r\n if (taskName !== '') {\r\n expression += `{taskName CONTAINS ${taskName}}`\r\n }\r\n if (sender !== '') {\r\n expression += `{sender CONTAINS ${sender}}`\r\n }\r\n if (message !== '') {\r\n expression += `{message CONTAINS ${message}}`\r\n }\r\n if (iysBrandCode !== '') {\r\n expression += `{iysBrandCode CONTAINS ${iysBrandCode}}`\r\n }\r\n if (StartDate !== '' && EndDate !== '') {\r\n expression += `{insertDate:${StartDate}..${EndDate}}`\r\n }\r\n /*\r\n if (StartDate === '' && EndDate !== '') {\r\n expression += `{insertDate <= ${EndDate}}`\r\n }\r\n if (StartDate !== '' && EndDate === '') {\r\n expression += `{insertDate >= ${StartDate}}`\r\n }\r\n */\r\n if (StartDate2 !== '' && EndDate2 !== '') {\r\n expression += `{sendDate:${StartDate2}..${EndDate2}}`\r\n }\r\n /*\r\n if (StartDate2 === '' && EndDate2 !== '') {\r\n expression += `{sendDate <= ${EndDate2}}`\r\n }\r\n if (StartDate2 !== '' && EndDate2 === '') {\r\n expression += `{sendDate >= ${StartDate2}}`\r\n }\r\n */\r\n const ListRequest = {\r\n PageSize, PageNumber, SortFields, SearchExpression: expression, CalculateTotalRecordCount: true, ...query\r\n }\r\n const data = {\r\n AuthData,\r\n ListRequest\r\n }\r\n setLoading(true)\r\n getWaitingConfirmationSmsTaskList(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, dispatch, null, 'Onay bekleyen SMS gönderimleri listesi getirilemedi.')) {\r\n setList(res.data.list)\r\n setCount(res.data.totalRecordCount)\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'Onay bekleyen SMS gönderimleri listesi getirilemedi.')\r\n })\r\n }\r\n\r\n const handleAll = () => {\r\n setTaskName('')\r\n setSender('')\r\n setMessage('')\r\n SetStartDate('')\r\n SetEndDate('')\r\n SetStartDate2('')\r\n SetEndDate2('')\r\n SetPageNumber(0)\r\n fetchData({ SearchExpression: null })\r\n }\r\n\r\n const approvePermission = (_type) => {\r\n let perm = false\r\n if (_type === 1 || _type === 3) {\r\n perm = true\r\n }\r\n return perm\r\n }\r\n\r\n const cancelPermission = (_type) => {\r\n let perm = false\r\n if (_type === 2 || _type === 4) {\r\n perm = true\r\n }\r\n return perm\r\n }\r\n\r\n let approveData = {\r\n contextSessionId, sessionId\r\n }\r\n\r\n const handleApprove = (taskName, taskId) => {\r\n const data = {\r\n ...approveData,\r\n taskId,\r\n Confirmed: true\r\n }\r\n Swal.fire({\r\n title: `${taskName} adlı SMS gönderim kaydını gönderimin gerçekleştirilmesi için onaylamak istediğinize emin misiniz?`,\r\n showDenyButton: true,\r\n confirmButtonText: 'Evet, Onayla',\r\n denyButtonText: 'Vazgeç',\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n confirmOrRejectWaitingConfirmationSmsTask(data)\r\n .then(res => {\r\n if (checkResponse(res, dispatch, 'SMS gönderimi onaylandı.', 'SMS gönderim onayı başarısız oldu.')) {\r\n fetchData({})\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'SMS gönderim onayı başarısız oldu.')\r\n })\r\n } else if (result.isDenied) {\r\n Swal.fire('SMS gönderim onayı işleminden vazgeçildi.', '', 'info')\r\n }\r\n })\r\n }\r\n\r\n const handleCancel = (taskName, taskId) => {\r\n const data = {\r\n ...approveData,\r\n taskId,\r\n Confirmed: false\r\n }\r\n Swal.fire({\r\n title: `${taskName} adlı SMS gönderim kaydını iptal etmek istediğinize emin misiniz?`,\r\n showDenyButton: true,\r\n confirmButtonText: 'Evet, İptal Et',\r\n denyButtonText: 'Vazgeç',\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n setLoading(true)\r\n cancelWaitingConfirmationSmsTask(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, dispatch, 'SMS gönderimi iptal edildi.', 'SMS gönderim iptali başarısız oldu.')) {\r\n fetchData({})\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'SMS gönderim iptali başarısız oldu.')\r\n })\r\n } else if (result.isDenied) {\r\n Swal.fire('SMS gönderim iptali işlemden vazgeçildi.', '', 'info')\r\n }\r\n })\r\n }\r\n\r\n const handleGiveUp = (taskName, taskId) => {\r\n const data = {\r\n ...approveData,\r\n taskId,\r\n Confirmed: true\r\n }\r\n Swal.fire({\r\n title: `${taskName} adlı SMS gönderim kaydını iptal etmek istediğinize emin misiniz?`,\r\n showDenyButton: true,\r\n confirmButtonText: 'Evet, İptal Et',\r\n denyButtonText: 'Vazgeç',\r\n }).then((result) => {\r\n if (result.isConfirmed) {\r\n setLoading(true)\r\n cancelWaitingConfirmationSmsTask(data)\r\n .then(res => {\r\n setLoading(false)\r\n if (checkResponse(res, dispatch, 'SMS gönderimi iptal edildi.', 'SMS gönderim iptali başarısız oldu.')) {\r\n fetchData({})\r\n }\r\n })\r\n .catch(err => {\r\n setLoading(false)\r\n alertResponseError(err, 'SMS gönderim iptali başarısız oldu.')\r\n })\r\n } else if (result.isDenied) {\r\n Swal.fire('SMS gönderim iptali işlemden vazgeçildi.', '', 'info')\r\n }\r\n })\r\n }\r\n\r\n const handleDetail = (id) => {\r\n setTaskId(id.taskId)\r\n setTaskName(id.taskName)\r\n setKeyFieldType(id.keyFieldType)\r\n handleDetailDialogToggle()\r\n\r\n }\r\n\r\n const rows = list => {\r\n return (\r\n list.map(l => {\r\n return {\r\n taskName: l.taskName,\r\n sender: l.sender,\r\n sendDate: moment(l.sendDate).format('DD.MM.YYYY HH:mm'),\r\n insertDate: moment(l.insertDate).format('DD.MM.YYYY HH:mm'),\r\n totalMessageCount: (l.totalMessageCount || '').toLocaleString(\"tr-TR\"),\r\n action: <>\r\n {approvePermission(user.userInfo.userType) &&\r\n <>\r\n \r\n handleApprove(l.taskName, l.taskId)} >\r\n \r\n \r\n \r\n \r\n handleCancel(l.taskName, l.taskId)} >\r\n \r\n \r\n \r\n\r\n >\r\n }\r\n {\r\n cancelPermission(user.userInfo.userType) &&\r\n \r\n handleGiveUp(l.taskName, l.taskId)} >\r\n \r\n \r\n \r\n }\r\n \r\n handleDetail(l)} >\r\n \r\n \r\n \r\n >\r\n }\r\n })\r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Adı :\r\n \r\n \r\n \r\n setTaskName(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Başlığı :\r\n \r\n \r\n \r\n setSender(e.target.value)}\r\n fullWidth\r\n displayEmpty\r\n inputProps={{ 'aria-label': 'İzin Türü : ' }}\r\n >\r\n Başlık Seçiniz \r\n {senderList && senderList.map(item => {\r\n return (\r\n {item.sender} \r\n )\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Mesaj Metni :\r\n \r\n \r\n \r\n setMessage(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n İYS Marka Kodu:\r\n \r\n \r\n \r\n setIysBrandCode(e.target.value),\r\n onKeyDown: e => { if (e.keyCode === 13) { fetchData({}) } }\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderimin Eklendiği Tarih:\r\n \r\n \r\n \r\n \r\n {\r\n SetStartDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY'\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n SetEndDate(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY'\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Tarihi :\r\n \r\n \r\n \r\n \r\n {\r\n SetStartDate2(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY'\r\n />\r\n \r\n \r\n \r\n \r\n {\r\n SetEndDate2(moment(date).format('YYYY-MM-DDTHH:mm:ssZ'))\r\n }}\r\n format='DD.MM.YYYY'\r\n />\r\n \r\n \r\n \r\n \r\n\r\n \r\n {/* */}\r\n \r\n \r\n fetchData({})}>\r\n SORGULA\r\n \r\n \r\n \r\n \r\n Tümü\r\n \r\n \r\n\r\n \r\n {loading\r\n ? \r\n \r\n
\r\n : \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { user } = state.userReducer\r\n return { user }\r\n}\r\nexport default connect(mapStateToProps)(OnayBekleyenGonderimler)","import React, {useState, useEffect} from 'react'\r\nimport { connect } from 'react-redux'\r\nimport Paper from '@material-ui/core/Paper'\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\n\r\nimport IleriTarihliGonderimler from './IleriTarihliGonderimler.js'\r\nimport PeriyodikGonderimler from './PeriyodikGonderimler.js'\r\nimport OnayBekleyenGonderimler from './OnayBekleyenGonderimler.js'\r\n\r\n\r\n\r\nconst Gonderimler = props => {\r\n const [ mode, setMode ] = useState('ileritarihligonderimler')\r\n const {user} = props\r\n const {contextSessionId, sessionId} = user\r\n const handleModeChange = (mode) =>{\r\n setMode(mode)\r\n }\r\n\r\n return(\r\n \r\n \r\n \r\n handleModeChange('ileritarihligonderimler')} simple = {mode ==='ileritarihligonderimler' ? false : true} block>İLERİ TARİHLİ GÖNDERİMLER \r\n \r\n \r\n handleModeChange('periyodikgonderimler')} simple = {mode ==='periyodikgonderimler' ? false : true} block>PERİYODİK GÖNDERİMLER \r\n \r\n \r\n handleModeChange('onaybekleyengonderimler')} simple = {mode ==='onaybekleyengonderimler' ? false : true} block>ONAY BEKLEYEN GÖNDERİMLER \r\n \r\n \r\n { mode === 'ileritarihligonderimler' &&\r\n \r\n }\r\n { mode === 'periyodikgonderimler' &&\r\n \r\n }\r\n { mode === 'onaybekleyengonderimler' &&\r\n \r\n }\r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { user } = state.userReducer\r\n return { user }\r\n}\r\nexport default connect(mapStateToProps)(Gonderimler)","import React, { useState } from 'react'\r\nimport { login } from '../../_actions/user'\r\nimport { connect } from 'react-redux'\r\n\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\n\r\n// @material-ui/icons\r\nimport Face from \"@material-ui/icons/Face\";\r\nimport Lock from \"@material-ui/icons/Lock\";\r\nimport { success, canceltwofa } from '../../_actions/twofa'\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport CardHeader from \"components/Card/CardHeader.js\";\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport CardFooter from \"components/Card/CardFooter.js\";\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent\"\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport logo from \"assets/img/logo-isim.svg\";\r\nimport TwofaDialog from \"components/Twofa/TwofaDialog.js\";\r\n\r\nimport styles from \"assets/jss/loginPage.js\";\r\nimport { AppVersion } from 'variables/appVersion';\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst LoginPage = props => {\r\n const [ username, setUsername ] = useState('')\r\n const [ password, setPassword ] = useState('')\r\n const [ localAlert, setLocalAlert ] = useState('')\r\n const { dispatch, userReducer } = props\r\n\r\n const { loading, alert } = userReducer\r\n\r\n const classes = useStyles();\r\n\r\n let passwordInput = React.createRef();\r\n\r\n const handleChange = e => {\r\n const { name, value } = e.target\r\n setLocalAlert('')\r\n if(name === 'username'){\r\n setUsername(value)\r\n }else{\r\n setPassword(value)\r\n }\r\n }\r\n\r\n const handleClick = () => {\r\n if(username === ''){\r\n setLocalAlert('Kullanıcı Adı giriniz.')\r\n return\r\n }\r\n if(password === ''){\r\n setLocalAlert('Şifre giriniz.')\r\n return\r\n }\r\n \r\n const clientUniqueId = AppVersion.clientUniqueId\r\n const clientVersion = AppVersion.APPVERSION\r\n const data = { username, password, clientUniqueId, clientVersion }\r\n dispatch(login(data))\r\n }\r\n \r\n const handleKeyDown = (e) => {\r\n if(e.keyCode === 13){\r\n handleClick()\r\n } \r\n } \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 Giriş Yapınız \r\n \r\n \r\n { alert &&\r\n \r\n }\r\n { localAlert &&\r\n \r\n }\r\n { if(e.keyCode === 13){ passwordInput.current.children[0].focus()} },\r\n name : 'username',\r\n endAdornment: (\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 { loading \r\n ? \r\n : \r\n GİRİŞ YAP\r\n \r\n }\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
{\r\n dispatch(success(data))\r\n }}\r\n canceltwofa = { () => dispatch(canceltwofa())}\r\n userData = {props.twofaReducer.user}\r\n />\r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer, twofaReducer } = state\r\n const { user } = userReducer\r\n return { twofaReducer, user }\r\n}\r\n\r\nexport default connect(mapStateToProps)(LoginPage)\r\n","import {\r\n CircularProgress,\r\n Divider,\r\n MenuItem,\r\n Paper,\r\n Select,\r\n} from \"@material-ui/core\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport ButtonGroup from \"@material-ui/core/ButtonGroup\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport React, { Fragment, useEffect, useState } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { getSmartCapabilitiesDefinitionList } from \"_services/smartCapabilities\";\r\nimport { checkResultResponse } from \"_helpers/notification\";\r\nimport { getMsisdnsFromTcknoInstant } from \"_services/smartCapabilities\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent\";\r\nimport { alertResponseError } from \"_helpers/notification\";\r\nimport { confirmTcknoWithMsisdnInstant } from \"_services/smartCapabilities\";\r\nimport { UserRightVisibility } from \"variables/userRightVisibility\";\r\nimport { downloadFile } from \"_services/smartCapabilities\";\r\nimport { alertErrorText } from \"_helpers/notification\";\r\nimport { simCardChangeQueryInstant } from \"_services/smartCapabilities\";\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\n\r\nconst AnlikSorgula = (props) => {\r\n const {\r\n userReducer,\r\n setUpperMode,\r\n definition,\r\n setDefinition,\r\n definitionList,\r\n mode,\r\n setMode,\r\n masterLoading,\r\n } = props;\r\n const [fileLoad, setFileLoad] = useState(false)\r\n const [packageId, setPackageId] = useState(\"\");\r\n const [tcknInput, setTcknInput] = useState(\"\");\r\n const [gsmInput, setGsmInput] = useState(\"\");\r\n const [trustedDateInput, setTrustedDateInput] = useState(\"\");\r\n const [resultList, setResultList] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n const [filteredList, setFilteredList] = useState([])\r\n const { sessionId, contextSessionId, user } = userReducer.user;\r\n const { userLoginName } = userReducer.user.user.userInfo;\r\n/*\r\n useEffect(() => {\r\n if (definition.services && definition.services.length > 0) {\r\n setMode(definition.services[0]);\r\n }\r\n }, [definition]);\r\n*/\r\n const handleSubmit = () => {\r\n let data = {\r\n sessionId,\r\n contextSessionId,\r\n username: userLoginName,\r\n serviceProvider: definition.serviceProvider,\r\n variantId: definition.variantId,\r\n tcknList: tcknInput.split(/\\r?\\n/),\r\n };\r\n setLoading(true);\r\n getMsisdnsFromTcknoInstant(data)\r\n .then((res) => {\r\n setLoading(false);\r\n if (checkResultResponse(res, null, null, \"Sorguda bir hata oluştu.\")) {\r\n setResultList(res.data.resultList);\r\n setPackageId(res.data.packageId);\r\n }\r\n })\r\n .catch((err) => {\r\n setLoading(false);\r\n alertResponseError(err, \"Sorguda bir hata oluştu.\");\r\n });\r\n };\r\n\r\n const handleCorrection = () => {\r\n let tcknArray = tcknInput.split(/\\r?\\n/);\r\n let gsmArray = gsmInput.split(/\\r?\\n/);\r\n\r\n let pairList = [];\r\n\r\n let len =\r\n tcknArray.length < gsmArray.length ? tcknArray.length : gsmArray.length;\r\n\r\n for (let i = 0; i < len; i++) {\r\n pairList = [...pairList, { tckno: tcknArray[i], msisdn: gsmArray[i] }];\r\n }\r\n\r\n let data = {\r\n sessionId,\r\n contextSessionId,\r\n username: userLoginName,\r\n serviceProvider: definition.serviceProvider,\r\n variantId: definition.variantId,\r\n pairList,\r\n };\r\n setLoading(true);\r\n confirmTcknoWithMsisdnInstant(data)\r\n .then((res) => {\r\n setLoading(false);\r\n if (checkResultResponse(res, null, null, \"Sorguda bir hata oluştu.\")) {\r\n setResultList(res.data.resultList);\r\n setPackageId(res.data.packageId);\r\n }\r\n })\r\n .catch((err) => {\r\n setLoading(false);\r\n alertResponseError(err, \"Sorguda bir hata oluştu.\");\r\n });\r\n };\r\n\r\n const handleSimCardChangeQuery = () => {\r\n let gsmArray = gsmInput.split(/\\r?\\n/);\r\n let trustedDateArray = trustedDateInput.split(/\\r?\\n/);\r\n\r\n let pairList = [];\r\n\r\n let len =\r\n gsmArray.length < trustedDateArray.length ? gsmArray.length : trustedDateArray.length;\r\n\r\n for (let i = 0; i < len; i++) {\r\n pairList = [...pairList, { msisdn: gsmArray[i], dateFormatted: trustedDateArray[i] }];\r\n }\r\n\r\n let data = {\r\n sessionId,\r\n contextSessionId,\r\n username: userLoginName,\r\n serviceProvider: definition.serviceProvider,\r\n variantId: definition.variantId,\r\n pairList,\r\n };\r\n setLoading(true);\r\n simCardChangeQueryInstant(data)\r\n .then((res) => {\r\n setLoading(false);\r\n if (checkResultResponse(res, null, null, \"Sorguda bir hata oluştu.\")) {\r\n setResultList(res.data.resultList);\r\n setPackageId(res.data.packageId);\r\n }\r\n })\r\n .catch((err) => {\r\n setLoading(false);\r\n alertResponseError(err, \"Sorguda bir hata oluştu.\");\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n var filteredListTemp = []\r\n if (mode === 1) {\r\n filteredListTemp = definitionList.filter(item => item.services.indexOf(1) > -1)\r\n } else if (mode === 2) {\r\n filteredListTemp = definitionList.filter(item => item.services.indexOf(2) > -1)\r\n } else if (mode === 9) {\r\n filteredListTemp = definitionList.filter(item => item.services.indexOf(9) > -1)\r\n }\r\n setFilteredList(filteredListTemp)\r\n setDefinition(filteredListTemp.length > 0 ? filteredListTemp[0] : {})\r\n }, [mode])\r\n\r\n const handleExcel = () => {\r\n const data = {\r\n contextSessionId,\r\n sessionId,\r\n username: userLoginName,\r\n packageId,\r\n serviceType: mode\r\n };\r\n setFileLoad(true);\r\n downloadFile(data)\r\n .then((res) => {\r\n setFileLoad(false);\r\n if (res && res.data) {\r\n if (res.data.reportFileUrl) {\r\n const link = document.createElement(\"a\");\r\n link.href = res.data.reportFileUrl;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n } else {\r\n alertErrorText(\r\n \"Liste dosyaya aktarılamadı. İndirme URL'i alınamadı.\"\r\n );\r\n }\r\n } else {\r\n alertErrorText(\"Liste dosyaya aktarılamadı. Yanıt alınamadı.\");\r\n }\r\n })\r\n .catch((err) => {\r\n setFileLoad(false);\r\n alertResponseError(err, \"Liste dosyaya aktarılamadı.\");\r\n });\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {masterLoading ? (\r\n \r\n \r\n
\r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n {user.userRights.serviceRight_SmartCapabilities_sectionVisibility_GsmNumber2TRIdentityNumber === 2 && (\r\n {\r\n setTcknInput(\"\")\r\n setResultList([])\r\n setMode(1);\r\n }}\r\n >\r\n Tckn'den GSM Sorgulama\r\n \r\n )\r\n }\r\n {user.userRights.serviceRight_SmartCapabilities_sectionVisibility_TRIdentityNumberGsmNumberVerification === 2 && (\r\n {\r\n setTcknInput(\"\")\r\n setResultList([])\r\n setMode(2);\r\n }}\r\n >\r\n Tckn-GSM Doğrulama\r\n \r\n )\r\n }\r\n {(user.userRights.serviceRight_SmartCapabilities_sectionVisibility_SimCardChangeQuery === 2 && 1 == 0) && ( // TODO:\r\n {\r\n setTcknInput(\"\")\r\n setResultList([])\r\n setMode(9);\r\n }}\r\n >\r\n SIM Kart Değişim Sorgulama\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n setUpperMode(1)}\r\n >\r\n Dosyadan Sorgula\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Tanım \r\n \r\n \r\n setDefinition(e.target.value)}\r\n >\r\n \r\n \r\n Tanım Seçiniz\r\n
\r\n \r\n {filteredList.map((d) => {\r\n return (\r\n \r\n \r\n
\r\n {d.serviceProviderText}\r\n
\r\n
\r\n Variant Id : {d.variantId}\r\n
\r\n
\r\n Sanal No : {d.virtualMsisdn}\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 {packageId &&\r\n \r\n {fileLoad\r\n ? \r\n : Excel Çıktısı Al \r\n }\r\n \r\n }\r\n \r\n \r\n {(mode === 1 || mode === 2) && (\r\n \r\n setTcknInput(e.target.value)}\r\n style={{ height: \"100%\" }}\r\n fullWidth\r\n />\r\n \r\n )}\r\n {(mode === 2 || mode === 9) && (\r\n \r\n setGsmInput(e.target.value)}\r\n style={{ height: \"100%\" }}\r\n fullWidth\r\n />\r\n \r\n )}\r\n {mode === 9 && (\r\n \r\n setTrustedDateInput(e.target.value)}\r\n style={{ height: \"100%\" }}\r\n fullWidth\r\n />\r\n \r\n )}\r\n \r\n \r\n
\r\n
\r\n {(mode === 1 || mode === 2) &&\r\n \r\n Tckno \r\n \r\n }\r\n \r\n Gsm \r\n \r\n {mode === 9 &&\r\n <>\r\n \r\n Kontrol Baş. Tar. \r\n \r\n \r\n Değişiklik? \r\n \r\n \r\n Son Değişim \r\n \r\n \r\n Opr Id \r\n \r\n >\r\n }\r\n \r\n Durum \r\n \r\n \r\n Açıklama \r\n \r\n \r\n \r\n \r\n {resultList.map((r) => {\r\n return (mode === 1 || mode === 2) ? (\r\n \r\n {r.tckno} \r\n \r\n {(mode === 1 ? (r.msisdnList ? r.msisdnList.toString() : \" - \") : r.msisdn )}\r\n \r\n {(mode === 1 ? r.statusCode : r.status)} \r\n {r.statusDescription} \r\n \r\n ) :\r\n (mode === 9 ? (\r\n \r\n {r.msisdn} \r\n \r\n {r.trustedDateAsString ? r.trustedDateAsString.toString() : \" - \"}\r\n \r\n \r\n {r.isChanged != undefined && r.isChanged != null ? r.isChanged.toString() : \" - \"}\r\n \r\n \r\n {r.lastSimChangeDate ? moment(r.lastSimChangeDate).format('DD.MM.YYYY HH:mm') : \" - \"}\r\n \r\n \r\n {r.oprId ? r.oprId.toString() : \" - \"}\r\n \r\n {r.status} \r\n {r.statusDescription} \r\n \r\n ) : (\r\n \r\n ));\r\n })}\r\n \r\n
\r\n
\r\n \r\n \r\n {loading ? (\r\n \r\n ) : mode === 1 ? (\r\n \r\n GSM Numaralarını Al\r\n \r\n ) : (mode === 2 ? (\r\n \r\n GSM Numaralarını Doğrula\r\n \r\n ) : (mode === 9 && (\r\n \r\n SIM Kart Değişimlerini Kontrol Et\r\n \r\n )))}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { userReducer } = state;\r\n return { userReducer };\r\n};\r\n\r\nexport default connect(mapStateToProps)(AnlikSorgula);\r\n","import { domain } from './domain'\r\nimport axios from 'axios'\r\n\r\nexport const getSmartCapabilitiesDefinitionList = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmartCapabilities/GetSmartCapabilitiesDefinitionList', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getMsisdnsFromTcknoInstant = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmartCapabilities/GetMsisdnsFromTcknoInstant', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\n\r\nexport const confirmTcknoWithMsisdnInstant = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmartCapabilities/ConfirmTcknoWithMsisdnInstant', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const simCardChangeQueryInstant = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmartCapabilities/SimCardChangeQueryInstant', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const uploadFile = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmartCapabilities/UploadFile', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getBulkQueryList = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmartCapabilities/GetBulkQueryList', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const cancelBulkQuery = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmartCapabilities/CancelBulkQuery', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const getBulkQueryResult = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmartCapabilities/GetBulkQueryResult', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}\r\n\r\nexport const downloadFile = (data) => {\r\n const requestOptions = {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-type': 'application/json'\r\n },\r\n data\r\n }\r\n return axios(domain + '/SmartCapabilities/DownloadFile', requestOptions)\r\n .then(res => {\r\n return res\r\n })\r\n}","import {\r\n CircularProgress,\r\n Divider,\r\n MenuItem,\r\n Paper,\r\n Select,\r\n Button,\r\n ButtonGroup,\r\n} from \"@material-ui/core\";\r\nimport CButton from \"components/CustomButtons/Button\";\r\nimport GridContainer from \"components/Grid/GridContainer\";\r\nimport GridItem from \"components/Grid/GridItem\";\r\nimport React, { useState, useEffect } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport {\r\n SortingState,\r\n PagingState,\r\n CustomPaging,\r\n SelectionState,\r\n IntegratedSelection,\r\n} from \"@devexpress/dx-react-grid\";\r\nimport {\r\n Grid,\r\n Table,\r\n TableHeaderRow,\r\n PagingPanel,\r\n TableSelection,\r\n TableColumnResizing,\r\n} from \"@devexpress/dx-react-grid-material-ui\";\r\nimport Swal from \"sweetalert2\";\r\nimport { uploadFile } from \"_services/smartCapabilities\";\r\nimport { checkResultResponse } from \"_helpers/notification\";\r\nimport { getBulkQueryList } from \"_services/smartCapabilities\";\r\nimport { alertResponseError } from \"_helpers/notification\";\r\nimport moment from \"moment\";\r\nimport { cancelBulkQuery } from \"_services/smartCapabilities\";\r\nimport { getBulkQueryResult } from \"_services/smartCapabilities\";\r\nimport { alertErrorText } from \"_helpers/notification\";\r\nimport { UserRightVisibility } from \"variables/userRightVisibility\";\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Checkbox from '@material-ui/core/Checkbox'\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent\";\r\n\r\n\r\nconst tableMessages = {\r\n noData: \"Kayıt bulunamadı.\",\r\n};\r\n\r\nconst DosyadanSorgula = (props) => {\r\n const {\r\n setUpperMode,\r\n definition,\r\n setDefinition,\r\n definitionList,\r\n mode,\r\n setMode,\r\n userReducer,\r\n masterLoading,\r\n } = props;\r\n const [renew, setRenew] = useState(false)\r\n const { sessionId, contextSessionId, user } = userReducer.user;\r\n const { userLoginName } = userReducer.user.user.userInfo;\r\n const [filteredList, setFilteredList] = useState([])\r\n const [loading, setLoading] = useState(false)\r\n const { serviceProvider, serviceId } = definition;\r\n\r\n const [renewInterval, setRenewInterval] = useState(null)\r\n\r\n const [list, setList] = useState([]);\r\n const [fileLoad, setFileLoad] = useState(false);\r\n/*\r\n useEffect(() => {\r\n if (definition.services && definition.services.length > 0) {\r\n setMode(definition.services[0]);\r\n }\r\n }, [definition]);\r\n*/\r\n const serviceTypeResolver = (index) => {\r\n switch (index) {\r\n case 1:\r\n return \"Tckno'dan GSM No Sorgulama\";\r\n case 2:\r\n return \"Tckn-GSM Doğrulama\";\r\n case 9:\r\n return \"SIM Kart Değişim Sorgulama\";\r\n default:\r\n return \"Diğer\";\r\n }\r\n };\r\n\r\n const serviceProviderResolver = (index) => {\r\n switch (index) {\r\n case 1:\r\n return \"Turkcell\";\r\n case 2:\r\n return \"Türk Telekom\";\r\n case 3:\r\n return \"Vodafone\";\r\n default:\r\n return \"Varsayılan\";\r\n }\r\n };\r\n\r\n const resultResolver = (item) => {\r\n switch (item.queryStatusCode) {\r\n case 1:\r\n return (\r\n handleCancelBulkFile(item)}\r\n color=\"rose\"\r\n >\r\n Durdur\r\n \r\n );\r\n case 2:\r\n return (\r\n handleCancelBulkFile(item)}\r\n color=\"rose\"\r\n >\r\n Durdur\r\n \r\n );\r\n case 3:\r\n return (\r\n handleCancelBulkFile(item)}\r\n color=\"rose\"\r\n >\r\n Durdur\r\n \r\n );\r\n case 4:\r\n return (\r\n handleCancelBulkFile(item)}\r\n color=\"rose\"\r\n >\r\n Durdur\r\n \r\n );\r\n case 5:\r\n return (\r\n \r\n handleGetExcellFile(0, item.bulkFileId)}\r\n >\r\n Sonuçlar\r\n \r\n handleGetExcellFile(1, item.bulkFileId)}\r\n >\r\n Geçersizler\r\n \r\n handleGetExcellFile(2, item.bulkFileId)}\r\n >\r\n Mükerrerler\r\n \r\n handleGetExcellFile(3, item.bulkFileId)}\r\n >\r\n Format Hatalılar\r\n \r\n
\r\n );\r\n case 6:\r\n return
;\r\n case 7:\r\n\r\n default:\r\n return
;\r\n }\r\n };\r\n\r\n const handleGetExcellFile = (typeId, bulkFileId) => {\r\n const data = {\r\n contextSessionId,\r\n sessionId,\r\n username: userLoginName,\r\n bulkFileId,\r\n typeId,\r\n };\r\n setFileLoad(true);\r\n getBulkQueryResult(data)\r\n .then((res) => {\r\n setFileLoad(false);\r\n if (res && res.data) {\r\n if (res.data.fileDownloadUrl) {\r\n const link = document.createElement(\"a\");\r\n link.href = res.data.fileDownloadUrl;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n } else {\r\n alertErrorText(\r\n \"Liste dosyaya aktarılamadı. İndirme URL'i alınamadı.\"\r\n );\r\n }\r\n } else {\r\n alertErrorText(\"Liste dosyaya aktarılamadı. Yanıt alınamadı.\");\r\n }\r\n })\r\n .catch((err) => {\r\n setFileLoad(false);\r\n alertResponseError(err, \"Liste dosyaya aktarılamadı.\");\r\n });\r\n };\r\n\r\n const handleCancelBulkFile = (item) => {\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n username: userLoginName,\r\n bulkFileId: item.bulkFileId,\r\n };\r\n cancelBulkQuery(data)\r\n .then((res) => {\r\n if (\r\n checkResultResponse(\r\n res,\r\n null,\r\n null,\r\n \"İstek durdurulurken bir hata oluştu.\"\r\n )\r\n ) {\r\n getBulkFileList();\r\n }\r\n })\r\n .catch((err) => {\r\n alertResponseError(err, \"İstek durdurulurken bir hata oluştu.\");\r\n });\r\n };\r\n\r\n const rows = (list) => {\r\n return list.map((l) => {\r\n return {\r\n insertDate: l.insertDate\r\n ? moment(l.insertDate).format(\"DD.MM.YYYY HH:mm\")\r\n : \"\",\r\n fileName: l.fileName,\r\n serviceProvider: serviceProviderResolver(l.serviceProvider),\r\n serviceType: serviceTypeResolver(l.serviceType),\r\n queryTotalCount: l.queryTotalCount,\r\n queryStatusCode: l.queryStatusDescription,\r\n queryFinishDate: l.queryFinishDate\r\n ? moment(l.queryFinishDate).format(\"DD.MM.YYYY HH:mm\")\r\n : \"\",\r\n result: resultResolver(l),\r\n };\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n var filteredListTemp = []\r\n if (mode === 1) {\r\n filteredListTemp = definitionList.filter(item => item.services.indexOf(1) > -1)\r\n } else if (mode === 2) {\r\n filteredListTemp = definitionList.filter(item => item.services.indexOf(2) > -1)\r\n } else if (mode === 9) {\r\n filteredListTemp = definitionList.filter(item => item.services.indexOf(9) > -1)\r\n }\r\n setFilteredList(filteredListTemp)\r\n setDefinition(filteredListTemp.length > 0 ? filteredListTemp[0] : {})\r\n getBulkFileList();\r\n }, [mode]);\r\n\r\n const [defaultColumnWidths] = useState([\r\n { columnName: \"insertDate\", width: \"auto\", wordWrapEnabled: true },\r\n { columnName: \"fileName\", width: \"auto\", wordWrapEnabled: true },\r\n { columnName: \"serviceProvider\", width: \"auto\", wordWrapEnabled: true },\r\n { columnName: \"serviceType\", width: \"auto\", wordWrapEnabled: true },\r\n { columnName: \"queryTotalCount\", width: \"auto\", wordWrapEnabled: true },\r\n { columnName: \"queryStatusCode\", width: \"auto\", wordWrapEnabled: true },\r\n { columnName: \"queryFinishDate\", width: \"auto\", wordWrapEnabled: true },\r\n { columnName: \"result\", width: \"auto\", wordWrapEnabled: true },\r\n ]);\r\n\r\n const columns = [\r\n { name: \"insertDate\", title: \"Kayıt Tarihi\" },\r\n { name: \"fileName\", title: \"Dosya Adı\" },\r\n { name: \"serviceProvider\", title: \"Operatör\" },\r\n { name: \"serviceType\", title: \"Servis Tipi\" },\r\n { name: \"queryTotalCount\", title: \"Kayıt Sayısı\" },\r\n { name: \"queryStatusCode\", title: \"Sorgu Durumu\" },\r\n { name: \"queryFinishDate\", title: \"Sonuç Tarihi\" },\r\n { name: \"result\", title: \"Sonuç\" },\r\n ];\r\n\r\n useEffect(() => {\r\n return () => {\r\n window.clearInterval(renewInterval)\r\n setRenewInterval(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n window.clearInterval(renewInterval)\r\n if (renew) {\r\n setRenewInterval(window.setInterval(() => getBulkFileList(), 60 * 1000))\r\n }\r\n return () => clearInterval(renewInterval)\r\n }, [renew])\r\n\r\n const getBulkFileList = () => {\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n username: userLoginName,\r\n serviceProvider: 0,\r\n serviceId: 0,\r\n serviceType: mode,\r\n pageSize: 1000,\r\n pageNumber: 1,\r\n };\r\n setLoading(true)\r\n getBulkQueryList(data)\r\n .then((res) => {\r\n setLoading(false)\r\n if (\r\n checkResultResponse(\r\n res,\r\n null,\r\n null,\r\n \"Dosya listesi alınırken bir hata oluştu.\"\r\n )\r\n ) {\r\n setList(res.data.fileList);\r\n }\r\n })\r\n .catch((err) => {\r\n setLoading(false)\r\n alertResponseError(err, \"Dosya listesi alınırken bir hata oluştu.\");\r\n });\r\n };\r\n\r\n const handleSubmitFile = (data) => {\r\n setFileLoad(true)\r\n uploadFile(data)\r\n .then((res) => {\r\n setFileLoad(false)\r\n if (\r\n checkResultResponse(\r\n res,\r\n null,\r\n null,\r\n \"Dosya yüklenirken bir hata oluştu.\"\r\n )\r\n ) {\r\n getBulkFileList();\r\n Swal.fire({\r\n icon: \"success\",\r\n title: \"Dosyanız Yüklendi. Sorgu listesinden durumu görebilir. Sorgusu tamamlandığında sorgu sonucunu indirebilirsiniz.\"\r\n })\r\n }\r\n })\r\n .catch((err) => {\r\n setFileLoad(false)\r\n alertResponseError(err, \"Dosya yüklenirken bir hata oluştu.\");\r\n });\r\n };\r\n\r\n const handleFileUpload = (e) => {\r\n const file = e.target.files[0];\r\n const { name } = file;\r\n const extension = name.split(\".\").pop();\r\n const whiteList = [\"xlsx\", \"xls\", \"txt\"];\r\n const index = whiteList.indexOf(extension);\r\n if (index > -1) {\r\n const fd = new FormData();\r\n fd.append(\"SessionId\", sessionId);\r\n fd.append(\"ContextSessionId\", contextSessionId);\r\n fd.append(\"Filename\", name);\r\n fd.append(\"File\", file, name);\r\n fd.append(\"serviceProvider\", serviceProvider);\r\n fd.append(\"username\", userLoginName);\r\n fd.append(\"serviceId\", serviceId);\r\n fd.append(\"serviceType\", mode);\r\n fd.append(\"password\", \"\");\r\n handleSubmitFile(fd);\r\n } else {\r\n Swal.fire({\r\n icon: \"error\",\r\n title: \"Desteklenmeyen dosya formatı.\",\r\n text: \"XLSX, XLS, TXT uzantılarına sahip dosyaları yükleyebilirsiniz.\",\r\n });\r\n }\r\n };\r\n\r\n return (\r\n \r\n {masterLoading ? (\r\n \r\n \r\n
\r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n {user.userRights.serviceRight_SmartCapabilities_sectionVisibility_GsmNumber2TRIdentityNumber === 2 && (\r\n {\r\n setMode(1);\r\n }}\r\n >\r\n Tckn'den GSM Sorgulama\r\n \r\n )\r\n }\r\n {user.userRights.serviceRight_SmartCapabilities_sectionVisibility_TRIdentityNumberGsmNumberVerification === 2 && (\r\n {\r\n setMode(2);\r\n }}\r\n >\r\n Tckn-GSM Doğrulama\r\n \r\n )\r\n }\r\n {(user.userRights.serviceRight_SmartCapabilities_sectionVisibility_SimCardChangeQuery === 2 && 1 == 0) && ( // TODO:\r\n {\r\n setMode(9);\r\n }}\r\n >\r\n SIM Kart Değişim Sorgulama\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n setUpperMode(0)}\r\n >\r\n Anlık Sorgula\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Tanım \r\n \r\n \r\n setDefinition(e.target.value)}\r\n >\r\n \r\n \r\n Tanım Seçiniz\r\n
\r\n \r\n {filteredList.map((d) => {\r\n return (\r\n \r\n \r\n
\r\n {d.serviceProviderText}\r\n
\r\n
\r\n Variant Id : {d.variantId}\r\n
\r\n
\r\n Sanal No : {d.virtualMsisdn}\r\n
\r\n
\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n {fileLoad\r\n ? \r\n : \r\n Dosya Yükle\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n Sorgu Sonuçları\r\n \r\n \r\n \r\n \r\n \r\n Listeyi Yenile \r\n \r\n \r\n {\r\n window.clearInterval(renewInterval)\r\n setRenew(!renew)\r\n }}\r\n color=\"primary\"\r\n />\r\n }\r\n label=\"1 dakikada bir listeyi yenile\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n {loading ? (\r\n \r\n \r\n
\r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { userReducer } = state;\r\n return { userReducer };\r\n};\r\n\r\nexport default connect(mapStateToProps)(DosyadanSorgula);\r\n","import React, { useState, useEffect } from \"react\";\r\nimport AnlikSorgula from \"./AnlikSorgula\";\r\nimport DosyadanSorgula from \"./DosyadanSorgula\";\r\nimport { getSmartCapabilitiesDefinitionList } from \"_services/smartCapabilities\";\r\nimport { checkResultResponse } from \"_helpers/notification\";\r\nimport { connect } from \"react-redux\";\r\n\r\nconst AkilliYetenek = (props) => {\r\n const { userReducer } = props;\r\n\r\n const [mode, setMode] = useState(0);\r\n const [upperMode, setUpperMode] = useState(0);\r\n const [definitionList, setDefinitionList] = useState([]);\r\n const [definition, setDefinition] = useState({});\r\n const [loading, setLoading] = useState(false);\r\n\r\n const { sessionId, contextSessionId } = userReducer.user;\r\n const { userLoginName } = userReducer.user.user.userInfo;\r\n\r\n useEffect(() => {\r\n const data = { sessionId, contextSessionId, username: userLoginName };\r\n setLoading(true);\r\n getSmartCapabilitiesDefinitionList(data)\r\n .then((res) => {\r\n setLoading(false);\r\n if (\r\n checkResultResponse(\r\n res,\r\n null,\r\n null,\r\n \"Tanımlar alınırken bir hata oluştu.\"\r\n )\r\n ) {\r\n setDefinitionList(res.data.definitions.definitionList);\r\n var definitionTemp = res.data.definitions.definitionList.length > 0\r\n ? res.data.definitions.definitionList[0]\r\n : {}\r\n setDefinition(definitionTemp);\r\n if (definitionTemp.services && definitionTemp.services.length > 0) {\r\n setMode(definitionTemp.services[0]);\r\n }\r\n }\r\n })\r\n .catch((err) => {\r\n setLoading(false);\r\n });\r\n }, [userReducer.user]);\r\n\r\n if (upperMode === 0) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { userReducer } = state;\r\n return { userReducer };\r\n};\r\n\r\nexport default connect(mapStateToProps)(AkilliYetenek);\r\n","const styles = {\r\n definitionCard : {\r\n //height : '60vh',\r\n },\r\n definitionCardBody : { \r\n display : \"flex\",\r\n justifyContent : \"center\"\r\n }\r\n}\r\n\r\nexport default styles","import React, { useState, useEffect } from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { Select, MenuItem } from \"@material-ui/core\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport Checkbox from \"@material-ui/core/Checkbox\";\r\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\r\nimport Switch from \"@material-ui/core/Switch\";\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport styles from \"./smsStyles.js\";\r\nimport iconTurkcell from \"assets/img/operators/icon-16x16-turkcell.png\";\r\nimport iconSuperonline from \"assets/img/operators/icon-16x16-superonline.png\";\r\nimport iconTurkTelekom from \"assets/img/operators/icon-16x16-turktelekom.png\";\r\nimport iconVodafone from \"assets/img/operators/icon-16x16-vodafone.png\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst Step0 = (props) => {\r\n const [brandCodeList, setBrandCodeList] = useState(false);\r\n const [\r\n isRequiredToSetOtherParameters,\r\n setIsRequiredToSetOtherParameters,\r\n ] = useState(false);\r\n const classes = useStyles();\r\n const {\r\n data,\r\n taskName,\r\n setTaskName,\r\n senderObject,\r\n handleSenderSelect,\r\n senderList,\r\n iysMessageTypeList,\r\n iysRecipientTypeList,\r\n iysBrandCodeList,\r\n iysMessageType,\r\n setIysMessageType,\r\n iysRecipientType,\r\n setIysRecipientType,\r\n iysIsAllowedToPassEmptyByUser,\r\n setIysIsAllowedToPassEmptyByUser,\r\n iysBrandCode,\r\n setIysBrandCode,\r\n handleIsRequiredToSetOtherParameters,\r\n } = props;\r\n const loading = props.slloading;\r\n const opResolve = (id) => {\r\n switch (id) {\r\n case 0:\r\n return ( Turkcell )\r\n case 1:\r\n return ( Vodafone )\r\n case 2:\r\n return ( Türk Telekom )\r\n case 3:\r\n return (Asist )\r\n case 4:\r\n return ( Superonline )\r\n case 5:\r\n return ( Türk Telekom Grup )\r\n default:\r\n return ''\r\n }\r\n };\r\n\r\n const senderListOption = (item) => {\r\n return (\r\n \r\n {\" \"}\r\n {item.sender} - Operator: {opResolve(item.operator)}{\" \"}\r\n - Sanal No : {item.virtualMsisdn}\r\n \r\n );\r\n };\r\n\r\n useEffect(() => {\r\n if (iysMessageTypeList && iysMessageType) {\r\n for (let i = 0; i < iysMessageTypeList.length; i++) {\r\n if (\r\n iysMessageTypeList[i].iysMessageType === iysMessageType &&\r\n iysMessageTypeList[i].isRequiredToSetOtherParameters\r\n ) {\r\n setIsRequiredToSetOtherParameters(true);\r\n }\r\n }\r\n }\r\n }, [iysMessageType]);\r\n\r\n // useEffect( () => {\r\n // if(permissionList(senderList).indexOf(3) === -1 ){\r\n // if(permissionList(senderList).indexOf(4) === -1 ){\r\n // handleSetSendType(5)\r\n // }else{\r\n // handleSetSendType(4)\r\n // }\r\n // }else{\r\n // handleSetSendType(3)\r\n // }\r\n\r\n // },[senderList])\r\n\r\n const handleBrandCodeList = () => {\r\n setBrandCodeList(!brandCodeList);\r\n setIysBrandCode(\"\");\r\n };\r\n\r\n const handleIysMessageType = (e) => {\r\n const { value } = e.target;\r\n for (let i = 0; i < iysMessageTypeList.length; i++) {\r\n if (iysMessageTypeList[i].iysMessageType === value) {\r\n setIysMessageType(iysMessageTypeList[i].iysMessageType);\r\n setIsRequiredToSetOtherParameters(\r\n iysMessageTypeList[i].isRequiredToSetOtherParameters\r\n );\r\n handleIsRequiredToSetOtherParameters(\r\n iysMessageTypeList[i].isRequiredToSetOtherParameters\r\n );\r\n }\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Tanımı \r\n \r\n \r\n setTaskName(e.target.value),\r\n }}\r\n />\r\n \r\n \r\n {senderList.length === 1 ? (\r\n \r\n Kullanılacak alfanümerik : {senderList[0].sender}\r\n \r\n ) : (\r\n {\r\n const { value } = e.target;\r\n handleSenderSelect(value);\r\n }}\r\n displayEmpty\r\n fullWidth\r\n inputProps={{ \"aria-label\": \"Kullanılacak alfanumerik\" }}\r\n >\r\n Alfanumerik Seçiniz \r\n {senderList && senderList.map((item) => senderListOption(item))}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n İYS Mesaj Tipi : \r\n \r\n \r\n \r\n {iysMessageTypeList.map((item) => (\r\n \r\n {item.iysMessageTypeDisplay}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n {isRequiredToSetOtherParameters && (\r\n \r\n \r\n \r\n İYS Alıcı Tipi : \r\n \r\n \r\n setIysRecipientType(e.target.value)}\r\n displayEmpty\r\n fullWidth\r\n inputProps={{ \"aria-label\": \"\" }}\r\n >\r\n {iysRecipientTypeList.map((item) => (\r\n \r\n {item.iysRecipientTypeDisplay}\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n )}\r\n {isRequiredToSetOtherParameters && (\r\n \r\n \r\n \r\n İYS Marka Kodu : \r\n \r\n \r\n {brandCodeList ? (\r\n setIysBrandCode(e.target.value)}\r\n displayEmpty\r\n fullWidth\r\n inputProps={{ \"aria-label\": \"\" }}\r\n style={{ marginTop: 45 }}\r\n >\r\n {iysBrandCodeList.map((item) => (\r\n \r\n {item.iysBrandCodeDisplay}\r\n \r\n ))}\r\n \r\n ) : (\r\n setIysBrandCode(e.target.value),\r\n }}\r\n />\r\n )}\r\n \r\n \r\n \r\n }\r\n label=\"Listeden Seç\"\r\n />\r\n \r\n \r\n \r\n )}\r\n \r\n {\r\n setIysIsAllowedToPassEmptyByUser(\r\n !iysIsAllowedToPassEmptyByUser\r\n );\r\n }}\r\n color=\"primary\"\r\n inputProps={{ \"aria-label\": \"secondary checkbox\" }}\r\n />\r\n }\r\n label=\"Toplam İYS verisi 150.000 altında olduğundan İYS bilgilerini boş bırakmak istiyorum.\"\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Step0;\r\n","import React, { useState, useEffect } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { sendingListBuilderCrud } from '../../_services/sms.js'\r\n\r\nimport { sendingListBuilderGetSummary } from '../../_services/sms'\r\n\r\nimport { Typography, ButtonGroup, Button, LinearProgress, Box } from \"@material-ui/core\"\r\nimport Menu from '@material-ui/core/Menu';\r\n\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Accordion from '@material-ui/core/Accordion';\r\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\r\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent\"\r\n\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport AddNumberDialog from \"components/Sms/AddNumberDialog.js\"\r\nimport GroupRecordsDialog from \"components/Sms/GroupRecordsDialog.js\"\r\nimport PersonRecordsDialog from \"components/Sms/PersonRecordsDialog.js\"\r\nimport SavedFilesDialog from \"components/Sms/SavedFilesDialog.js\"\r\nimport SavedFiles from \"components/Sms/SavedFiles.js\"\r\nimport PBGroup from \"components/Sms/PBGroup.js\"\r\nimport PBPeople from \"components/Sms/PBPeople.js\"\r\nimport AddedNumbers from \"components/Sms/AddedNumbers.js\"\r\nimport { setSendingListLoading, clearSendingListLoading, setSendingSummaryLoading, clearSendingSummaryLoading } from '_actions/smsActions.js';\r\nimport { connect } from 'react-redux';\r\nimport { checkResponse } from '_helpers/notification.js';\r\nimport { alertResponseError } from '_helpers/notification.js';\r\nimport { checkResultObjectResponse } from '_helpers/notification.js';\r\nimport { ServiceType } from 'variables/serviceType.js';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: '100%',\r\n },\r\n heading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n flexBasis: '33.33%',\r\n flexShrink: 0,\r\n },\r\n secondaryHeading: {\r\n fontSize: theme.typography.pxToRem(15),\r\n color: theme.palette.text.secondary,\r\n },\r\n}));\r\n\r\nconst Step1 = props => {\r\n const classes = useStyles();\r\n const [loading, setLoading] = useState(false)\r\n const [addedNumberList, setAddedNumberList] = useState([])\r\n const [addedNumberListLength, setAddedNumberListLength] = useState(0)\r\n\r\n const [sourcePBGroupList, setSourcePBGroupList] = useState([])\r\n const [sourcePBGroupListLength, setSourcePBGroupListLength] = useState(0)\r\n\r\n const [sourcePBPersonList, setSourcePBPersonList] = useState([])\r\n const [sourcePBPersonListLength, setSourcePBPersonListLength] = useState(0)\r\n\r\n const [sourceSavedFileList, setSourceSavedFileList] = useState([])\r\n const [sourceSavedFileListLength, setSourceSavedFileListLength] = useState(0)\r\n\r\n const [addedPBGroupList, setAddedPBGroupList] = useState([])\r\n const [addedPBGroupListLength, setAddedPBGroupListLength] = useState(0)\r\n\r\n const [addedPBPersonList, setAddedPBPersonList] = useState([])\r\n const [addedPBPersonListLength, setAddedPBPersonListLength] = useState(0)\r\n\r\n const [addedSavedFileList, setAddedSavedFileList] = useState([])\r\n const [addedSavedFileListLength, setAddedSavedFileListLength] = useState(0)\r\n\r\n const [serviceType] = useState(ServiceType.ID_SERVICETYPE_MMS)\r\n const [ClearBefore] = useState(false)\r\n const [NumberListOperation] = useState(1)\r\n const [PbPersonListOperation] = useState(1)\r\n const [PbGroupListOperation] = useState(1)\r\n const [SavedFilesListOperation] = useState(1)\r\n const [NumberList, SetNumberList] = useState(\"\")\r\n const [PbPersonList, SetPbPersonList] = useState([])\r\n const [PbGroupIdList, SetPbGroupIdList] = useState([])\r\n const [PbSavedFileIdList, SetPbSavedFileIdList] = useState([])\r\n const [SourceListRequest] = useState({\r\n PageSize: 20,\r\n PageNumber: 1,\r\n SearchExpression: null\r\n })\r\n const [DestinationListRequest] = useState({\r\n PageSize: 20,\r\n PageNumber: 1,\r\n SearchExpression: null\r\n })\r\n const { dispatch, grandTotal, setGrandTotal } = props\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n\r\n const [addNumberDialog, setAddNumberDialog] = useState(false)\r\n const [savedFilesDialog, setSavedFilesDialog] = useState(false)\r\n const [personRecordsDialog, setPersonRecordsDialog] = useState(false)\r\n const [groupRecordsDialog, setGroupRecordsDialog] = useState(false)\r\n\r\n const [expanded, setExpanded] = React.useState(false);\r\n\r\n const handleChange = (panel) => (event, isExpanded) => {\r\n setExpanded(isExpanded ? panel : false);\r\n };\r\n\r\n const addNumberDialogToggle = () => {\r\n setAddNumberDialog(!addNumberDialog)\r\n }\r\n const savedFilesDialogToggle = () => {\r\n setSavedFilesDialog(!savedFilesDialog)\r\n }\r\n const personRecordsDialogToggle = () => {\r\n handleClose()\r\n setPersonRecordsDialog(!personRecordsDialog)\r\n }\r\n const groupRecordsDialogToggle = () => {\r\n handleClose()\r\n setGroupRecordsDialog(!groupRecordsDialog)\r\n }\r\n\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const getTotalCount = () => {\r\n const data = { ...props.data, ServiceType: serviceType }\r\n dispatch(setSendingSummaryLoading())\r\n sendingListBuilderGetSummary(data)\r\n .then(res => {\r\n dispatch(clearSendingSummaryLoading())\r\n if (checkResponse(res, dispatch, null, 'Gönderim listesi özeti hesaplanırken bir hata oluştu.')) {\r\n setGrandTotal(res.data.grandTotal)\r\n }\r\n })\r\n .catch(err => {\r\n dispatch(clearSendingSummaryLoading())\r\n alertResponseError(err, 'Gönderim listesi özeti hesaplanırken bir hata oluştu.')\r\n })\r\n };\r\n useEffect(() => {\r\n firstQuery({}, {}, {})\r\n }, [])\r\n\r\n const firstQuery = (q, sq, dq) => {\r\n dispatch(setSendingListLoading())\r\n const data = {\r\n ...props.data,\r\n ServiceType: serviceType,\r\n ClearBefore: false,\r\n KeyFieldType : 2,\r\n NumberListOperation: 1,\r\n PbPersonListOperation: 1,\r\n PbGroupListOperation: 1,\r\n PbCustomFilterPersonListOperation: 1,\r\n SavedFilesListOperation: 1,\r\n NumberList: null,\r\n PbPersonList: null,\r\n PbGroupIdList: null,\r\n PbCustomFilterQueryIdListForPerson: null,\r\n PbCustomFilterQueryForPerson: null,\r\n SavedFileIdList: null,\r\n SavedFileSelectedKeyFieldIdList: null,\r\n ExcludeLust: null,\r\n SourceListRequest: {\r\n PageSize: 20,\r\n PageNumber: 1,\r\n SelectFields: null,\r\n SortFields: {\r\n FieldName: \"Value\",\r\n Direction: \"Ascending\"\r\n },\r\n Includes: null,\r\n SearchExpression: null,\r\n SearchCriterias: null,\r\n SearchQuery: null,\r\n IntersectList: null,\r\n ExceptList: null,\r\n CalculateTotalRecordCount: false,\r\n ...sq\r\n },\r\n DestinationListRequest: {\r\n PageSize: 20,\r\n PageNumber: 1,\r\n SelectFields: null,\r\n SortFields: {\r\n FieldName: \"Value\",\r\n Direction: \"Ascending\"\r\n },\r\n Includes: null,\r\n SearchExpression: null,\r\n SearchCriterias: null,\r\n SearchQuery: null,\r\n IntersectList: null,\r\n ExceptList: null,\r\n CalculateTotalRecordCount: true,\r\n ...dq\r\n },\r\n ReturnSourceListOption: 3,\r\n ReturnDestinationListOption: 3,\r\n ...q\r\n }\r\n sendingListBuilderCrud(data)\r\n .then(res => {\r\n dispatch(clearSendingListLoading())\r\n if (checkResponse(res, dispatch, null, 'Gönderim listesi işleminde bir hata oluştu.')) {\r\n if (res.data.addedNumberList && res.data.addedNumberList.result && res.data.addedNumberList.result.resultCode === 0) {\r\n setAddedNumberList(res.data.addedNumberList.list)\r\n SetNumberList('')\r\n setAddedNumberListLength(res.data.addedNumberList.totalRecordCount)\r\n }\r\n if (res.data.addedPBGroupList && res.data.addedPBGroupList.result && res.data.addedPBGroupList.result.resultCode === 0) {\r\n setAddedPBGroupList(res.data.addedPBGroupList.list)\r\n SetPbGroupIdList([])\r\n setAddedPBGroupListLength(res.data.addedPBGroupList.totalRecordCount)\r\n }\r\n if (res.data.addedPBPersonList && res.data.addedPBPersonList.result && res.data.addedPBPersonList.result.resultCode === 0) {\r\n setAddedPBPersonList(res.data.addedPBPersonList.list)\r\n SetPbPersonList([])\r\n setAddedPBPersonListLength(res.data.addedPBPersonList.totalRecordCount)\r\n }\r\n if (res.data.addedSavedFileList && res.data.addedSavedFileList.result && res.data.addedSavedFileList.result.resultCode === 0) {\r\n setAddedSavedFileList(res.data.addedSavedFileList.list)\r\n SetPbSavedFileIdList([])\r\n setAddedSavedFileListLength(res.data.addedSavedFileList.totalRecordCount)\r\n }\r\n if (res.data.sourcePBGroupList && res.data.sourcePBGroupList.result && res.data.sourcePBGroupList.result.resultCode === 0) {\r\n setSourcePBGroupList(res.data.sourcePBGroupList.list)\r\n setSourcePBGroupListLength(res.data.sourcePBGroupList.totalRecordCount)\r\n }\r\n if (res.data.sourcePBPersonList && res.data.sourcePBPersonList.result && res.data.sourcePBPersonList.result.resultCode === 0) {\r\n setSourcePBPersonList(res.data.sourcePBPersonList.list)\r\n setSourcePBPersonListLength(res.data.sourcePBPersonList.totalRecordCount)\r\n }\r\n if (res.data.sourceSavedFileList && res.data.sourceSavedFileList.result && res.data.sourceSavedFileList.result.resultCode === 0) {\r\n setSourceSavedFileList(res.data.sourceSavedFileList.list)\r\n setSourceSavedFileListLength(res.data.sourceSavedFileList.totalRecordCount)\r\n }\r\n }\r\n })\r\n .then(() => {\r\n getTotalCount()\r\n }\r\n )\r\n .catch(err => {\r\n dispatch(clearSendingListLoading())\r\n alertResponseError(err, 'Gönderim listesi işleminde bir hata oluştu.')\r\n })\r\n }\r\n\r\n const handleNumberListSubmit = (query, desq) => {\r\n dispatch(setSendingListLoading())\r\n const data = {\r\n ...props.data,\r\n NumberListOperation: 6,\r\n PbPersonListOperation: 0,\r\n PbGroupListOperation: 0,\r\n PbCustomFilterPersonListOperation: 0,\r\n SavedFileListOperation: 0,\r\n NumberList,\r\n ServiceType: serviceType,\r\n KeyFieldType : 2 ,\r\n PbPersonList: [],\r\n PbGroupIdList: [],\r\n PbSavedFileIdList: [],\r\n SourceListRequest: null,\r\n DestinationListRequest: {\r\n PageSize: 20,\r\n PageNumber: 1,\r\n SelectFields: null,\r\n SortFields: {\r\n FieldName: \"Value\",\r\n Direction: \"Ascending\"\r\n },\r\n Includes: null,\r\n SearchExpression: null,\r\n SearchCriterias: null,\r\n SearchQuery: null,\r\n IntersectList: null,\r\n ExceptList: null,\r\n CalculateTotalRecordCount: true,\r\n ...desq\r\n },\r\n ReturnSourceListOption: 3,\r\n ReturnDestinationListOption: 3,\r\n ...query\r\n }\r\n sendingListBuilderCrud(data)\r\n .then(res => {\r\n dispatch(clearSendingListLoading())\r\n if (checkResponse(res, dispatch, null, 'Girilen numaralar eklenemedi.')) {\r\n if (res.data.addedNumberList \r\n && res.data.addedNumberList.result \r\n && checkResultObjectResponse(res.data.addedNumberList.result, dispatch, null, 'Girilen numaralar eklenemedi.')) {\r\n setAddedNumberList(res.data.addedNumberList.list)\r\n SetNumberList('')\r\n setAddedNumberListLength(res.data.addedNumberList.totalRecordCount)\r\n setAddNumberDialog(false)\r\n }\r\n }\r\n })\r\n .then(() => {\r\n getTotalCount()\r\n }\r\n )\r\n .catch(err => {\r\n dispatch(clearSendingListLoading())\r\n alertResponseError(err, 'Girilen numaralar eklenemedi.')\r\n })\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim Listesi\r\n \r\n \r\n \r\n \r\n NUMARA GİREREK EKLE \r\n TELEFON REHBERİMDEN EKLE \r\n KAYITLI DOSYALARDAN EKLE \r\n \r\n \r\n \r\n {\r\n props.smsReducer.sendingSummaryLoading\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n Gönderim listesi toplam adeti hesaplanıyor. Lütfen bekleyiniz... \r\n \r\n \r\n \r\n : grandTotal > 0 &&\r\n \r\n \r\n \r\n }\r\n \r\n \r\n }\r\n aria-controls=\"panel4bh-content\"\r\n id=\"panel4bh-header\"\r\n >\r\n Eklenen Numaralar \r\n {props.smsReducer.sendingListLoading\r\n ? \r\n : \r\n {(addedNumberListLength || '0').toLocaleString(\"tr-TR\")} numara eklendi\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n aria-controls=\"panel2bh-content\"\r\n id=\"panel2bh-header\"\r\n >\r\n Rehberden Eklenen Gruplar \r\n {props.smsReducer.sendingListLoading\r\n ? \r\n : \r\n {(addedPBGroupListLength || '0').toLocaleString(\"tr-TR\")} grup eklendi\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n aria-controls=\"panel3bh-content\"\r\n id=\"panel3bh-header\"\r\n >\r\n Rehberden Eklenen Kişiler \r\n {props.smsReducer.sendingListLoading\r\n ? \r\n : \r\n {(addedPBPersonListLength || '0').toLocaleString(\"tr-TR\")} kişi eklendi\r\n \r\n }\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n aria-controls=\"panel1bh-content\"\r\n id=\"panel1bh-header\"\r\n >\r\n Eklenen Kayıtlı Dosyalar \r\n {props.smsReducer.sendingListLoading\r\n ? \r\n : \r\n {(addedSavedFileListLength || '0').toLocaleString(\"tr-TR\")} dosya eklendi\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 setGroupRecordsDialog(false)}\r\n sourcePBGroupList={sourcePBGroupList}\r\n sourcePBGroupListLength={sourcePBGroupListLength}\r\n firstQuery={firstQuery}\r\n PbGroupList={props.PbGroupList || []}\r\n loading={props.smsReducer.sendingListLoading}\r\n />\r\n setPersonRecordsDialog(false)}\r\n sourcePBPersonList={sourcePBPersonList}\r\n sourcePBPersonListLength={sourcePBPersonListLength}\r\n firstQuery={firstQuery}\r\n PbPersonList={props.PbPersonList || []}\r\n loading={props.smsReducer.sendingListLoading}\r\n KeyFieldType={2}\r\n />\r\n setSavedFilesDialog(false)}\r\n sourceSavedFileList={sourceSavedFileList}\r\n sourceSavedFileListLength={sourceSavedFileListLength}\r\n firstQuery={firstQuery}\r\n SavedFileIdList={props.SavedFileIdList || []}\r\n loading={props.smsReducer.sendingListLoading}\r\n KeyFieldType={2}\r\n />\r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { smsReducer } = state\r\n return { smsReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps)(Step1)","import React, { useState, useEffect } from \"react\";\r\n\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport ReactAudioPlayer from \"react-audio-player\";\r\n\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport { serverName } from \"variables/serverName\";\r\n\r\nconst useStyles = makeStyles((theme) => ({}));\r\n\r\nconst AudioDialog = (props) => {\r\n const { open, toggle, loading, handleAudioFileUpload, AudioObject,setAudioObject } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n MMS Arka Plan Sesi \r\n \r\n \r\n {AudioObject.fileUrl && (\r\n <>\r\n \r\n
\r\n {AudioObject.fileName}\r\n \r\n \r\n \r\n \r\n >\r\n )}\r\n \r\n \r\n \r\n {loading ? (\r\n \r\n ) : (\r\n <>\r\n \r\n İptal\r\n \r\n {AudioObject.fileUrl ? (\r\n setAudioObject({})}>\r\n Sesi Kaldır\r\n \r\n ) : (\r\n \r\n Dosya Seç\r\n \r\n \r\n )}\r\n\r\n \r\n Tamam\r\n \r\n >\r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default AudioDialog;\r\n","export const serverName = \"https://p.codec.com.tr\";\r\nexport const emailingApiUrlRoot = \"https://api-emailing.codec.com.tr\";","import React, { useState, useEffect } from \"react\";\r\n\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport KeyboardArrowUpIcon from \"@material-ui/icons/KeyboardArrowUp\";\r\nimport KeyboardArrowDownIcon from \"@material-ui/icons/KeyboardArrowDown\";\r\nimport ClearIcon from \"@material-ui/icons/Clear\";\r\nimport { arrayMoveImmutable } from \"array-move\";\r\nimport {\r\n Checkbox,\r\n FormControlLabel,\r\n MenuItem,\r\n Select,\r\n} from \"@material-ui/core\";\r\nimport AudioDialog from \"./AudioDialog\";\r\nimport { serverName } from \"variables/serverName\";\r\nimport Alert from \"@material-ui/lab/Alert\";\r\nimport { isTemplateExpression } from \"typescript\";\r\n\r\nconst useStyles = makeStyles((theme) => ({}));\r\n\r\nconst FileUploadDialog = (props) => {\r\n const [totalFileSize, setTotalFileSize] = useState(0);\r\n const [showAudioDialog, setShowAudioDialog] = useState(false);\r\n const {\r\n open,\r\n toggle,\r\n loading,\r\n handleTempoFileUpload,\r\n tempoFileObjects,\r\n setTempoFileObjects,\r\n handleDeleteTempoFile,\r\n handleSubmit,\r\n convertSequentialImagesToAnimatedFileType,\r\n setConvertSequentialImagesToAnimatedFileType,\r\n handleAudioFileUpload,\r\n AudioObject,\r\n setAudioObject,\r\n } = props;\r\n const classes = useStyles();\r\n const handleAudioDialogToggle = () => {\r\n setShowAudioDialog(!showAudioDialog);\r\n };\r\n\r\n const humanReadableFileSize = (size) => {\r\n if (tempoFileObjects.length === 0) {\r\n return 0 + \" byte\";\r\n } else {\r\n var i = Math.floor(Math.log(size) / Math.log(1024));\r\n return (\r\n (size / Math.pow(1024, i)).toFixed(2) * 1 +\r\n \" \" +\r\n [\"byte\", \"kB\", \"MB\", \"GB\", \"TB\"][i]\r\n );\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (tempoFileObjects.length > 0) {\r\n let totalSize = 0;\r\n for (let i = 0; i < tempoFileObjects.length; i++) {\r\n totalSize += tempoFileObjects[i].fileSize;\r\n }\r\n\r\n setTotalFileSize(totalSize);\r\n }\r\n }, [tempoFileObjects]);\r\n\r\n return (\r\n \r\n {/* Görsel Yükleyiniz. */}\r\n \r\n {loading ? (\r\n \r\n ) : (\r\n \r\n Yeni Dosya Ekle\r\n \r\n \r\n )}\r\n {totalFileSize / 1024 > 300 &&\r\n MMS toplam boyutu 300 KB'ı geçtiğinde cihazlara iletim başarısı düşmektedir. Toplam dosya boyutunuz 300 KB'ı geçtiğinden içeriğinizde dosya boyutunu düşürecek şekilde düzenlemeler yapınız. Örneğin MMS görselinizin çözünürlüğünü ve/veya kalitesini düşürebilirsiniz. \r\n }\r\n \r\n {tempoFileObjects.map((tem, i) => {\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 {tem.fileName}\r\n
\r\n \r\n {tem.fileTypeDescription}\r\n
\r\n \r\n {humanReadableFileSize(tem.fileSize)}\r\n
\r\n {convertSequentialImagesToAnimatedFileType !==\r\n \"None\" &&\r\n tem.fileType === \"Image\" && (\r\n \r\n {\r\n const { value } = e.target;\r\n setTempoFileObjects([\r\n ...tempoFileObjects.slice(0, i),\r\n { ...tempoFileObjects[i], delay: value },\r\n ...tempoFileObjects.slice(i + 1),\r\n ]);\r\n }}\r\n inputProps={{\r\n type: \"number\",\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 {i === 0 ? (\r\n
\r\n ) : (\r\n {\r\n const newArr = arrayMoveImmutable(\r\n tempoFileObjects,\r\n i,\r\n i - 1\r\n );\r\n setTempoFileObjects(newArr);\r\n }}\r\n >\r\n \r\n \r\n )}\r\n \r\n handleDeleteTempoFile(i)}\r\n />\r\n \r\n {i === tempoFileObjects.length - 1 ? (\r\n
\r\n ) : (\r\n {\r\n const newArr = arrayMoveImmutable(\r\n tempoFileObjects,\r\n i,\r\n i + 1\r\n );\r\n setTempoFileObjects(newArr);\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 if (convertSequentialImagesToAnimatedFileType === \"None\") {\r\n setConvertSequentialImagesToAnimatedFileType(\r\n \"ThreeGPVideo\"\r\n );\r\n } else {\r\n setConvertSequentialImagesToAnimatedFileType(\"None\");\r\n }\r\n }}\r\n color=\"primary\"\r\n />\r\n }\r\n label=\"Sıralı resim dosyalarını animasyona dönüştür.(Dönüşüm sonrası oluşturulan dosyanın boyutu toplam dosya boyutundan farklı olabilir.)\"\r\n />\r\n \r\n {convertSequentialImagesToAnimatedFileType !== \"None\" && (\r\n \r\n \r\n \r\n Animasyona çevrilerek resim dosyalarında kullanılacak format :\r\n \r\n \r\n \r\n setConvertSequentialImagesToAnimatedFileType(\r\n e.target.value\r\n )\r\n }\r\n >\r\n 3GP Video \r\n GIF Animasyonu \r\n \r\n \r\n \r\n \r\n )}\r\n {convertSequentialImagesToAnimatedFileType === \"ThreeGPVideo\" && (\r\n \r\n \r\n \r\n Animasyona kullanılacak arka plan sesi :\r\n \r\n \r\n \r\n \r\n \r\n {AudioObject.fileUrl ? \"Düzenle\" : \"Ekle\"}\r\n \r\n \r\n {AudioObject.fileUrl && (\r\n setAudioObject({})}>\r\n Sil \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n \r\n \r\n \r\n {`Toplam ${tempoFileObjects.length} adet dosya eklendi`}\r\n \r\n \r\n {`Toplam ${humanReadableFileSize(totalFileSize)}`}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {loading ? (\r\n \r\n ) : (\r\n <>\r\n \r\n İptal\r\n \r\n \r\n Tamam\r\n \r\n >\r\n )}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FileUploadDialog;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { sendingListBuilderGetSummary } from \"../../_services/sms\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\n\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport { connect } from \"react-redux\";\r\nimport {\r\n setSendingSummaryLoading,\r\n clearSendingSummaryLoading,\r\n} from \"_actions/smsActions\";\r\nimport { checkResponse } from \"_helpers/notification\";\r\nimport { alertResponseError } from \"_helpers/notification\";\r\nimport FileUploadDialog from \"./Dialogs/FileUploadDialog\";\r\nimport { uploadTemporaryMmsFile } from \"_services/mms\";\r\nimport Swal from \"sweetalert2\";\r\nimport { deleteTemporaryMmsFiles } from \"_services/mms\";\r\nimport { saveMmsFilesForSending } from \"_services/mms\";\r\nimport Alert from \"@material-ui/lab/Alert\";\r\nimport { checkResultResponse } from \"_helpers/notification\";\r\nimport moment from \"moment\";\r\nimport { ServiceType } from \"variables/serviceType\";\r\n\r\nconst Step2 = (props) => {\r\n const { messageSubject, setMessageSubject, tempoFileObjects, setTempoFileObjects } = props;\r\n\r\n const [_isMounted, _setIsMounted] = useState(false);\r\n const [loading, setLoading] = useState(false);\r\n const [showFileUploadDialog, setShowFileUploadDialogToggle] = useState(false);\r\n const [_cursor, _setCursor] = useState(0);\r\n const [AudioObject, setAudioObject] = useState({});\r\n const [\r\n convertSequentialImagesToAnimatedFileType,\r\n setConvertSequentialImagesToAnimatedFileType,\r\n ] = useState(\"None\");\r\n const { sessionId, contextSessionId } = props.data;\r\n const {\r\n dispatch,\r\n user,\r\n taskId,\r\n setTaskId,\r\n previewUrl,\r\n setPreviewUrl,\r\n dynamicMessageFields,\r\n setDynamicMessageFields,\r\n } = props;\r\n\r\n const handleFileUploadDialogToggle = () => {\r\n setShowFileUploadDialogToggle(!showFileUploadDialog);\r\n };\r\n\r\n useEffect(() => {\r\n _setIsMounted(true);\r\n dispatch(setSendingSummaryLoading());\r\n setLoading(true);\r\n const data = { ...props.data, ServiceType: ServiceType.ID_SERVICETYPE_MMS };\r\n sendingListBuilderGetSummary(data)\r\n .then((res) => {\r\n dispatch(clearSendingSummaryLoading());\r\n setLoading(false);\r\n if (\r\n checkResponse(\r\n res,\r\n dispatch,\r\n null,\r\n \"Gönderim listesi özeti hesaplanırken bir hata oluştu.\"\r\n )\r\n ) {\r\n setDynamicMessageFields(res.data.usableDynamicMessageFields);\r\n }\r\n })\r\n .catch((err) => {\r\n dispatch(clearSendingSummaryLoading());\r\n setLoading(false);\r\n alertResponseError(\r\n err,\r\n \"Gönderim listesi özeti hesaplanırken bir hata oluştu.\"\r\n );\r\n });\r\n return () => _setIsMounted(false);\r\n }, []);\r\n\r\n const fixChar = (char) => {\r\n switch (char) {\r\n case \"ç\":\r\n return \"c\";\r\n case \"Ç\":\r\n return \"C\";\r\n case \"ğ\":\r\n return \"g\";\r\n case \"Ğ\":\r\n return \"G\";\r\n case \"ı\":\r\n return \"i\";\r\n case \"İ\":\r\n return \"I\";\r\n case \"ö\":\r\n return \"o\";\r\n case \"Ö\":\r\n return \"O\";\r\n case \"ş\":\r\n return \"s\";\r\n case \"Ş\":\r\n return \"S\";\r\n case \"ü\":\r\n return \"u\";\r\n case \"Ü\":\r\n return \"U\";\r\n default:\r\n return char;\r\n }\r\n };\r\n\r\n const fixMessage = (m) => {\r\n var message = m.split(\"\");\r\n var _skip = false;\r\n var fixedMessage = \"\";\r\n var closureIndex = -1;\r\n var tempFieldName = null;\r\n for (let i = 0; i < message.length; i++) {\r\n if (m[i] === \"[\") {\r\n closureIndex = m.indexOf(\"]\", i);\r\n if (closureIndex >= 0) {\r\n tempFieldName = m.substr(i + 1, closureIndex - i - 1);\r\n if (\r\n dynamicMessageFields &&\r\n dynamicMessageFields.length > 0 &&\r\n dynamicMessageFields.filter(\r\n (f) => f.fieldDisplayName === tempFieldName\r\n ).length > 0\r\n ) {\r\n _skip = true;\r\n }\r\n }\r\n }\r\n if (m[i] === \"]\") {\r\n _skip = false;\r\n }\r\n if (_skip) {\r\n fixedMessage += m[i];\r\n } else {\r\n fixedMessage += fixChar(m[i]);\r\n }\r\n }\r\n return fixedMessage;\r\n };\r\n\r\n const handleSubject = (value) => {\r\n setMessageSubject(fixMessage(value));\r\n };\r\n\r\n const handleSubmitTempoFile = (data) => {\r\n setLoading(true);\r\n uploadTemporaryMmsFile(data)\r\n .then((res) => {\r\n setLoading(false);\r\n if (checkResultResponse(\r\n res,\r\n dispatch,\r\n null,\r\n \"Dosya yüklenirken bir hata oluştu.\"\r\n )) {\r\n setTempoFileObjects([...tempoFileObjects, { ...res.data, delay: 3 }]);\r\n } else {\r\n alertResponseError({ message: res.data.resultDescription }, \"Dosya yüklenirken bir hata oluştu.\");\r\n }\r\n })\r\n .catch((err) => {\r\n setLoading(false);\r\n alertResponseError(err, \"Dosya yüklenirken bir hata oluştu!\");\r\n });\r\n };\r\n\r\n const handleSubmitAudioFile = (data) => {\r\n setLoading(true);\r\n uploadTemporaryMmsFile(data)\r\n .then((res) => {\r\n setLoading(false);\r\n if (checkResultResponse(\r\n res,\r\n dispatch,\r\n null,\r\n \"Dosya yüklenirken bir hata oluştu.\"\r\n )) {\r\n setAudioObject(res.data);\r\n } else {\r\n alertResponseError(null, \"Dosya yüklenirken bir hata oluştu.\");\r\n }\r\n })\r\n .catch((err) => {\r\n setLoading(false);\r\n alertResponseError(err, \"Dosya yüklenirken bir hata oluştu.\");\r\n });\r\n };\r\n\r\n const handleTempoFileUpload = (e) => {\r\n const file = e.target.files[0];\r\n const { name } = file;\r\n const extension = name.split(\".\").pop();\r\n // const whiteList = [\"xlsx\", \"xls\", \"txt\"];\r\n // const index = whiteList.indexOf(extension);\r\n // if (index > -1) {\r\n const fd = new FormData();\r\n fd.append(\"SessionId\", props.data.sessionId);\r\n fd.append(\"ContextSessionId\", props.data.contextSessionId);\r\n fd.append(\"Filename\", name);\r\n fd.append(\"File\", file, name);\r\n fd.append(\"userId\", user.userInfo.userId);\r\n fd.append(\"customerId\", user.customerInfo.customerId);\r\n handleSubmitTempoFile(fd);\r\n // } else {\r\n // Swal.fire({\r\n // icon: \"error\",\r\n // title: \"Desteklenmeyen dosya formatı.\",\r\n // text: \"XLSX, XLS, TXT uzantılarına sahip dosyaları yükleyebilirsiniz.\",\r\n // });\r\n // }\r\n };\r\n\r\n const handleAudioFileUpload = (e) => {\r\n const file = e.target.files[0];\r\n const { name } = file;\r\n const extension = name.split(\".\").pop();\r\n // const whiteList = [\"xlsx\", \"xls\", \"txt\"];\r\n // const index = whiteList.indexOf(extension);\r\n // if (index > -1) {\r\n const fd = new FormData();\r\n fd.append(\"SessionId\", props.data.sessionId);\r\n fd.append(\"ContextSessionId\", props.data.contextSessionId);\r\n fd.append(\"Filename\", name);\r\n fd.append(\"File\", file, name);\r\n fd.append(\"userId\", user.userInfo.userId);\r\n fd.append(\"customerId\", user.customerInfo.customerId);\r\n handleSubmitAudioFile(fd);\r\n };\r\n\r\n const handleDeleteTempoFile = (i) => {\r\n const file = tempoFileObjects[i];\r\n const { fileName } = file;\r\n const data = { sessionId, contextSessionId, uploadedFileNames: [fileName] };\r\n setLoading(true);\r\n deleteTemporaryMmsFiles(data)\r\n .then((res) => {\r\n setLoading(false);\r\n if (res.data.resultCode === 0) {\r\n setTempoFileObjects([\r\n ...tempoFileObjects.slice(0, i),\r\n ...tempoFileObjects.slice(i + 1),\r\n ]);\r\n } else {\r\n Swal.fire({\r\n icon: \"error\",\r\n title: \"Dosya silinirken bir hata oluştu.\",\r\n });\r\n }\r\n })\r\n .catch((err) => {\r\n setLoading(false);\r\n Swal.fire({\r\n icon: \"error\",\r\n title: \"Dosya silinirken bir hata oluştu.\",\r\n });\r\n });\r\n };\r\n\r\n const handleSubmit = () => {\r\n let mmsFileItems = tempoFileObjects.map((f, index) => {\r\n return {\r\n index,\r\n uploadedFilename: f.uploadedFilename,\r\n fileName: f.fileName,\r\n fileSize: f.fileSize,\r\n fileUrl: f.fileUrl,\r\n fileExtension: f.fileExtension,\r\n fileType: f.fileType,\r\n fileTypeDescription: f.fileTypeDescription,\r\n fileTypeImage: f.fileTypeImage,\r\n previewFileUrl: f.previewFileUrl,\r\n delay: f.delay,\r\n designXmlForDynamicContent: \"\",\r\n };\r\n });\r\n const data = {\r\n sessionId,\r\n contextSessionId,\r\n mmsFileItems,\r\n convertSequentialImagesToAnimatedFileType,\r\n taskId,\r\n videoEncoderArguments: {\r\n FramePerSecond: 1,\r\n VideoBitrate: 1024,\r\n VideoResolution: \"352x288\",\r\n VideoCodec: \"Default\",\r\n VideoPreset: \"\",\r\n AudioFilePath: AudioObject.fileUrl,\r\n AudioSamplingFrequency: 8000,\r\n AudioChannel: 1,\r\n AudioBitrate: 12.2,\r\n AudioCodec: \"Default\",\r\n TotalVideoTime: -1,\r\n },\r\n };\r\n setLoading(true);\r\n saveMmsFilesForSending(data)\r\n .then((res) => {\r\n setLoading(false);\r\n handleFileUploadDialogToggle();\r\n if (\r\n checkResponse(\r\n res,\r\n dispatch,\r\n null,\r\n \"MMS oluşturulurken bir hata oluştu.\"\r\n )\r\n ) {\r\n setTaskId(res.data.taskId);\r\n setPreviewUrl(res.data.previewUrl + \"?\" + moment().unix());\r\n }\r\n })\r\n .catch((err) => {\r\n setLoading(false);\r\n handleFileUploadDialogToggle();\r\n alertResponseError(err, \"MMS oluşturulurken bir hata oluştu.\");\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n MMS İçerik \r\n \r\n \r\n handleSubject(e.target.value)}\r\n label=\"MMS Konusu\"\r\n variant=\"outlined\"\r\n placeholder=\"Lütfen mesaj konusunu giriniz.\"\r\n fullWidth\r\n inputProps={{\r\n maxLength: 100,\r\n }}\r\n helperText={`Kullanılabilir karakter sayısı : ${messageSubject.length + \"/\" + 100\r\n }`}\r\n />\r\n \r\n \r\n \r\n \r\n {previewUrl === \"\" ? (\r\n <>\r\n
Görsel oluşturulmamış. \r\n
\r\n Görsel oluşturmak için tıklayınız.\r\n \r\n >\r\n\r\n ) : (\r\n <>\r\n
\r\n
\r\n Görseli düzenlemek için\r\n tıklayınız.\r\n \r\n >\r\n )}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { smsReducer } = state;\r\n return { smsReducer };\r\n};\r\n\r\nexport default connect(mapStateToProps)(Step2);\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport clsx from \"clsx\";\r\nimport Radio from \"@material-ui/core/Radio\";\r\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\r\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport { DateTimePicker } from \"@material-ui/pickers\";\r\n\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Card from \"components/Card/Card.js\";\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport { Typography, ButtonGroup, Button } from \"@material-ui/core\";\r\nimport moment from \"moment\";\r\nimport \"moment/locale/tr\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n container: {\r\n display: \"flex\",\r\n flexWrap: \"wrap\",\r\n },\r\n textField: {\r\n marginLeft: theme.spacing(1),\r\n marginRight: theme.spacing(1),\r\n width: 200,\r\n },\r\n radioButtons: {\r\n border: \"1px solid lightgray\",\r\n borderRadius: 10,\r\n padding: 10,\r\n marginTop: 50,\r\n },\r\n button: {\r\n marginTop: 30,\r\n marginBottom: 30,\r\n },\r\n root: {\r\n \"&:hover\": {\r\n backgroundColor: \"transparent\",\r\n },\r\n },\r\n icon: {\r\n borderRadius: \"50%\",\r\n width: 16,\r\n height: 16,\r\n boxShadow:\r\n \"inset 0 0 0 1px rgba(16,22,26,.2), inset 0 -1px 0 rgba(16,22,26,.1)\",\r\n backgroundColor: \"#f5f8fa\",\r\n backgroundImage:\r\n \"linear-gradient(180deg,hsla(0,0%,100%,.8),hsla(0,0%,100%,0))\",\r\n \"$root.Mui-focusVisible &\": {\r\n outline: \"2px auto rgba(19,124,189,.6)\",\r\n outlineOffset: 2,\r\n },\r\n \"input:hover ~ &\": {\r\n backgroundColor: \"#ebf1f5\",\r\n },\r\n \"input:disabled ~ &\": {\r\n boxShadow: \"none\",\r\n background: \"rgba(206,217,224,.5)\",\r\n },\r\n },\r\n checkedIcon: {\r\n backgroundColor: \"#3c54a5\",\r\n backgroundImage:\r\n \"linear-gradient(180deg,hsla(0,0%,100%,.1),hsla(0,0%,100%,0))\",\r\n \"&:before\": {\r\n display: \"block\",\r\n width: 16,\r\n height: 16,\r\n backgroundImage: \"radial-gradient(#fff,#fff 28%,transparent 32%)\",\r\n content: '\"\"',\r\n },\r\n \"input:hover ~ &\": {\r\n backgroundColor: \"#3c54a5\",\r\n },\r\n },\r\n}));\r\n\r\nconst Step3 = (props) => {\r\n const {\r\n SendingTimeType,\r\n SetSendingTimeType,\r\n SendDate,\r\n SetSendDate,\r\n AbortDate,\r\n SetAbortDate,\r\n setSendingTimeOptions,\r\n SetSendLabel,\r\n value,\r\n setValue\r\n } = props;\r\n\r\n const classes = useStyles();\r\n\r\n const StyledRadio = (props) => {\r\n return (\r\n \r\n }\r\n icon={ }\r\n {...props}\r\n />\r\n );\r\n };\r\n\r\n const _default = {\r\n sendSeperatedPeriodicallyOptions: null,\r\n expirationTimeOptions: null,\r\n };\r\n\r\n const handleChange = (e) => {\r\n const { value } = e.target;\r\n if (value === \"1\") {\r\n SetAbortDate(null);\r\n setSendingTimeOptions(_default);\r\n SetSendLabel(\r\n \"Bitiş zamanı belirtmeden maksimum geçerlilik süresi geçerli olsun (Maksimum 24 saat)\"\r\n );\r\n }\r\n if (value === \"2\") {\r\n var createdAbortDate = moment().add(1, 'days');\r\n SetAbortDate(createdAbortDate.format(\"YYYY-MM-DDTHH:mm\"));\r\n SetSendLabel(\r\n createdAbortDate.format(\"DD.MM.YYYYY HH:mm\") + \" tarih ve saate kadar tamamlanmamış gönderiler iptal edilecek.\"\r\n );\r\n }\r\n setValue(value);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Zamanlama \r\n \r\n \r\n \r\n \r\n {\r\n SetSendDate(moment().format(\"YYYY-MM-DDTHH:mm\"));\r\n SetSendingTimeType(\"Instantly\");\r\n }}\r\n color={\r\n SendingTimeType === \"Instantly\" ? \"secondary\" : \"primary\"\r\n }\r\n variant={\r\n SendingTimeType === \"Instantly\" ? \"contained\" : \"outlined\"\r\n }\r\n >\r\n Hemen Gönder\r\n \r\n SetSendingTimeType(\"ExactDateTime\")}\r\n color={\r\n SendingTimeType === \"ExactDateTime\"\r\n ? \"secondary\"\r\n : \"primary\"\r\n }\r\n variant={\r\n SendingTimeType === \"ExactDateTime\"\r\n ? \"contained\"\r\n : \"outlined\"\r\n }\r\n >\r\n İlerİ Tarİh ve Saatte Gönder\r\n \r\n \r\n \r\n {SendingTimeType === \"ExactDateTime\" && (\r\n \r\n \r\n SetSendDate(moment(date).format(\"YYYY-MM-DDTHH:mm\"))\r\n }\r\n format=\"DD.MM.YYYY HH:mm\"\r\n okLabel=\"TAMAM\"\r\n cancelLabel=\"KAPAT\"\r\n />\r\n \r\n )}\r\n \r\n \r\n \r\n }\r\n label=\"Bitiş zamanı belirtmeden maksimum geçerlilik süresi geçerli olsun (Maksimum 24 saat)\"\r\n />\r\n }\r\n label=\"Belirli tarih ve saate kadar tamamlanmamış gönderiler iptal edilsin.\"\r\n />\r\n {value === \"2\" && (\r\n \r\n {\r\n SetAbortDate(\r\n moment(date).format(\"YYYY-MM-DDTHH:mm\")\r\n )\r\n SetSendLabel(\r\n moment(date).format(\"DD.MM.YYYYY HH:mm\") + \" tarih ve saate kadar tamamlanmamış gönderiler iptal edilecek.\"\r\n );\r\n }\r\n }\r\n format=\"DD.MM.YYYY HH:mm\"\r\n okLabel=\"TAMAM\"\r\n cancelLabel=\"KAPAT\"\r\n />\r\n
\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Step3;\r\n","import React from 'react'\r\nimport Typography from '@material-ui/core/Typography'\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n// core components\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport Card from \"components/Card/Card.js\";\r\n\r\nimport CardBody from \"components/Card/CardBody.js\";\r\n\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\n\r\nconst Step0 = props => {\r\n const { summary, handleSendMMS, summaryLoads, MMSLoads } = props\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {summaryLoads\r\n ? \r\n \r\n
\r\n : \r\n \r\n \r\n Gönderim Özeti\r\n \r\n \r\n \r\n \r\n Gönderim Adı : {props.taskName} \r\n \r\n \r\n \r\n \r\n Gönderim Zamanlaması : {props.SendingTimeType === \"Instantly\" ? \"Hemen Gönderilecek\" : \"Belirli tarih ve saatte gönderilecek - \" + moment(props.SendDate).format(\"DD.MM.YYYY HH:mm\")} \r\n \r\n \r\n \r\n \r\n Gönderim Durdurma Zamanı : {props.SendLabel} \r\n \r\n \r\n \r\n \r\n Kullanılan Gönderen Başlığı : {props.sender} \r\n \r\n \r\n \r\n \r\n Sanal No : {props.operatorDisplayName} - {props.virtualNumber} \r\n \r\n \r\n \r\n \r\n Mesaj Tipi : {props.iysMessageType} \r\n \r\n \r\n {props.iysMessageType !== \"BILGILENDIRME\" &&\r\n <>\r\n \r\n \r\n Alıcı Tipi : {props.iysRecipientType} \r\n \r\n \r\n \r\n \r\n İYS Marka Kodu : {props.iysBrandCode} \r\n \r\n \r\n >\r\n }\r\n\r\n \r\n \r\n Gönderim Yapılacak Mesaj Adedi : {(summary.grandTotalWithoutLimits || '0').toLocaleString(\"tr-TR\")} \r\n \r\n \r\n \r\n \r\n Mesaj Konusu : {props.messageSubject} \r\n \r\n \r\n \r\n {MMSLoads\r\n ? \r\n \r\n
\r\n :\r\n \r\n \r\n Kontrol Et ve Onayla\r\n \r\n
\r\n }\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default Step0","import React, { useState, useEffect } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { canceltwofasms, closeTwofa } from \"../../_actions/twofa\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Stepper from \"@material-ui/core/Stepper\";\r\nimport Step from \"@material-ui/core/Step\";\r\nimport StepButton from \"@material-ui/core/StepButton\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Step0 from \"./Step0.js\";\r\nimport Step1 from \"./Step1.js\";\r\nimport Step2 from \"./Step2.js\";\r\nimport Step3 from \"./Step3.js\";\r\nimport Step4 from \"./Step4.js\";\r\nimport Swal from \"sweetalert2\";\r\nimport AdvancedTimeDialog from \"components/Sms/AdvancedTimeDialog.js\";\r\nimport EtkDialog from \"components/Sms/EtkDialog\";\r\nimport TwofaDialog from \"components/Twofa/TwofaDialog.js\";\r\nimport { alertResponseError } from \"_helpers/notification.js\";\r\nimport { checkResponse } from \"_helpers/notification.js\";\r\nimport { checkResultResponse } from \"_helpers/notification.js\";\r\nimport {\r\n getMMSSenderWithDetailList,\r\n sendingListClear,\r\n getIysMessagingParameterList,\r\n} from \"_services/mms.js\";\r\nimport moment from \"moment\";\r\nimport { updateSendMmsInfoAndGetSummary } from \"_services/mms.js\";\r\nimport { sendMms } from \"_services/mms.js\";\r\nimport { sendingListBuilderCopy } from \"_services/mms\";\r\nimport iconTurkcell from \"assets/img/operators/icon-16x16-turkcell.png\";\r\nimport iconSuperonline from \"assets/img/operators/icon-16x16-superonline.png\";\r\nimport iconTurkTelekom from \"assets/img/operators/icon-16x16-turktelekom.png\";\r\nimport iconVodafone from \"assets/img/operators/icon-16x16-vodafone.png\";\r\nimport { ServiceType } from \"variables/serviceType\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: \"100%\",\r\n },\r\n button: {\r\n marginRight: theme.spacing(1),\r\n },\r\n instructions: {\r\n marginTop: theme.spacing(1),\r\n marginBottom: theme.spacing(1),\r\n },\r\n}));\r\n\r\nconst getSteps = () => {\r\n return [\"Tanım\", \"Liste\", \"İçerik\", \"Zamanlama\", \"Özet\"];\r\n};\r\n\r\nconst MMSGonderim = (props) => {\r\n const {\r\n defaultKeyFieldType,\r\n PbPersonList,\r\n PbGroupList,\r\n SavedFileIdList,\r\n } = props.location;\r\n\r\n const classes = useStyles();\r\n const [activeStep, setActiveStep] = useState(0);\r\n const [smsCheck, setSmsCheck] = useState(false);\r\n\r\n //loads\r\n const [summaryLoads, setSummaryLoads] = useState(\"\");\r\n const [MMSLoads, setMMSLoads] = useState(\"\");\r\n\r\n //step0\r\n const [taskName, setTaskName] = useState(\"\");\r\n const [sender, setSender] = useState(\"\");\r\n const [senderObject, setSenderObject] = useState(\"\");\r\n const [variantId, setVariantId] = useState(\"\");\r\n const [virtualNumber, setVirtualNumber] = useState(\"\");\r\n const [cspsId, setCspsId] = useState(\"\");\r\n const [operatorName, setOperatorName] = useState(\"\");\r\n const [operatorDisplayName, setOperatorDisplayName] = useState(\"\");\r\n // IYS\r\n const [iysMessageType, setIysMessageType] = useState(\"\");\r\n const [iysRecipientType, setIysRecipientType] = useState(\"\");\r\n const [iysBrandCode, setIysBrandCode] = useState(\"\");\r\n const [\r\n iysIsAllowedToPassEmptyByUser,\r\n setIysIsAllowedToPassEmptyByUser,\r\n ] = useState(false);\r\n\r\n const [iysMessageTypeList, setIysMessageTypeList] = useState([]);\r\n const [iysRecipientTypeList, setIysRecipientTypeList] = useState([]);\r\n const [iysBrandCodeList, setIysBrandCodeList] = useState([]);\r\n //old\r\n const [slloading, setSlloading] = useState(false);\r\n const [senderList, setSenderList] = useState([]);\r\n const [sendDate, setSendDate] = useState(moment().toDate());\r\n const [sendingTimeType, setSendingTimeType] = useState(0);\r\n\r\n const [canUseTurkishCharacters, setCanUseTurkishCharacters] = useState(false);\r\n const [message, setMessage] = useState(\"\");\r\n const [sendingLimit, setSendingLimit] = useState(-1);\r\n const [paymentLimit, setPaymentLimit] = useState(-1);\r\n const [EtkAgreementAnswer, SetEtkAgreementAnswer] = useState(null);\r\n const [smsCharacterset, setSmsCharacterset] = useState(0);\r\n const [dynamicMessageFields, setDynamicMessageFields] = useState([]);\r\n\r\n const [SenderInfo, SetSenderInfo] = useState(\"\");\r\n\r\n //Step 1\r\n const [defaultPbPersonList, setDefaultPbPersonList] = useState([]);\r\n const [defaultPbGroupList, setDefaultPbGroupList] = useState([]);\r\n const [defaultSavedFileIdList, setDefaultSavedFileIdList] = useState([]);\r\n const [grandTotal, setGrandTotal] = useState(0)\r\n\r\n //Step 2\r\n const [messageSubject, setMessageSubject] = useState(\"\");\r\n const [SendLabel, SetSendLabel] = useState(\r\n \"Bitiş zamanı belirtmeden maksimum geçerlilik süresi geçerli olsun (Maksimum 24 saat)\"\r\n );\r\n const [taskId, setTaskId] = useState(null);\r\n const [previewUrl, setPreviewUrl] = useState(\"\");\r\n const [tempoFileObjects, setTempoFileObjects] = useState([]);\r\n\r\n // Step 3\r\n const [SendingTimeType, SetSendingTimeType] = useState(\"Instantly\");\r\n const [SendDate, SetSendDate] = useState(moment().toDate());\r\n const [AbortDate, SetAbortDate] = useState(null);\r\n const [sendingTimeOptions, setSendingTimeOptions] = useState({\r\n sendSeperatedPeriodicallyOptions: null,\r\n expirationTimeOptions: null,\r\n });\r\n const [value, setValue] = useState(\"1\");\r\n\r\n const [advancedTimeDialog, setAdvancedTimeDialog] = useState(false);\r\n const [isDynamic, setIsDynamic] = useState(false);\r\n const [dynamicFieldNames, setDynamicFieldNames] = useState([]);\r\n const [\r\n dynamicFieldNamesNotIncludes,\r\n setDynamicFieldNamesNotIncludes,\r\n ] = useState([]);\r\n const [KeyFieldType] = useState(2);\r\n\r\n const [\r\n isRequiredToSetOtherParameters,\r\n setIsRequiredToSetOtherParameters,\r\n ] = useState(false);\r\n const steps = getSteps();\r\n const { dispatch } = props;\r\n const { sessionId, contextSessionId, user } = props.userReducer.user;\r\n\r\n const AuthData = { sessionId, contextSessionId };\r\n\r\n useEffect(() => {\r\n const data = { sessionId, contextSessionId };\r\n getIysMessagingParameterList(data)\r\n .then((res) => {\r\n if (\r\n checkResponse(\r\n res,\r\n dispatch,\r\n null,\r\n \"İYS mesajlaşma parametre listeleri alınamadı.\"\r\n )\r\n ) {\r\n setIysMessageTypeList(res.data.iysMessageTypeList);\r\n setIysRecipientTypeList(res.data.iysRecipientTypeList);\r\n setIysBrandCodeList(res.data.iysBrandCodeList);\r\n }\r\n })\r\n .catch((err) => {\r\n alertResponseError(\r\n err,\r\n \"İYS mesajlaşma parametre listeleri alınamadı.\"\r\n );\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (iysMessageTypeList.length > 0) {\r\n for (let i = 0; i < iysMessageTypeList.length; i++) {\r\n if (iysMessageTypeList[i].isDefault) {\r\n setIysMessageType(iysMessageTypeList[i].iysMessageType);\r\n setIsRequiredToSetOtherParameters(\r\n iysMessageTypeList[i].isRequiredToSetOtherParameters\r\n );\r\n }\r\n }\r\n }\r\n }, [iysMessageTypeList]);\r\n\r\n useEffect(() => {\r\n if (iysRecipientTypeList.length > 0) {\r\n for (let i = 0; i < iysRecipientTypeList.length; i++) {\r\n if (iysRecipientTypeList[i].isDefault) {\r\n setIysRecipientType(iysRecipientTypeList[i].iysRecipientType);\r\n }\r\n }\r\n }\r\n }, [iysRecipientTypeList]);\r\n\r\n const handleIsRequiredToSetOtherParameters = (value) => {\r\n setIsRequiredToSetOtherParameters(value);\r\n };\r\n\r\n const opResolver = (op) => {\r\n switch (op) {\r\n case 0:\r\n return 'Turkcell'\r\n case 1:\r\n return 'Vodafone'\r\n case 2:\r\n return 'Turk Telekom'\r\n case 3:\r\n return 'Asist'\r\n case 4:\r\n return 'Superonline'\r\n case 5:\r\n return 'Turk Telekom Grup'\r\n default:\r\n return ''\r\n }\r\n };\r\n\r\n const opDisplayResolver = (op) => {\r\n switch (op) {\r\n case 0:\r\n return ( Turkcell )\r\n case 1:\r\n return ( Vodafone )\r\n case 2:\r\n return ( Türk Telekom )\r\n case 3:\r\n return (Asist )\r\n case 4:\r\n return ( Superonline )\r\n case 5:\r\n return ( Türk Telekom Grup )\r\n default:\r\n return ''\r\n }\r\n };\r\n\r\n const handleSenderSelect = (senderObject) => {\r\n setSenderObject(senderObject);\r\n setSender(senderObject.sender);\r\n setVariantId(senderObject.variantId);\r\n setVirtualNumber(senderObject.virtualMsisdn);\r\n setCspsId(senderObject.cspsId);\r\n setOperatorName(opResolver(senderObject.operator));\r\n setOperatorDisplayName(opDisplayResolver(senderObject.operator));\r\n };\r\n\r\n const dynamicFieldNamesFixer = () => {\r\n let m = message.split(\"\");\r\n let letter = false;\r\n let field = \"\";\r\n let fields = [];\r\n for (let i = 0; i < m.length; i++) {\r\n if (m[i] === \"]\") {\r\n letter = false;\r\n fields = [...fields, field];\r\n field = \"\";\r\n }\r\n if (letter) {\r\n field += m[i];\r\n }\r\n if (m[i] === \"[\") {\r\n letter = true;\r\n }\r\n }\r\n let fixedArray = [];\r\n let fixedArrayNotIncludes = [];\r\n if (fields && fields.length > 0) {\r\n if (dynamicMessageFields) {\r\n fixedArray = fields.filter((value) =>\r\n dynamicMessageFields\r\n .map((f) => {\r\n return f.fieldDisplayName;\r\n })\r\n .includes(value)\r\n );\r\n fixedArrayNotIncludes = fields.filter(\r\n (value) =>\r\n !dynamicMessageFields\r\n .map((f) => {\r\n return f.fieldDisplayName;\r\n })\r\n .includes(value)\r\n );\r\n } else {\r\n fixedArrayNotIncludes = fields;\r\n }\r\n }\r\n setDynamicFieldNames(fixedArray);\r\n setDynamicFieldNamesNotIncludes(fixedArrayNotIncludes);\r\n if (fixedArray.length > 0) {\r\n setIsDynamic(true);\r\n } else {\r\n setIsDynamic(false);\r\n }\r\n };\r\n\r\n const advancedTimeDialogToggle = () => {\r\n setAdvancedTimeDialog(!advancedTimeDialog);\r\n };\r\n\r\n const [summary, setSummary] = useState({});\r\n const [etkDialog, setEtkDialog] = useState(false);\r\n\r\n const handleEtkDialogToggle = () => {\r\n setEtkDialog(!etkDialog);\r\n };\r\n\r\n useEffect(() => {\r\n sendingListBuilderClearFromService();\r\n setDefaultLists();\r\n }, []);\r\n\r\n const setDefaultLists = () => {\r\n setDefaultPbPersonList(PbPersonList);\r\n setDefaultPbGroupList(PbGroupList);\r\n setDefaultSavedFileIdList(SavedFileIdList);\r\n };\r\n\r\n const clearDefaultLists = () => {\r\n setDefaultPbPersonList([]);\r\n setDefaultPbGroupList([]);\r\n setDefaultSavedFileIdList([]);\r\n };\r\n\r\n const sendingListBuilderClearFromService = () => {\r\n const data = { sessionId, contextSessionId };\r\n sendingListClear(data)\r\n .then((res) => {\r\n if (\r\n checkResultResponse(\r\n res,\r\n dispatch,\r\n null,\r\n \"Gönderim listesi temizlenirken bir hata oluştu.\"\r\n )\r\n ) {\r\n return null;\r\n }\r\n })\r\n .catch((err) => {\r\n alertResponseError(\r\n err,\r\n \"Gönderim listesi temizlenirken bir hata oluştu.\"\r\n );\r\n });\r\n };\r\n\r\n const getStepContent = (step) => {\r\n switch (step) {\r\n case 0:\r\n return (\r\n \r\n );\r\n case 1:\r\n return (\r\n \r\n );\r\n case 2:\r\n return (\r\n \r\n );\r\n case 3:\r\n return (\r\n \r\n );\r\n case 4:\r\n return (\r\n \r\n );\r\n default:\r\n return \"Bilinmeyen Adım\";\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setSlloading(true);\r\n getMMSSenderWithDetailList(AuthData)\r\n .then((res) => {\r\n setSlloading(false);\r\n if (\r\n checkResponse(\r\n res,\r\n dispatch,\r\n null,\r\n \"Başlık listesi getirilirken bir hata oluştu.\"\r\n )\r\n ) {\r\n if (res.data.senderList.length === 0) {\r\n Swal.fire({\r\n icon: \"warning\",\r\n title: \"Hesabınıza bağlı başlık bilgisi bulunamadı. Gönderim başlığı için hesabınıza mutlaka tanımlanmış olmalı. Sayfayı yenileyerek tekrar giriş yapmayı deneyiniz.\"\r\n })\r\n }\r\n setSenderList(res.data.senderList);\r\n if (res.data.senderList.length === 1) {\r\n handleSenderSelect(res.data.senderList[0]);\r\n }\r\n\r\n }\r\n })\r\n .catch((err) => {\r\n setSlloading(false);\r\n alertResponseError(err, \"Başlık listesi getirilirken bir hata oluştu.\");\r\n });\r\n }, []);\r\n\r\n const sendMMSFunc = () => {\r\n let Request = {\r\n taskName,\r\n SendDate,\r\n SendingTimeType,\r\n sendingTimeOptions,\r\n AbortDate,\r\n sender,\r\n virtualNumber,\r\n variantId,\r\n cspsId,\r\n operatorName,\r\n operatorType: null,\r\n enableZimPlus: true,\r\n isBxxxCodeCharging: false,\r\n hasTimeRestrictionOnOperator: false,\r\n messageSubject,\r\n isDynamic: false,\r\n dynamicFieldNames: null,\r\n useAlternativeMessage: false,\r\n alternativeMessage: null,\r\n isLimitedWithSuiteAmount: false,\r\n sendingLimit: -1,\r\n paymentLimit: -1,\r\n alsoSendToBlackList: false,\r\n KeyFieldType,\r\n iysMessageType,\r\n iysRecipientType,\r\n iysBrandCode,\r\n iysIsAllowedToPassEmptyByUser,\r\n campaignId: null,\r\n EtkAgreementAnswer,\r\n IsUsingMedyaMobil: false,\r\n UsingMedyaMobilServices: null,\r\n MedyaMobilRequests: null,\r\n CustomFieldValues: null,\r\n };\r\n const data = { AuthData, Request }\r\n setMMSLoads(true)\r\n sendMms(data)\r\n .then(res => {\r\n setSummaryLoads(false)\r\n setMMSLoads(false)\r\n if (checkResponse(res, dispatch, 'MMS gönderim isteğiniz kaydedilmiştir.', 'MMS gönderim isteğiniz başarısız olmuştur.')) {\r\n setActiveStep(0)\r\n callCopy()\r\n }\r\n SetEtkAgreementAnswer(null)\r\n })\r\n .catch(err => {\r\n setSummaryLoads(false)\r\n setMMSLoads(false)\r\n alertResponseError(err, 'MMS gönderim isteğiniz başarısız olmuştur.')\r\n })\r\n };\r\n\r\n const callCopy = () => {\r\n const data = {\r\n sessionId, contextSessionId, ServiceType: ServiceType.ID_SERVICETYPE_MMS, SourceTaskId: taskId\r\n }\r\n sendingListBuilderCopy(data)\r\n .then(res => {\r\n if (checkResponse(res, dispatch, null, 'Yeni gönderim için son gönderimin kopyası oluşturulamadı, yeniden gönderim yapmak için sayfaya tekrar erişim sağlayınız.')) {\r\n setTaskId(res.data.newTaskId)\r\n }\r\n })\r\n .catch(err => {\r\n alertResponseError(err, 'Girilen numaralar eklenemedi.')\r\n })\r\n }\r\n\r\n const handleSendMMS = () => {\r\n if (activeStep === 4) {\r\n if (messageSubject === \"\") {\r\n Swal.fire({\r\n title: \"Lütfen mesaj içeriği giriniz.\",\r\n icon: \"info\",\r\n });\r\n setActiveStep(2);\r\n } else if (summary.grandTotalWithoutLimits === 0) {\r\n Swal.fire({\r\n title: \"Lütfen gönderim listenize en az bir numara ya da dosya ekleyiniz.\",\r\n icon: \"info\"\r\n })\r\n setActiveStep(1)\r\n } else {\r\n setEtkDialog(true);\r\n }\r\n }\r\n };\r\n\r\n const getSummary = () => {\r\n setSummaryLoads(true);\r\n const Request = {\r\n taskName,\r\n SendDate,\r\n SendingTimeType,\r\n sendingTimeOptions,\r\n AbortDate,\r\n sender,\r\n virtualNumber,\r\n variantId,\r\n cspsId,\r\n operatorName,\r\n operatorType: null,\r\n enableZimPlus: true,\r\n isBxxxCodeCharging: false,\r\n hasTimeRestrictionOnOperator: false,\r\n messageSubject,\r\n isDynamic: false,\r\n dynamicFieldNames: null,\r\n useAlternativeMessage: false,\r\n alternativeMessage: null,\r\n isLimitedWithSuiteAmount: false,\r\n sendingLimit: -1,\r\n paymentLimit: -1,\r\n alsoSendToBlackList: false,\r\n KeyFieldType,\r\n iysMessageType,\r\n iysRecipientType,\r\n iysBrandCode,\r\n iysIsAllowedToPassEmptyByUser,\r\n campaignId: null,\r\n EtkAgreementAnswer,\r\n IsUsingMedyaMobil: false,\r\n UsingMedyaMobilServices: null,\r\n MedyaMobilRequests: null,\r\n CustomFieldValues: null,\r\n };\r\n const data = { AuthData, Request };\r\n updateSendMmsInfoAndGetSummary(data)\r\n .then((res) => {\r\n setSummaryLoads(false);\r\n if (\r\n checkResponse(\r\n res,\r\n dispatch,\r\n null,\r\n \"Gönderim bilgileri güncellenirken ve özet bilgileri getirilirken bir hata oluştu.\"\r\n )\r\n ) {\r\n setSummary(res.data);\r\n setTaskId(res.data.taskId);\r\n }\r\n })\r\n .catch((err) => {\r\n setSummaryLoads(false);\r\n alertResponseError(err, \"Girilen numaralar eklenemedi.\");\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n // if(activeStep === 0){\r\n // SetSenderInfo('')\r\n // }\r\n if (activeStep === 3) {\r\n dynamicFieldNamesFixer();\r\n }\r\n if (activeStep === 4) {\r\n if (messageSubject === \"\") {\r\n Swal.fire({\r\n title: \"Lütfen mesaj konusu giriniz.\",\r\n icon: \"info\",\r\n });\r\n setActiveStep(2);\r\n return\r\n } else if (previewUrl === \"\" || tempoFileObjects.length === 0) {\r\n Swal.fire({\r\n title: \"Lütfen göndermek istediğiniz MMS görselini oluşturunuz.\",\r\n icon: \"info\",\r\n });\r\n setActiveStep(2)\r\n return\r\n } else if (value == \"2\" && moment(AbortDate, 'YYYY-MM-DDTHH:mm') < moment(SendingTimeType === \"ExactDateTime\" ? SendDate : new Date()).add(1, 'hours')) {\r\n Swal.fire({\r\n title: \"İptal zamanı gönderim zamanından 1 saatten daha fazla ileriki bir zaman olmalıdır.\",\r\n icon: \"info\",\r\n });\r\n setActiveStep(3)\r\n return\r\n }\r\n else {\r\n getSummary();\r\n }\r\n }\r\n }, [activeStep]);\r\n\r\n const handleNext = () => {\r\n if (activeStep === 1) {\r\n if (grandTotal === 0) {\r\n Swal.fire({\r\n title: \"Lütfen gönderim listenize en az bir numara ya da dosya ekleyiniz.\",\r\n icon: \"info\"\r\n })\r\n return\r\n }\r\n }\r\n if (activeStep === 0) {\r\n if (iysIsAllowedToPassEmptyByUser) {\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n } else {\r\n if (\r\n isRequiredToSetOtherParameters &&\r\n (iysBrandCode === \"\" || iysRecipientType === \"\")\r\n ) {\r\n if (0) {\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n } else {\r\n Swal.fire({\r\n title: \"Lütfen İYS alıcı tipini ve İYS marka kodunuzu giriniz.\",\r\n icon: \"info\",\r\n });\r\n }\r\n } else if (\r\n isRequiredToSetOtherParameters &&\r\n !/^\\d+$/.test(iysBrandCode)\r\n ) {\r\n Swal.fire({\r\n title: \"Lütfen İYS marka kodunuzu numerik değer olarak giriniz.\",\r\n icon: \"info\",\r\n });\r\n } else {\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n }\r\n }\r\n } else {\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n }\r\n };\r\n\r\n const handleBack = () => {\r\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\r\n };\r\n\r\n const handleStep = (step) => () => {\r\n setActiveStep(step);\r\n };\r\n\r\n const handleReset = () => {\r\n setActiveStep(0);\r\n };\r\n\r\n return (\r\n \r\n
\r\n {steps.map((label, index) => (\r\n \r\n {label} \r\n {/* {label} */}\r\n \r\n ))}\r\n \r\n
\r\n {activeStep === steps.length ? (\r\n
\r\n \r\n Sms Gönderimi Başarılı!\r\n \r\n \r\n Temizle\r\n \r\n
\r\n ) : (\r\n
\r\n {getStepContent(activeStep)}\r\n
\r\n \r\n GERİ\r\n \r\n {activeStep !== steps.length - 1 && (\r\n \r\n İLERİ\r\n \r\n )}\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n
{\r\n dispatch(closeTwofa());\r\n sendMMSFunc();\r\n }}\r\n canceltwofa={() => dispatch(canceltwofasms())}\r\n userData={props.userReducer.user}\r\n />\r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state) => {\r\n const { userReducer, twofaReducer, smsReducer } = state;\r\n return { userReducer, twofaReducer, smsReducer };\r\n};\r\n\r\nexport default connect(mapStateToProps)(MMSGonderim);\r\n","/*!\r\n\r\n=========================================================\r\n* Material Dashboard React - v1.9.0\r\n=========================================================\r\n\r\n* Product Page: https://www.creative-tim.com/product/material-dashboard-react\r\n* Copyright 2020 Creative Tim (https://www.creative-tim.com)\r\n* Licensed under MIT (https://github.com/creativetimofficial/material-dashboard-react/blob/master/LICENSE.md)\r\n\r\n* Coded by Creative Tim\r\n\r\n=========================================================\r\n\r\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\r\n\r\n*/\r\n// @material-ui/icons\r\nimport Dashboard from \"@material-ui/icons/Dashboard\";\r\nimport AccountBoxIcon from '@material-ui/icons/AccountBox';\r\nimport Sms from \"@material-ui/icons/Sms\";\r\nimport EmailIcon from '@material-ui/icons/Email';\r\nimport PermContactCalendarIcon from '@material-ui/icons/PermContactCalendar';\r\nimport AssessmentIcon from '@material-ui/icons/Assessment';\r\nimport AssignmentIcon from '@material-ui/icons/Assignment';\r\nimport InsertDriveFileIcon from '@material-ui/icons/InsertDriveFile';\r\nimport AccountBalanceWalletIcon from '@material-ui/icons/AccountBalanceWallet';\r\nimport MmsIcon from '@material-ui/icons/Mms';\r\nimport PieChart from '@material-ui/icons/PieChart';\r\n\r\n// project components\r\n\r\nimport SmsGonderim from \"views/SmsGonderim/SmsGonderim.js\"\r\nimport EpostaGonderim from \"views/EpostaGonderim/EpostaGonderim\"\r\nimport Izinler from \"views/Izinler/Izinler.js\"\r\nimport Raporlar from \"views/Raporlar/Master\"\r\nimport KullaniciBilgileri from \"views/KullaniciBilgileri/KullaniciBilgileri.js\"\r\nimport Anasayfa from \"views/Anasayfa/Anasayfa.js\"\r\nimport TelefonRehberi from \"views/Telefon/TelefonRehberi.js\"\r\nimport KayitliDosyalar from \"views/Kayitli/KayitliDosyalar.js\"\r\nimport AyarlanmisGonderimler from \"views/Ayarlanmis/AyarlanmisGonderimler.js\"\r\nimport LoginPage from \"views/LoginPage/LoginPage.js\"\r\nimport AkilliYetenekler from \"views/AkilliYetenek/AkilliYetenek\";\r\nimport MMSGonderim from \"views/MMS/MMSGonderim\";\r\n\r\nconst dashboardRoutes = [ \r\n {\r\n path: \"/anasayfa\",\r\n name: \"Anasayfa\",\r\n icon: PieChart,\r\n component: Anasayfa,\r\n layout: \"/admin\",\r\n requiredUserRights: []\r\n },\r\n {\r\n path: \"/kullanici-bilgileri\",\r\n name: \"Kullanici Bilgileri\",\r\n icon: AccountBoxIcon,\r\n component: KullaniciBilgileri,\r\n layout: \"/admin\",\r\n requiredUserRights: []\r\n },\r\n {\r\n path: \"/sms\",\r\n name: \"SMS\",\r\n icon: Sms,\r\n component: SmsGonderim,\r\n layout: \"/admin\",\r\n requiredUserRights: [ \"SMS\" ]\r\n },\r\n {\r\n path: \"/e-posta\",\r\n name: \"E-posta\",\r\n icon: EmailIcon,\r\n component: EpostaGonderim,\r\n layout: \"/admin\",\r\n requiredUserRights: [ \"Eposta\" ]\r\n },\r\n {\r\n path: \"/akilli-yetenekler\",\r\n name: \"Akıllı Yetenekler\",\r\n icon: AccountBalanceWalletIcon,\r\n component: AkilliYetenekler,\r\n layout: \"/admin\",\r\n requiredUserRights: [ \"AkilliYetenekler\" ]\r\n },\r\n {\r\n path: \"/mms\",\r\n name: \"MMS\",\r\n icon: MmsIcon,\r\n component: MMSGonderim,\r\n layout: \"/admin\",\r\n requiredUserRights: [ \"MMS\" ]\r\n },\r\n {\r\n path: \"/izinler\",\r\n name: \"İzin Yönetimi\",\r\n icon: PermContactCalendarIcon,\r\n component: Izinler,\r\n layout: \"/admin\",\r\n requiredUserRights: []\r\n },\r\n {\r\n path: \"/raporlar\",\r\n name: \"Raporlar\",\r\n icon: AssessmentIcon,\r\n component: Raporlar,\r\n layout: \"/admin\",\r\n requiredUserRights: [ \"SMS\", \"MMS\", \"Eposta\" ]\r\n },\r\n {\r\n path: \"/ayarlanmisgonderimler\",\r\n name: \"Ayarlanmış Gönderimler\",\r\n icon: AssessmentIcon,\r\n component: AyarlanmisGonderimler,\r\n layout: \"/admin\",\r\n requiredUserRights: [ \"SMS\", \"MMS\" ]\r\n },\r\n {\r\n path: \"/telefonrehberi\",\r\n name: \"Telefon Rehberi\",\r\n icon: AssignmentIcon,\r\n component: TelefonRehberi,\r\n layout: \"/admin\",\r\n requiredUserRights: []\r\n },\r\n {\r\n path: \"/kayitlidosyalar\",\r\n name: \"Kayıtlı Dosyalar\",\r\n icon: InsertDriveFileIcon,\r\n component: KayitliDosyalar,\r\n layout: \"/admin\",\r\n requiredUserRights: []\r\n },\r\n {\r\n path: \"/login\",\r\n name: \"Giriş Yap\",\r\n icon: Dashboard,\r\n component: LoginPage,\r\n layout: \"/admin\",\r\n hidden : true,\r\n requiredUserRights: []\r\n }\r\n];\r\n\r\nexport default dashboardRoutes;\r\n","import {\r\n drawerWidth,\r\n transition,\r\n container\r\n} from \"assets/jss/material-dashboard-react.js\";\r\n\r\nconst appStyle = theme => ({\r\n wrapper: {\r\n position: \"relative\",\r\n top: \"0\",\r\n height: \"100vh\"\r\n },\r\n mainPanel: {\r\n [theme.breakpoints.up(\"md\")]: {\r\n width: `calc(100% - ${drawerWidth}px)`\r\n },\r\n overflow: \"auto\",\r\n position: \"relative\",\r\n float: \"right\",\r\n ...transition,\r\n maxHeight: \"100%\",\r\n width: \"100%\",\r\n overflowScrolling: \"touch\"\r\n },\r\n content: {\r\n marginTop: \"30px\",\r\n padding: \"30px 15px\",\r\n minHeight: \"calc(100vh - 123px)\"\r\n },\r\n container,\r\n map: {\r\n marginTop: \"70px\"\r\n }\r\n});\r\n\r\nexport default appStyle;\r\n","import React, { useState } from 'react'\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\nimport { connect } from 'react-redux'\r\nimport { canceltwofasms, activateTwofa } from '../../_actions/twofa'\r\nimport { changePassword } from '../../_services/user'\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport CustomInput from \"components/CustomInput/CustomInput.js\";\r\nimport Button from \"components/CustomButtons/Button.js\";\r\nimport Swal from 'sweetalert2'\r\nimport SnackbarContent from \"components/Snackbar/SnackbarContent.js\";\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\n\r\nimport VisibilityIcon from '@material-ui/icons/Visibility';\r\nimport VisibilityOffIcon from '@material-ui/icons/VisibilityOff';\r\nimport GridItem from \"components/Grid/GridItem.js\";\r\nimport GridContainer from \"components/Grid/GridContainer.js\";\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\n\r\n\r\nimport Card from \"components/Card/Card.js\";\r\nimport CardHeader from \"components/Card/CardHeader.js\";\r\nimport CardBody from \"components/Card/CardBody.js\";\r\nimport CardFooter from \"components/Card/CardFooter.js\";\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport logo from \"assets/img/logo-isim.svg\";\r\nimport TwofaDialog from \"components/Twofa/TwofaDialog.js\";\r\n\r\nimport styles from \"assets/jss/loginPage.js\";\r\n\r\nconst useStyles = makeStyles(styles);\r\n\r\nconst ChangePassword = props => {\r\n const [ twofaSuccess, setTwofaSuccess ] = useState(false)\r\n const [ OldPassword, SetOldPassword ] = useState('')\r\n const [ NewPasswordRepeat, SetNewPasswordRepeat ] = useState('')\r\n const [ NewPassword, SetNewPassword ] = useState('')\r\n const [ alert, setAlert ] = useState('Devam edebilmek için şifrenizi değiştirmeniz gerekmektedir.')\r\n const [ visible, setVisible ] = useState(false)\r\n const classes = useStyles();\r\n\r\n const { open, sessionId, contextSessionId, dispatch, setPasswordChange } = props\r\n\r\n const lowerCaseRegex = new RegExp(\"^(?=.*[a-z])\");\r\n const upperCaseRegex = new RegExp(\"^(?=.*[A-Z])\");\r\n const numberRegex = new RegExp(\"^(?=.*[0-9])\");\r\n const specialCharRegex = new RegExp(\"^(?=.*[:,.?!@#\\$%&\\*_+=-])\");\r\n\r\n const success = () => {\r\n dispatch(canceltwofasms())\r\n setAlert('')\r\n const data = {\r\n sessionId, contextSessionId,\r\n OldPassword, NewPassword\r\n }\r\n setTwofaSuccess(true)\r\n changePassword(data)\r\n .then(res => {\r\n if(res.data.resultCode === 0){\r\n SetOldPassword('')\r\n SetNewPassword('')\r\n SetNewPasswordRepeat('')\r\n setTwofaSuccess(false)\r\n setPasswordChange(false)\r\n Swal.fire({\r\n icon : \"success\",\r\n title: \"Şifreniz değiştirildi. Artık giriş yaparken yeni şifrenizi kullanabilirsiniz.\"\r\n })\r\n }else{\r\n setTwofaSuccess(false)\r\n setAlert(res.data.resultDescription)\r\n }\r\n }) \r\n .catch(err => {\r\n setTwofaSuccess(false)\r\n setAlert('Bir hata oluştu! Internet bağlantınızı kontrol ediniz.' + (err && err.message ? ' Hata: ' + err.message : ''))\r\n })\r\n }\r\n\r\n const handleSubmit = () => {\r\n let test = true\r\n if(NewPassword.length < 8 || NewPassword.length > 15){\r\n test = false\r\n setAlert('Yeni şifreniz en az 8 en fazla 15 karakterden oluşmalıdır.')\r\n return\r\n }\r\n if(!lowerCaseRegex.test(NewPassword)){\r\n test = false\r\n setAlert('Yeni şifreniz a-z gibi bir küçük harf içermelidir.')\r\n return\r\n }\r\n if(!upperCaseRegex.test(NewPassword)){\r\n test = false\r\n setAlert('Yeni şifreniz A-Z gibi bir büyük harf içermelidir.')\r\n return\r\n }\r\n if(!numberRegex.test(NewPassword)){\r\n test = false\r\n setAlert('Yeni şifreniz 0-9 gibi bir rakam içermelidir.')\r\n return\r\n }\r\n if(!specialCharRegex.test(NewPassword)){\r\n test = false\r\n setAlert('Yeni şifreniz \":,.?!@#$%&*_=-\" gibi bir özel karakter içermelidir.')\r\n return\r\n }\r\n if(OldPassword.length === ''){\r\n test = false\r\n setAlert('Mevcut şifrenizi giriniz.')\r\n return\r\n }\r\n if(OldPassword === NewPassword){\r\n test = false\r\n setAlert('Eski şifrenizle yeni şifreniz aynı olamaz. Lütfen yeni şifrenizi eskisinden farklı olacak şekilde giriniz.')\r\n return \r\n }\r\n if(test){\r\n if(twofaSuccess){\r\n success()\r\n }else{\r\n dispatch(activateTwofa())\r\n }\r\n }\r\n }\r\n\r\n const handleVisibility = () => {\r\n setVisible(!visible)\r\n } \r\n\r\n const { user } = props.userReducer\r\n\r\n const lastChange = () => {\r\n let last = 'Bilinmiyor'\r\n if(user.user && user.user.userInfo && user.user.userInfo.lastPasswordChangeDate){\r\n last = moment(user.user.userInfo.lastPasswordChangeDate).format('DD.MM.YYYY HH:mm')\r\n }\r\n return last\r\n }\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 \r\n { alert !== '' &&\r\n \r\n }\r\n \r\n SetOldPassword(e.target.value),\r\n endAdornment: (\r\n \r\n \r\n \r\n { visible\r\n ? \r\n : \r\n }\r\n \r\n \r\n \r\n )\r\n }}\r\n />\r\n {\r\n SetNewPassword(e.target.value)\r\n if((e.target.value !== NewPasswordRepeat) && (NewPasswordRepeat !== '')){\r\n setAlert('Yeni şifre ve tekrarı uyuşmuyor.')\r\n }else{\r\n setAlert('')\r\n }\r\n },\r\n endAdornment: (\r\n \r\n \r\n \r\n { visible\r\n ? \r\n : \r\n } \r\n \r\n \r\n \r\n )\r\n }}\r\n />\r\n {\r\n SetNewPasswordRepeat(e.target.value)\r\n if(e.target.value !== NewPassword){\r\n setAlert('Yeni şifre ve tekrarı uyuşmuyor.')\r\n }else{\r\n setAlert('')\r\n }\r\n },\r\n endAdornment: (\r\n \r\n \r\n \r\n { visible\r\n ? \r\n : \r\n }\r\n \r\n \r\n \r\n )\r\n }}\r\n />\r\n \r\n \r\n \r\n DEĞİŞTİR\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
success()}\r\n canceltwofa = { () => dispatch(canceltwofasms())}\r\n userData = {props.userReducer.user}\r\n purpose = 'PasswordChange'\r\n />\r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer, twofaReducer } = state\r\n const { user } = userReducer\r\n return { twofaReducer, userReducer, user }\r\n}\r\n\r\nexport default connect(mapStateToProps)(ChangePassword)\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { createBrowserHistory } from \"history\";\r\nimport { Router, Route, Switch, Redirect } from \"react-router-dom\";\r\nimport { connect } from 'react-redux'\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport moment from 'moment'\r\nimport 'moment/locale/tr'\r\n\r\n// core components\r\nimport Admin from \"layouts/Admin.js\";\r\n\r\nimport LoginPage from \"views/LoginPage/LoginPage.js\"\r\nimport PasswordChange from \"views/LoginPage/PasswordChange.js\"\r\nimport { AppVersion } from \"variables/appVersion\";\r\n\r\n\r\nconst hist = createBrowserHistory();\r\n\r\nconst App = props => {\r\n const [ passworChange, setPasswordChange ] = useState(false)\r\n const { user } = props.userReducer \r\n\r\n useEffect(() => {\r\n AppVersion.clientUniqueId = uuidv4()\r\n if(user.user && user.user.userInfo.nextPasswordChangeDate){\r\n if(new Date(user.user.userInfo.nextPasswordChangeDate) < Date.now()){\r\n setPasswordChange(true)\r\n }\r\n }\r\n }, [user])\r\n\r\n return(\r\n \r\n \r\n { \r\n return user.sessionId \r\n ? passworChange\r\n ? \r\n : \r\n : \r\n }} \r\n />\r\n { return user.sessionId ? : }} />\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n const { userReducer } = state\r\n return { userReducer }\r\n}\r\n\r\nexport default connect(mapStateToProps)(App);","import * as userActionTypes from '../_actionTypes/user'\r\n\r\nconst user = {}\r\nconst loading = false\r\nconst alert = ''\r\n\r\nexport const userReducer = (state = { user, loading, alert }, action) => {\r\n switch(action.type){\r\n case userActionTypes.REQUEST:\r\n return {\r\n ...state,\r\n loading : true,\r\n alert : ''\r\n }\r\n case userActionTypes.SUCCESS:\r\n return {\r\n ...state,\r\n alert : '',\r\n user : action.user,\r\n loading : false\r\n }\r\n case userActionTypes.FAILURE:\r\n return {\r\n ...state,\r\n alert : action.alert,\r\n user : {},\r\n loading : false\r\n }\r\n case userActionTypes.LOGOUT:\r\n return {\r\n ...state,\r\n alert : '',\r\n user : {},\r\n loading : false\r\n }\r\n case userActionTypes.TIMEOUT:\r\n return {\r\n ...state,\r\n alert : 'Lütfen giriş yapınız.',\r\n user : {},\r\n loading : false\r\n } \r\n default:\r\n return state\r\n }\r\n}","import * as phonebookActionTypes from '../_actionTypes/phonebook.js'\r\n\r\nconst people = []\r\nconst groups = []\r\nconst peopleLoading = false\r\nconst groupLoading = false\r\n\r\nexport const phonebook = ( state = { people, groups, peopleLoading, groupLoading }, action ) => {\r\n switch(action.type){\r\n case phonebookActionTypes.GETPEOPLE:\r\n return state = {\r\n ...state,\r\n people : action.people,\r\n peopleLoading : false\r\n }\r\n case phonebookActionTypes.GETGROUPS:\r\n return state = {\r\n ...state,\r\n groups : action.groups,\r\n groupLoading : false\r\n }\r\n case phonebookActionTypes.PEOPLEREQ:\r\n return state = {\r\n ...state,\r\n peopleLoading : true\r\n }\r\n case phonebookActionTypes.GROUPREQ:\r\n return state = {\r\n ...state,\r\n groupLoading : true\r\n }\r\n default:\r\n return state\r\n }\r\n}","import * as twofaActionTypes from '../_actionTypes/twofa'\r\n\r\nconst user = {}\r\nconst status = false\r\nconst codeLoading = false\r\n\r\nexport const twofaReducer = (state = { status, user, codeLoading }, action) => {\r\n switch(action.type){\r\n case twofaActionTypes.ACTIVATE:\r\n return state = {\r\n ...state,\r\n status : true,\r\n codeLoading : false,\r\n user : action.user\r\n }\r\n case twofaActionTypes.SUCCESS:\r\n return state = {\r\n ...state,\r\n status : false,\r\n user : {},\r\n codeLoading : false,\r\n }\r\n case twofaActionTypes.FAILURE:\r\n return state = {\r\n ...state,\r\n status : false,\r\n user : {},\r\n codeLoading : false,\r\n }\r\n case twofaActionTypes.CLEAN:\r\n return state = {\r\n status : false, user : {}, codeLoading : false\r\n }\r\n default:\r\n return state\r\n }\r\n}"," \r\nimport { combineReducers } from 'redux';\r\n\r\nimport { userReducer } from './user'\r\nimport { notificationReducer } from './notification'\r\nimport { phonebook } from './phonebook.js'\r\nimport { twofaReducer } from './twofa'\r\nimport { smsReducer } from './sms.js'\r\nimport { dashboardReducer } from './dashboard.js'\r\n\r\nexport const rootReducer = combineReducers({\r\n userReducer,\r\n notificationReducer,\r\n phonebook,\r\n twofaReducer,\r\n smsReducer,\r\n dashboardReducer,\r\n});","import * as notificationActionTypes from '../_actionTypes/notification'\r\n\r\nexport const notificationReducer = (state = [], action) => {\r\n switch(action.type){\r\n case notificationActionTypes.GET:\r\n return action.notifications\r\n case notificationActionTypes.UPDATE:\r\n return []\r\n default:\r\n return state\r\n }\r\n}","import * as smsActionTypes from '../_actionTypes/sms.js'\r\n\r\nconst sendingListLoading = false\r\nconst sendingSummaryLoading = false\r\n\r\nexport const smsReducer = ( state = { sendingListLoading, sendingSummaryLoading }, action ) => {\r\n switch(action.type){\r\n case smsActionTypes.SETSENDINGLISTLOADING:\r\n return state = {\r\n ...state,\r\n sendingListLoading : true\r\n }\r\n case smsActionTypes.CLEARSENDINGLISTLOADING:\r\n return state = {\r\n ...state,\r\n sendingListLoading : false\r\n }\r\n case smsActionTypes.SETSENDINGSUMMARYLOADING:\r\n return state = {\r\n ...state,\r\n sendingSummaryLoading : true\r\n }\r\n case smsActionTypes.CLEARSENDINGSUMMARYLOADING:\r\n return state = {\r\n ...state,\r\n sendingSummaryLoading : false\r\n }\r\n default:\r\n return state\r\n }\r\n}","import * as dashboardActionTypes from '../_actionTypes/dashboard'\r\n\r\nexport const dashboardReducer = (state = {}, action) => {\r\n switch(action.type){\r\n case dashboardActionTypes.GET:\r\n return action.dashboardDatas \r\n default:\r\n return state\r\n }\r\n}","import { createStore, applyMiddleware } from 'redux';\r\nimport thunkMiddleware from 'redux-thunk';\r\n// import { createLogger } from 'redux-logger';\r\nimport { rootReducer } from '../_reducers';\r\n\r\n// const loggerMiddleware = createLogger();\r\n\r\nexport const store = createStore(\r\n rootReducer,\r\n applyMiddleware(\r\n thunkMiddleware,\r\n // loggerMiddleware\r\n )\r\n);","/*!\r\n\r\n=========================================================\r\n* Material Dashboard React - v1.9.0\r\n=========================================================\r\n\r\n* Product Page: https://www.creative-tim.com/product/material-dashboard-react\r\n* Copyright 2020 Creative Tim (https://www.creative-tim.com)\r\n* Licensed under MIT (https://github.com/creativetimofficial/material-dashboard-react/blob/master/LICENSE.md)\r\n\r\n* Coded by Creative Tim\r\n\r\n=========================================================\r\n\r\n* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\r\n\r\n*/\r\nimport React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport App from './App.js'\r\nimport { Provider } from 'react-redux';\r\nimport { store } from './_helpers/store'\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport MomentUtils from '@date-io/moment';\r\n\r\nimport \"assets/css/material-dashboard-react.css?v=1.9.0\";\r\nimport \"assets/css/codec.css\";\r\n\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAzIDc5LjE2NDUyNywgMjAyMC8xMC8xNS0xNzo0ODozMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIyLjEgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjJGOTkyRENERDFFRDExRUM5NTk1OThGOEMzQjE2OEMxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjJGOTkyRENFRDFFRDExRUM5NTk1OThGOEMzQjE2OEMxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MkY5OTJEQ0JEMUVEMTFFQzk1OTU5OEY4QzNCMTY4QzEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MkY5OTJEQ0NEMUVEMTFFQzk1OTU5OEY4QzNCMTY4QzEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5FXlQUAAADG0lEQVR42qRTTWhUVxg997773ps3M3nJzGSSMRmNJkaDC7GFaqG26kZQ1JWiFUHcKEqbCEKh1p9NobS6KijiLqRFTYsFGxUkosEEcWFrbKuCRvPDNDGTmXF+3ozv717vUwRLl97Lt/zOd875zkeEEHifx6YzGyHkb1KL6J07iIHCZnToM7AlLpfg2WQaK29cxJc9n6MYC8MBpUpT81ds2fKnMIx+ynmxhZA6MKKAwobl6aTqe/OJRNcpQcPzDO5s2YFb23aiaaoK4b3kfHZmj3tn+ALPPj9Ebef2Q9e590OFR5V15hDS6pT4p2yeHq/aQzVfdIQJR33Jwq/dJ5DpakVrziMilhikbe2naWPyN+VgN77jPP+J5c7uWhQay4WZ8dfN4mera355qwP+hZSiJ2vlkUpjyv97zQZ82LmApHR+OVosXIkwWiBPn2BOsk34HNAk7wUxnDk8ec0aLq86pDrTsH2BmE4m4gqOu+mFvS3EwabBC1Af3IdIphAA5Dwf8UgIaEngaqayfd/hZ9/uvTGmH5nNW/h4CUHEEKg6AglGbpFw5GvdNEd8OUwPtuB5iMdNMh6Jru75+fraSyf6wssfdPy73Z23CPABlckiBCGFoOCLT0nZGq637d6ophxNaGyK1pvzejjdvPT7cwcu7fom3D86MDjq5ic6YUagqEAQk7dJCbaiysrZ3u4npZeT+Zqzn8bqWn8cm047Q6Oatqzzxe/RtH5bbhNwZRv5b2gCIJsLSDJI6ewnyepP5gkHJp2B6WacaDrV98GaFX2PEx2//FEqbfWsNwzkUIkn4Emj45pytVFXjkYoucsoBTPcAmZpC/xVaxFt9tDY1Q7DrkxEMi8wlWVwpA9lyUan9FGboRyPaaw/IFaRzoeIAMtaTThnHUDoo8WoE3OwsjnkHN8IhRQsbROwHdSaNfWYnHyyjlHZyMHfkUXP57sxXluCBusZfKv6Wp8nRFdFrs0Qytn2sNY532Ang6lVGZbAh3etYSOl9Uipk/AFfa1XmkRkwgYaNOVUUlMuutK0mixfBOaR/10jed9zfiXAAH5nXSDGGEZPAAAAAElFTkSuQmCC\""],"sourceRoot":""}