diff --git a/app/Http/Controllers/SmsController.php b/app/Http/Controllers/SmsController.php new file mode 100644 index 0000000..c41ef10 --- /dev/null +++ b/app/Http/Controllers/SmsController.php @@ -0,0 +1,13 @@ + (/* binding */ Dashboard) +/* harmony export */ "default": () => (/* binding */ Index) /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); /* harmony import */ var _heroicons_react_outline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @heroicons/react/outline */ "./node_modules/@heroicons/react/outline/esm/index.js"); @@ -5944,7 +5962,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } -function Dashboard(_ref) { +function Index(_ref) { var auth = _ref.auth; var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]), @@ -6077,7 +6095,7 @@ function Dashboard(_ref) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ Dashboard) +/* harmony export */ "default": () => (/* binding */ Index) /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); /* harmony import */ var _heroicons_react_outline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @heroicons/react/outline */ "./node_modules/@heroicons/react/outline/esm/index.js"); @@ -6112,7 +6130,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } -function Dashboard(_ref) { +function Index(_ref) { var auth = _ref.auth; var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]), @@ -6317,6 +6335,181 @@ function Dashboard(_ref) { /***/ }), +/***/ "./resources/js/Pages/Sms/Index.js": +/*!*****************************************!*\ + !*** ./resources/js/Pages/Sms/Index.js ***! + \*****************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ Sms) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); +/* harmony import */ var _heroicons_react_outline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @heroicons/react/outline */ "./node_modules/@heroicons/react/outline/esm/index.js"); +/* harmony import */ var _inertiajs_inertia_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @inertiajs/inertia-react */ "./node_modules/@inertiajs/inertia-react/dist/index.js"); +/* harmony import */ var _Layouts_Authenticated__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/Layouts/Authenticated */ "./resources/js/Layouts/Authenticated.js"); +/* harmony import */ var _Components_LoadMore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/Components/LoadMore */ "./resources/js/Components/LoadMore.js"); +/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ "./node_modules/react/jsx-runtime.js"); +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + + + + + + + + +function Sms(_ref) { + var auth = _ref.auth; + + var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]), + _useState2 = _slicedToArray(_useState, 2), + sms = _useState2[0], + setSms = _useState2[1]; + + var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(1), + _useState4 = _slicedToArray(_useState3, 2), + currentPage = _useState4[0], + setCurrentPage = _useState4[1]; + + var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true), + _useState6 = _slicedToArray(_useState5, 2), + hasMorePages = _useState6[0], + setHasMorePages = _useState6[1]; + + var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false), + _useState8 = _slicedToArray(_useState7, 2), + loading = _useState8[0], + setLoading = _useState8[1]; + + (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () { + if (!hasMorePages) return; + setLoading(true); + Api.getSms(currentPage).then(function (_ref2) { + var data = _ref2.data; + setSms([].concat(_toConsumableArray(sms), _toConsumableArray(data.data.sms.data))); + setHasMorePages(data.data.sms.paginatorInfo.hasMorePages); + setLoading(false); + })["catch"](console.error); + }, [currentPage]); + return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)(_Layouts_Authenticated__WEBPACK_IMPORTED_MODULE_3__["default"], { + auth: auth, + children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_inertiajs_inertia_react__WEBPACK_IMPORTED_MODULE_2__.Head, { + title: "SMS Parser" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div", { + className: "py-12", + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div", { + className: "max-w-7xl mx-auto sm:px-6 lg:px-8", + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)("div", { + className: "flex flex-col", + children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div", { + className: "-my-2 overflow-x-auto sm:-mx-6 lg:-mx-8", + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div", { + className: "py-2 align-middle inline-block min-w-full sm:px-6 lg:px-8", + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div", { + className: "shadow overflow-hidden border-b border-gray-200 sm:rounded-lg", + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)("table", { + className: "min-w-full divide-y divide-gray-200", + children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("thead", { + className: "bg-gray-50", + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)("tr", { + children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("th", { + scope: "col", + className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", + children: "Id" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("th", { + scope: "col", + className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", + children: "Body" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("th", { + scope: "col", + className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", + children: "Meta" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("th", { + scope: "col", + className: "px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", + children: "Processed" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("th", { + scope: "col", + className: "relative py-3", + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("span", { + className: "sr-only", + children: "Edit" + }) + })] + }) + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("tbody", { + className: "bg-white divide-y divide-gray-200", + children: sms.map(function (item) { + return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)("tr", { + className: "loaded", + id: 'item-' + item.id, + children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("td", { + className: "px-6 py-4 whitespace-nowrap text-sm font-bold text-gray-800", + children: item.id + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)("td", { + className: "px-6 py-4 whitespace-nowrap text-sm font-bold text-gray-800", + children: [item.body.substr(0, 30), "..."] + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("td", { + className: "px-6 py-4 whitespace-nowrap text-sm font-bold text-gray-800", + children: item.meta + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("td", { + className: "px-6 py-4 whitespace-nowrap text-sm font-bold text-gray-800", + children: item.transaction_id ? '✅' : '❌' + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("td", { + className: "px-6 py-4 whitespace-nowrap text-right text-sm font-medium", + children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)("button", { + type: "button", + children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("span", { + className: "sr-only", + children: "Edit" + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_heroicons_react_outline__WEBPACK_IMPORTED_MODULE_1__.CogIcon, { + className: "h-5 w-5 text-gray-500", + "aria-hidden": "true" + })] + }) + })] + }, item.id); + }) + })] + }) + }) + }) + }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)(_Components_LoadMore__WEBPACK_IMPORTED_MODULE_4__["default"], { + hasMorePages: hasMorePages, + loading: loading, + onClick: function onClick() { + return setCurrentPage(currentPage + 1); + } + })] + }) + }) + })] + }); +} + +/***/ }), + /***/ "./resources/js/Pages/Transaction/Edit.js": /*!************************************************!*\ !*** ./resources/js/Pages/Transaction/Edit.js ***! @@ -6456,7 +6649,7 @@ function Edit(_ref) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ Dashboard) +/* harmony export */ "default": () => (/* binding */ Index) /* harmony export */ }); /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); /* harmony import */ var _heroicons_react_outline__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @heroicons/react/outline */ "./node_modules/@heroicons/react/outline/esm/index.js"); @@ -6493,7 +6686,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } -function Dashboard(_ref) { +function Index(_ref) { var auth = _ref.auth; var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]), @@ -59906,6 +60099,8 @@ var map = { "./Category/Index.js": "./resources/js/Pages/Category/Index.js", "./Dashboard": "./resources/js/Pages/Dashboard.js", "./Dashboard.js": "./resources/js/Pages/Dashboard.js", + "./Sms/Index": "./resources/js/Pages/Sms/Index.js", + "./Sms/Index.js": "./resources/js/Pages/Sms/Index.js", "./Transaction/Edit": "./resources/js/Pages/Transaction/Edit.js", "./Transaction/Edit.js": "./resources/js/Pages/Transaction/Edit.js", "./Transaction/Index": "./resources/js/Pages/Transaction/Index.js", diff --git a/resources/js/Api.js b/resources/js/Api.js index 61346ef..69b0965 100644 --- a/resources/js/Api.js +++ b/resources/js/Api.js @@ -23,6 +23,22 @@ export default class Api { }`}); } + getSms(page) { + return axios.post('/graphql', {query: `query { + sms(page: ${page}) { + data { + id + body + transaction_id + meta + } + paginatorInfo { + hasMorePages + } + } + }`}); + } + getBrands(page) { return axios.post('/graphql', {query: `query { brands(page: ${page}) { diff --git a/resources/js/Layouts/Authenticated.js b/resources/js/Layouts/Authenticated.js index cb2d7ac..9696ae6 100644 --- a/resources/js/Layouts/Authenticated.js +++ b/resources/js/Layouts/Authenticated.js @@ -43,6 +43,12 @@ export default function Authenticated({ auth, children }) { Categories + +
+ Id + | ++ Body + | ++ Meta + | ++ Processed + | ++ Edit + | +
---|---|---|---|---|
{item.id} | +{item.body.substr(0, 30)}... | +{item.meta} | +{item.transaction_id ? '✅' : '❌'} | ++ + | +