IO-899 Refactor ccc paginated query
This commit is contained in:
@@ -6,7 +6,6 @@ import { useTranslation } from "react-i18next";
|
||||
import { Link, useHistory, useLocation } from "react-router-dom";
|
||||
import { DateTimeFormatter } from "../../utils/DateFormatter";
|
||||
import { alphaSort } from "../../utils/sorters";
|
||||
import TimeTicketsDatesSelector from "../ticket-tickets-dates-selector/time-tickets-dates-selector.component";
|
||||
|
||||
export default function ContractsList({ loading, contracts, refetch, total }) {
|
||||
const [state, setState] = useState({
|
||||
@@ -126,11 +125,6 @@ export default function ContractsList({ loading, contracts, refetch, total }) {
|
||||
<Card
|
||||
extra={
|
||||
<Space wrap>
|
||||
<Button onClick={() => refetch()}>
|
||||
<SyncOutlined />
|
||||
</Button>
|
||||
|
||||
<TimeTicketsDatesSelector />
|
||||
{search.search && (
|
||||
<>
|
||||
<Typography.Title level={4}>
|
||||
@@ -146,6 +140,9 @@ export default function ContractsList({ loading, contracts, refetch, total }) {
|
||||
</Button>
|
||||
</>
|
||||
)}
|
||||
<Button onClick={() => refetch()}>
|
||||
<SyncOutlined />
|
||||
</Button>
|
||||
<Input.Search
|
||||
placeholder={search.searh || t("general.labels.search")}
|
||||
onSearch={(value) => {
|
||||
|
||||
@@ -144,23 +144,16 @@ export const QUERY_CONTRACT_BY_PK = gql`
|
||||
|
||||
export const QUERY_ACTIVE_CONTRACTS_PAGINATED = gql`
|
||||
query QUERY_ACTIVE_CONTRACTS_PAGINATED(
|
||||
$search: String
|
||||
$offset: Int
|
||||
$limit: Int
|
||||
$order: [cccontracts_order_by!]!
|
||||
$start: timestamptz
|
||||
$end: timestamptz
|
||||
) {
|
||||
cccontracts(
|
||||
search_cccontracts(
|
||||
args: { search: $search }
|
||||
offset: $offset
|
||||
limit: $limit
|
||||
order_by: $order
|
||||
where: {
|
||||
_or: [
|
||||
{ actualreturn: { _lte: $end } }
|
||||
{ actualreturn: { _is_null: true } }
|
||||
]
|
||||
start: { _gte: $start }
|
||||
}
|
||||
) {
|
||||
agreementnumber
|
||||
courtesycarid
|
||||
@@ -171,7 +164,6 @@ export const QUERY_ACTIVE_CONTRACTS_PAGINATED = gql`
|
||||
jobid
|
||||
job {
|
||||
id
|
||||
|
||||
ro_number
|
||||
ownr_fn
|
||||
ownr_ln
|
||||
@@ -190,7 +182,7 @@ export const QUERY_ACTIVE_CONTRACTS_PAGINATED = gql`
|
||||
plate
|
||||
}
|
||||
}
|
||||
cccontracts_aggregate {
|
||||
search_cccontracts_aggregate(args: { search: $search }) {
|
||||
aggregate {
|
||||
count(distinct: true)
|
||||
}
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
import { useQuery } from "@apollo/client";
|
||||
import queryString from "query-string";
|
||||
import React, { useEffect } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { connect } from "react-redux";
|
||||
import { useLocation } from "react-router-dom";
|
||||
import AlertComponent from "../../components/alert/alert.component";
|
||||
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
|
||||
import { QUERY_ACTIVE_CONTRACTS_PAGINATED } from "../../graphql/cccontracts.queries";
|
||||
import {
|
||||
setBreadcrumbs,
|
||||
setSelectedHeader,
|
||||
} from "../../redux/application/application.actions";
|
||||
import ContractsPageComponent from "./contracts.page.component";
|
||||
import queryString from "query-string";
|
||||
import { useLocation } from "react-router-dom";
|
||||
import moment from "moment";
|
||||
import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component";
|
||||
|
||||
const mapDispatchToProps = (dispatch) => ({
|
||||
setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)),
|
||||
@@ -21,17 +20,13 @@ const mapDispatchToProps = (dispatch) => ({
|
||||
|
||||
export function ContractsPageContainer({ setBreadcrumbs, setSelectedHeader }) {
|
||||
const searchParams = queryString.parse(useLocation().search);
|
||||
const { page, sortcolumn, sortorder, start, end } = searchParams;
|
||||
const { search, page, sortcolumn, sortorder } = searchParams;
|
||||
|
||||
const { loading, error, data, refetch } = useQuery(
|
||||
QUERY_ACTIVE_CONTRACTS_PAGINATED,
|
||||
{
|
||||
variables: {
|
||||
//search: search || "",
|
||||
start: start
|
||||
? moment(start)
|
||||
: moment().startOf("week").subtract(7, "days"),
|
||||
end: end ? moment(end) : moment().endOf("week"),
|
||||
search: search || "",
|
||||
offset: page ? (page - 1) * 25 : 0,
|
||||
limit: 25,
|
||||
order: [
|
||||
@@ -62,14 +57,12 @@ export function ContractsPageContainer({ setBreadcrumbs, setSelectedHeader }) {
|
||||
if (error) return <AlertComponent message={error.message} type="error" />;
|
||||
return (
|
||||
<RbacWrapper action="contracts:list">
|
||||
<div>
|
||||
<ContractsPageComponent
|
||||
loading={loading}
|
||||
refetch={refetch}
|
||||
data={data ? data.cccontracts : []}
|
||||
total={data ? data.cccontracts_aggregate.aggregate.count : 0}
|
||||
/>
|
||||
</div>
|
||||
<ContractsPageComponent
|
||||
loading={loading}
|
||||
refetch={refetch}
|
||||
data={data ? data.search_cccontracts : []}
|
||||
total={data ? data.search_cccontracts_aggregate.aggregate.count : 0}
|
||||
/>
|
||||
</RbacWrapper>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
21
hasura/migrations/1618357029467_run_sql_migration/up.yaml
Normal file
21
hasura/migrations/1618357029467_run_sql_migration/up.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: "CREATE OR REPLACE FUNCTION public.search_cccontracts (search text)\n\tRETURNS
|
||||
SETOF jobs\n\tLANGUAGE plpgsql\n\tSTABLE\n\tAS $function$\nBEGIN\n\tIF search
|
||||
= '' THEN\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\t\tcccontracts
|
||||
c;\n\tELSE\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\t\tcccontracts
|
||||
contracts,\n\t\t\tcourtesycars cars,\n\t\t\tjobs jobs\n\t\tWHERE (jobs.ro_number
|
||||
ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_fn ILIKE '%' || search || '%'\n\t\t\tOR
|
||||
jobs.ownr_ln ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_co_nm ILIKE '%'
|
||||
|| search || '%'\n\t\t\tOR contracts.agreementnumber ILIKE '%' || search ||
|
||||
'%'\n\t\t\tOR contracts.driver_fn ILIKE '%' || search || '%'\n\t\t\tOR contracts.driver_ln
|
||||
ILIKE '%' || search || '%'\n\t\t\tOR cars.fleetnumber ILIKE '%' || search ||
|
||||
'%'\n\t\t\tOR cars.make ILIKE '%' || search || '%'\n\t\t\tOR cars.model ILIKE
|
||||
'%' || search || '%')\n\t\t\tAND contracts.jobid = jobs.id\n\t\t\tAND contracts.courtesycarid
|
||||
= cars.id;\n\t\t\t\n\tEND IF;\nEND\n$function$;"
|
||||
type: run_sql
|
||||
- args:
|
||||
name: search_cccontracts
|
||||
schema: public
|
||||
type: track_function
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
@@ -0,0 +1,5 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: drop function public.search_cccontracts;
|
||||
type: run_sql
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
21
hasura/migrations/1618357269948_run_sql_migration/up.yaml
Normal file
21
hasura/migrations/1618357269948_run_sql_migration/up.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
- args:
|
||||
cascade: true
|
||||
read_only: false
|
||||
sql: "CREATE OR REPLACE FUNCTION public.search_cccontracts(search text)\n RETURNS
|
||||
SETOF jobs\n LANGUAGE plpgsql\n STABLE\nAS $function$\nBEGIN\n\tIF search =
|
||||
'' THEN\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\t\tcccontracts
|
||||
c;\n\tELSE\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\tcourtesycars
|
||||
cars,\n\t\t\tjobs jobs,\n\t\t\tcccontracts contracts\n\t\t\t\n\t\tWHERE (jobs.ro_number
|
||||
ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_fn ILIKE '%' || search || '%'\n\t\t\tOR
|
||||
jobs.ownr_ln ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_co_nm ILIKE '%'
|
||||
|| search || '%'\n\t\t\tOR contracts.agreementnumber ILIKE '%' || search ||
|
||||
'%'\n\t\t\tOR contracts.driver_fn ILIKE '%' || search || '%'\n\t\t\tOR contracts.driver_ln
|
||||
ILIKE '%' || search || '%'\n\t\t\tOR cars.fleetnumber ILIKE '%' || search ||
|
||||
'%'\n\t\t\tOR cars.make ILIKE '%' || search || '%'\n\t\t\tOR cars.model ILIKE
|
||||
'%' || search || '%')\n\t\t\tAND contracts.jobid = jobs.id\n\t\t\tAND contracts.courtesycarid
|
||||
= cars.id;\n\t\t\t\n\tEND IF;\nEND\n$function$;"
|
||||
type: run_sql
|
||||
- args:
|
||||
name: search_cccontracts
|
||||
schema: public
|
||||
type: track_function
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
21
hasura/migrations/1618357338608_run_sql_migration/up.yaml
Normal file
21
hasura/migrations/1618357338608_run_sql_migration/up.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: "drop function public.search_cccontracts;\nCREATE OR REPLACE FUNCTION public.search_cccontracts(search
|
||||
text)\n RETURNS SETOF cccontracts\n LANGUAGE plpgsql\n STABLE\nAS $function$\nBEGIN\n\tIF
|
||||
search = '' THEN\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\t\tcccontracts
|
||||
c;\n\tELSE\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\tcourtesycars
|
||||
cars,\n\t\t\tjobs jobs,\n\t\t\tcccontracts contracts\n\t\t\t\n\t\tWHERE (jobs.ro_number
|
||||
ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_fn ILIKE '%' || search || '%'\n\t\t\tOR
|
||||
jobs.ownr_ln ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_co_nm ILIKE '%'
|
||||
|| search || '%'\n\t\t\tOR contracts.agreementnumber ILIKE '%' || search ||
|
||||
'%'\n\t\t\tOR contracts.driver_fn ILIKE '%' || search || '%'\n\t\t\tOR contracts.driver_ln
|
||||
ILIKE '%' || search || '%'\n\t\t\tOR cars.fleetnumber ILIKE '%' || search ||
|
||||
'%'\n\t\t\tOR cars.make ILIKE '%' || search || '%'\n\t\t\tOR cars.model ILIKE
|
||||
'%' || search || '%')\n\t\t\tAND contracts.jobid = jobs.id\n\t\t\tAND contracts.courtesycarid
|
||||
= cars.id;\n\t\t\t\n\tEND IF;\nEND\n$function$;"
|
||||
type: run_sql
|
||||
- args:
|
||||
name: search_cccontracts
|
||||
schema: public
|
||||
type: track_function
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
@@ -0,0 +1,5 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: drop function public.search_cccontracts;
|
||||
type: run_sql
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
21
hasura/migrations/1618358164400_run_sql_migration/up.yaml
Normal file
21
hasura/migrations/1618358164400_run_sql_migration/up.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
- args:
|
||||
cascade: false
|
||||
read_only: false
|
||||
sql: "CREATE OR REPLACE FUNCTION public.search_cccontracts(search text)\n RETURNS
|
||||
SETOF cccontracts\n LANGUAGE plpgsql\n STABLE\nAS $function$\nBEGIN\n\tIF search
|
||||
= '' THEN\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\t\tcccontracts
|
||||
c;\n\tELSE\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\tcourtesycars
|
||||
cars,\n\t\t\tjobs jobs,\n\t\t\tcccontracts contracts\n\t\t\t\n\t\tWHERE (jobs.ro_number
|
||||
ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_fn ILIKE '%' || search || '%'\n\t\t\tOR
|
||||
jobs.ownr_ln ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_co_nm ILIKE '%'
|
||||
|| search || '%'\n\t\t\tOR (cast(contracts.agreementnumber as text)) ILIKE '%'
|
||||
|| search || '%'\n\t\t\tOR contracts.driver_fn ILIKE '%' || search || '%'\n\t\t\tOR
|
||||
contracts.driver_ln ILIKE '%' || search || '%'\n\t\t\tOR cars.fleetnumber ILIKE
|
||||
'%' || search || '%'\n\t\t\tOR cars.make ILIKE '%' || search || '%'\n\t\t\tOR
|
||||
cars.model ILIKE '%' || search || '%')\n\t\t\tAND contracts.jobid = jobs.id\n\t\t\tAND
|
||||
contracts.courtesycarid = cars.id;\n\t\t\t\n\tEND IF;\nEND\n$function$;"
|
||||
type: run_sql
|
||||
- args:
|
||||
name: search_cccontracts
|
||||
schema: public
|
||||
type: track_function
|
||||
@@ -0,0 +1 @@
|
||||
[]
|
||||
21
hasura/migrations/1618358356468_run_sql_migration/up.yaml
Normal file
21
hasura/migrations/1618358356468_run_sql_migration/up.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
- args:
|
||||
cascade: true
|
||||
read_only: false
|
||||
sql: "DROP FUNCTION public.search_cccontracts;\n\nCREATE OR REPLACE FUNCTION public.search_cccontracts(search
|
||||
text)\n RETURNS SETOF cccontracts\n LANGUAGE plpgsql\n STABLE\nAS $function$\nBEGIN\n\tIF
|
||||
search = '' THEN\n\t\tRETURN query\n\t\tSELECT\n\t\t\t*\n\t\tFROM\n\t\t\tcccontracts
|
||||
c;\n\tELSE\n\t\tRETURN query\n\t\tSELECT\n\t\t\tcontracts.*\n\t\tFROM\n\t\tcourtesycars
|
||||
cars,\n\t\t\tjobs jobs,\n\t\t\tcccontracts contracts\n\t\t\t\n\t\tWHERE (jobs.ro_number
|
||||
ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_fn ILIKE '%' || search || '%'\n\t\t\tOR
|
||||
jobs.ownr_ln ILIKE '%' || search || '%'\n\t\t\tOR jobs.ownr_co_nm ILIKE '%'
|
||||
|| search || '%'\n\t\t\tOR (cast(contracts.agreementnumber as text)) ILIKE '%'
|
||||
|| search || '%'\n\t\t\tOR contracts.driver_fn ILIKE '%' || search || '%'\n\t\t\tOR
|
||||
contracts.driver_ln ILIKE '%' || search || '%'\n\t\t\tOR cars.fleetnumber ILIKE
|
||||
'%' || search || '%'\n\t\t\tOR cars.make ILIKE '%' || search || '%'\n\t\t\tOR
|
||||
cars.model ILIKE '%' || search || '%')\n\t\t\tAND contracts.jobid = jobs.id\n\t\t\tAND
|
||||
contracts.courtesycarid = cars.id;\n\t\t\t\n\tEND IF;\nEND\n$function$;"
|
||||
type: run_sql
|
||||
- args:
|
||||
name: search_cccontracts
|
||||
schema: public
|
||||
type: track_function
|
||||
@@ -4226,6 +4226,9 @@ functions:
|
||||
- function:
|
||||
schema: public
|
||||
name: search_bills
|
||||
- function:
|
||||
schema: public
|
||||
name: search_cccontracts
|
||||
- function:
|
||||
schema: public
|
||||
name: search_jobs
|
||||
|
||||
Reference in New Issue
Block a user