/* eslint-disable react/display-name */
import React, { useState } from 'react'
import gql from 'graphql-tag'
import { Query, Mutation } from 'react-apollo'
import { withTranslation } from 'react-i18next'
import CouponComponent from '../components/Coupon/Coupon'
// reactstrap components
import { Badge, Card, Container, Row, Modal } from 'reactstrap'
// core components
import Header from '../components/Headers/Header.jsx'
import CustomLoader from '../components/Loader/CustomLoader'
import DataTable from 'react-data-table-component'
import orderBy from 'lodash/orderBy'
import { getCoupons, deleteCoupon, editCoupon } from '../apollo/server'
import Loader from 'react-loader-spinner'
import Alert from '../components/Alert'
const GET_COUPONS = gql`
${getCoupons}
`
const EDIT_COUPON = gql`
${editCoupon}
`
const DELETE_COUPON = gql`
${deleteCoupon}
`
const Coupon = props => {
const [editModal, setEditModal] = useState(false)
const [coupon, setCoupon] = useState(null)
const [isOpen, setIsOpen] = useState(false)
const toggleModal = coupon => {
setEditModal(!editModal)
setCoupon(coupon)
}
const customSort = (rows, field, direction) => {
const handleField = row => {
if (row[field] && isNaN(row[field])) {
return row[field].toLowerCase()
}
return row[field]
}
return orderBy(rows, handleField, direction)
}
const handleSort = (column, sortDirection) =>
console.log(column.selector, sortDirection)
const columns = [
{
name: 'Code',
sortable: true,
selector: 'code'
},
{
name: 'Discount %',
sortable: true,
selector: 'discount'
},
{
name: 'Status',
cell: row => <>{statusChanged(row)}>
},
{
name: 'Action',
cell: row => <>{actionButtons(row)}>
}
]
const statusChanged = row => {
return (
{(mutate, { loading, error }) => (
)}
)
}
const actionButtons = row => {
return (
<>
{
e.preventDefault()
toggleModal(row)
}}
color="primary">
Edit
{(deleteCoupon, { loading: deleteLoading }) => {
if (deleteLoading) {
return (
)
}
return (
{
e.preventDefault()
// deleteCoupon({ variables: { id: row._id } })
setIsOpen(true)
setTimeout(() => {
setIsOpen(false)
}, 2000)
}}>
{'Delete'}
)
}}
>
)
}
const { t } = props
return (
<>
{/* Page content */}
{/* Table */}
{isOpen && (
)}
{({ loading, error, data }) => {
if (error) {
return (
`${t('Error')}! ${error.message}`
)
}
return (
}
onSort={handleSort}
sortFunction={customSort}
defaultSortField="code"
/>
)
}}
{
toggleModal(null)
}}>
>
)
}
export default withTranslation()(Coupon)