774 lines
18 KiB
JavaScript
774 lines
18 KiB
JavaScript
import mock from '@/@fake-db/mock'
|
|
import { genId, paginateArray } from '@/@fake-db/utils'
|
|
import avatar1 from '@images/avatars/avatar-1.png'
|
|
import avatar2 from '@images/avatars/avatar-2.png'
|
|
import avatar3 from '@images/avatars/avatar-3.png'
|
|
import avatar4 from '@images/avatars/avatar-4.png'
|
|
import avatar5 from '@images/avatars/avatar-5.png'
|
|
import avatar6 from '@images/avatars/avatar-6.png'
|
|
import avatar7 from '@images/avatars/avatar-7.png'
|
|
import avatar8 from '@images/avatars/avatar-8.png'
|
|
|
|
const users = [
|
|
{
|
|
id: 1,
|
|
fullName: 'Galen Slixby',
|
|
company: 'Yotz PVT LTD',
|
|
role: 'editor',
|
|
country: 'El Salvador',
|
|
contact: '(479) 232-9151',
|
|
email: 'gslixby0@abc.net.au',
|
|
currentPlan: 'enterprise',
|
|
status: 'inactive',
|
|
billing: 'Auto Debit',
|
|
avatar: '',
|
|
},
|
|
{
|
|
id: 2,
|
|
fullName: 'Halsey Redmore',
|
|
company: 'Skinder PVT LTD',
|
|
role: 'author',
|
|
country: 'Albania',
|
|
contact: '(472) 607-9137',
|
|
email: 'hredmore1@imgur.com',
|
|
currentPlan: 'team',
|
|
status: 'pending',
|
|
avatar: avatar1,
|
|
billing: 'Manual - Paypal',
|
|
},
|
|
{
|
|
id: 3,
|
|
fullName: 'Marjory Sicely',
|
|
company: 'Oozz PVT LTD',
|
|
role: 'maintainer',
|
|
country: 'Russia',
|
|
contact: '(321) 264-4599',
|
|
email: 'msicely2@who.int',
|
|
currentPlan: 'enterprise',
|
|
status: 'active',
|
|
avatar: avatar1,
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 4,
|
|
fullName: 'Cyrill Risby',
|
|
company: 'Oozz PVT LTD',
|
|
role: 'maintainer',
|
|
country: 'China',
|
|
contact: '(923) 690-6806',
|
|
email: 'crisby3@wordpress.com',
|
|
currentPlan: 'team',
|
|
status: 'inactive',
|
|
avatar: avatar3,
|
|
billing: 'Manual - Credit Card',
|
|
},
|
|
{
|
|
id: 5,
|
|
fullName: 'Maggy Hurran',
|
|
company: 'Aimbo PVT LTD',
|
|
role: 'subscriber',
|
|
country: 'Pakistan',
|
|
contact: '(669) 914-1078',
|
|
email: 'mhurran4@yahoo.co.jp',
|
|
currentPlan: 'enterprise',
|
|
status: 'pending',
|
|
avatar: avatar1,
|
|
billing: 'Auto Debit',
|
|
},
|
|
{
|
|
id: 6,
|
|
fullName: 'Silvain Halstead',
|
|
company: 'Jaxbean PVT LTD',
|
|
role: 'author',
|
|
country: 'China',
|
|
contact: '(958) 973-3093',
|
|
email: 'shalstead5@shinystat.com',
|
|
currentPlan: 'company',
|
|
status: 'active',
|
|
avatar: '',
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 7,
|
|
fullName: 'Breena Gallemore',
|
|
company: 'Jazzy PVT LTD',
|
|
role: 'subscriber',
|
|
country: 'Canada',
|
|
contact: '(825) 977-8152',
|
|
email: 'bgallemore6@boston.com',
|
|
currentPlan: 'company',
|
|
status: 'pending',
|
|
avatar: '',
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 8,
|
|
fullName: 'Kathryne Liger',
|
|
company: 'Pixoboo PVT LTD',
|
|
role: 'author',
|
|
country: 'France',
|
|
contact: '(187) 440-0934',
|
|
email: 'kliger7@vinaora.com',
|
|
currentPlan: 'enterprise',
|
|
status: 'pending',
|
|
avatar: avatar4,
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 9,
|
|
fullName: 'Franz Scotfurth',
|
|
company: 'Tekfly PVT LTD',
|
|
role: 'subscriber',
|
|
country: 'China',
|
|
contact: '(978) 146-5443',
|
|
email: 'fscotfurth8@dailymotion.com',
|
|
currentPlan: 'team',
|
|
status: 'pending',
|
|
avatar: avatar2,
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 10,
|
|
fullName: 'Jillene Bellany',
|
|
company: 'Gigashots PVT LTD',
|
|
role: 'maintainer',
|
|
country: 'Jamaica',
|
|
contact: '(589) 284-6732',
|
|
email: 'jbellany9@kickstarter.com',
|
|
currentPlan: 'company',
|
|
status: 'inactive',
|
|
avatar: avatar5,
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 11,
|
|
fullName: 'Jonah Wharlton',
|
|
company: 'Eare PVT LTD',
|
|
role: 'subscriber',
|
|
country: 'United States',
|
|
contact: '(176) 532-6824',
|
|
email: 'jwharltona@oakley.com',
|
|
currentPlan: 'team',
|
|
status: 'inactive',
|
|
avatar: avatar4,
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 12,
|
|
fullName: 'Seth Hallam',
|
|
company: 'Yakitri PVT LTD',
|
|
role: 'subscriber',
|
|
country: 'Peru',
|
|
contact: '(234) 464-0600',
|
|
email: 'shallamb@hugedomains.com',
|
|
currentPlan: 'team',
|
|
status: 'pending',
|
|
avatar: avatar5,
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 13,
|
|
fullName: 'Yoko Pottie',
|
|
company: 'Leenti PVT LTD',
|
|
role: 'subscriber',
|
|
country: 'Philippines',
|
|
contact: '(907) 284-5083',
|
|
email: 'ypottiec@privacy.gov.au',
|
|
currentPlan: 'basic',
|
|
status: 'inactive',
|
|
avatar: avatar7,
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 14,
|
|
fullName: 'Maximilianus Krause',
|
|
company: 'Digitube PVT LTD',
|
|
role: 'author',
|
|
country: 'Democratic Republic of the Congo',
|
|
contact: '(167) 135-7392',
|
|
email: 'mkraused@stanford.edu',
|
|
currentPlan: 'team',
|
|
status: 'active',
|
|
avatar: avatar6,
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 15,
|
|
fullName: 'Zsazsa McCleverty',
|
|
company: 'Kaymbo PVT LTD',
|
|
role: 'maintainer',
|
|
country: 'France',
|
|
contact: '(317) 409-6565',
|
|
email: 'zmcclevertye@soundcloud.com',
|
|
currentPlan: 'enterprise',
|
|
status: 'active',
|
|
avatar: avatar2,
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 16,
|
|
fullName: 'Bentlee Emblin',
|
|
company: 'Yambee PVT LTD',
|
|
role: 'author',
|
|
country: 'Spain',
|
|
contact: '(590) 606-1056',
|
|
email: 'bemblinf@wired.com',
|
|
currentPlan: 'company',
|
|
status: 'active',
|
|
avatar: avatar6,
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 17,
|
|
fullName: 'Brockie Myles',
|
|
company: 'Wikivu PVT LTD',
|
|
role: 'maintainer',
|
|
country: 'Poland',
|
|
contact: '(553) 225-9905',
|
|
email: 'bmylesg@amazon.com',
|
|
currentPlan: 'basic',
|
|
status: 'active',
|
|
avatar: '',
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 18,
|
|
fullName: 'Bertha Biner',
|
|
company: 'Twinte PVT LTD',
|
|
role: 'editor',
|
|
country: 'Yemen',
|
|
contact: '(901) 916-9287',
|
|
email: 'bbinerh@mozilla.com',
|
|
currentPlan: 'team',
|
|
status: 'active',
|
|
avatar: avatar7,
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 19,
|
|
fullName: 'Travus Bruntjen',
|
|
company: 'Cogidoo PVT LTD',
|
|
role: 'admin',
|
|
country: 'France',
|
|
contact: '(524) 586-6057',
|
|
email: 'tbruntjeni@sitemeter.com',
|
|
currentPlan: 'enterprise',
|
|
status: 'active',
|
|
avatar: '',
|
|
billing: 'Auto Debit',
|
|
},
|
|
{
|
|
id: 20,
|
|
fullName: 'Wesley Burland',
|
|
company: 'Bubblemix PVT LTD',
|
|
role: 'editor',
|
|
country: 'Honduras',
|
|
contact: '(569) 683-1292',
|
|
email: 'wburlandj@uiuc.edu',
|
|
currentPlan: 'team',
|
|
status: 'inactive',
|
|
avatar: avatar6,
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 21,
|
|
fullName: 'Selina Kyle',
|
|
company: 'Wayne Enterprises',
|
|
role: 'admin',
|
|
country: 'USA',
|
|
contact: '(829) 537-0057',
|
|
email: 'irena.dubrovna@wayne.com',
|
|
currentPlan: 'team',
|
|
status: 'active',
|
|
avatar: avatar1,
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 22,
|
|
fullName: 'Jameson Lyster',
|
|
company: 'Quaxo PVT LTD',
|
|
role: 'editor',
|
|
country: 'Ukraine',
|
|
contact: '(593) 624-0222',
|
|
email: 'jlysterl@guardian.co.uk',
|
|
currentPlan: 'company',
|
|
status: 'inactive',
|
|
avatar: avatar8,
|
|
billing: 'Auto Debit',
|
|
},
|
|
{
|
|
id: 23,
|
|
fullName: 'Kare Skitterel',
|
|
company: 'Ainyx PVT LTD',
|
|
role: 'maintainer',
|
|
country: 'Poland',
|
|
contact: '(254) 845-4107',
|
|
email: 'kskitterelm@ainyx.com',
|
|
currentPlan: 'basic',
|
|
status: 'pending',
|
|
avatar: avatar3,
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 24,
|
|
fullName: 'Cleavland Hatherleigh',
|
|
company: 'Flipopia PVT LTD',
|
|
role: 'admin',
|
|
country: 'Brazil',
|
|
contact: '(700) 783-7498',
|
|
email: 'chatherleighn@washington.edu',
|
|
currentPlan: 'team',
|
|
status: 'pending',
|
|
avatar: avatar2,
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 25,
|
|
fullName: 'Adeline Micco',
|
|
company: 'Topicware PVT LTD',
|
|
role: 'admin',
|
|
country: 'France',
|
|
contact: '(227) 598-1841',
|
|
email: 'amiccoo@whitehouse.gov',
|
|
currentPlan: 'enterprise',
|
|
status: 'pending',
|
|
avatar: '',
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 26,
|
|
fullName: 'Hugh Hasson',
|
|
company: 'Skinix PVT LTD',
|
|
role: 'admin',
|
|
country: 'China',
|
|
contact: '(582) 516-1324',
|
|
email: 'hhassonp@bizjournals.com',
|
|
currentPlan: 'basic',
|
|
status: 'inactive',
|
|
avatar: avatar4,
|
|
billing: 'Auto Debit',
|
|
},
|
|
{
|
|
id: 27,
|
|
fullName: 'Germain Jacombs',
|
|
company: 'Youopia PVT LTD',
|
|
role: 'editor',
|
|
country: 'Zambia',
|
|
contact: '(137) 467-5393',
|
|
email: 'gjacombsq@jigsy.com',
|
|
currentPlan: 'enterprise',
|
|
status: 'active',
|
|
avatar: avatar5,
|
|
billing: 'Auto Debit',
|
|
},
|
|
{
|
|
id: 28,
|
|
fullName: 'Bree Kilday',
|
|
company: 'Jetpulse PVT LTD',
|
|
role: 'maintainer',
|
|
country: 'Portugal',
|
|
contact: '(412) 476-0854',
|
|
email: 'bkildayr@mashable.com',
|
|
currentPlan: 'team',
|
|
status: 'active',
|
|
avatar: '',
|
|
billing: 'Auto Debit',
|
|
},
|
|
{
|
|
id: 29,
|
|
fullName: 'Candice Pinyon',
|
|
company: 'Kare PVT LTD',
|
|
role: 'maintainer',
|
|
country: 'Sweden',
|
|
contact: '(170) 683-1520',
|
|
email: 'cpinyons@behance.net',
|
|
currentPlan: 'team',
|
|
status: 'active',
|
|
avatar: avatar7,
|
|
billing: 'Auto Debit',
|
|
},
|
|
{
|
|
id: 30,
|
|
fullName: 'Isabel Mallindine',
|
|
company: 'Voomm PVT LTD',
|
|
role: 'subscriber',
|
|
country: 'Slovenia',
|
|
contact: '(332) 803-1983',
|
|
email: 'imallindinet@shinystat.com',
|
|
currentPlan: 'team',
|
|
status: 'pending',
|
|
avatar: '',
|
|
billing: 'Auto Debit',
|
|
},
|
|
{
|
|
id: 31,
|
|
fullName: 'Gwendolyn Meineken',
|
|
company: 'Oyondu PVT LTD',
|
|
role: 'admin',
|
|
country: 'Moldova',
|
|
contact: '(551) 379-7460',
|
|
email: 'gmeinekenu@hc360.com',
|
|
currentPlan: 'basic',
|
|
status: 'pending',
|
|
avatar: avatar1,
|
|
billing: 'Auto Debit',
|
|
},
|
|
{
|
|
id: 32,
|
|
fullName: 'Rafaellle Snowball',
|
|
company: 'Fivespan PVT LTD',
|
|
role: 'editor',
|
|
country: 'Philippines',
|
|
contact: '(974) 829-0911',
|
|
email: 'rsnowballv@indiegogo.com',
|
|
currentPlan: 'basic',
|
|
status: 'pending',
|
|
avatar: avatar5,
|
|
billing: 'Auto Debit',
|
|
},
|
|
{
|
|
id: 33,
|
|
fullName: 'Rochette Emer',
|
|
company: 'Thoughtworks PVT LTD',
|
|
role: 'admin',
|
|
country: 'North Korea',
|
|
contact: '(841) 889-3339',
|
|
email: 'remerw@blogtalkradio.com',
|
|
currentPlan: 'basic',
|
|
status: 'active',
|
|
avatar: avatar8,
|
|
billing: 'Manual - Paypal',
|
|
},
|
|
{
|
|
id: 34,
|
|
fullName: 'Ophelie Fibbens',
|
|
company: 'Jaxbean PVT LTD',
|
|
role: 'subscriber',
|
|
country: 'Indonesia',
|
|
contact: '(764) 885-7351',
|
|
email: 'ofibbensx@booking.com',
|
|
currentPlan: 'company',
|
|
status: 'active',
|
|
avatar: avatar4,
|
|
billing: 'Manual - Paypal',
|
|
},
|
|
{
|
|
id: 35,
|
|
fullName: 'Stephen MacGilfoyle',
|
|
company: 'Browseblab PVT LTD',
|
|
role: 'maintainer',
|
|
country: 'Japan',
|
|
contact: '(350) 589-8520',
|
|
email: 'smacgilfoyley@bigcartel.com',
|
|
currentPlan: 'company',
|
|
status: 'pending',
|
|
avatar: '',
|
|
billing: 'Manual - Paypal',
|
|
},
|
|
{
|
|
id: 36,
|
|
fullName: 'Bradan Rosebotham',
|
|
company: 'Agivu PVT LTD',
|
|
role: 'subscriber',
|
|
country: 'Belarus',
|
|
contact: '(882) 933-2180',
|
|
email: 'brosebothamz@tripadvisor.com',
|
|
currentPlan: 'team',
|
|
status: 'inactive',
|
|
avatar: '',
|
|
billing: 'Manual - Paypal',
|
|
},
|
|
{
|
|
id: 37,
|
|
fullName: 'Skip Hebblethwaite',
|
|
company: 'Katz PVT LTD',
|
|
role: 'admin',
|
|
country: 'Canada',
|
|
contact: '(610) 343-1024',
|
|
email: 'shebblethwaite10@arizona.edu',
|
|
currentPlan: 'company',
|
|
status: 'inactive',
|
|
avatar: avatar1,
|
|
billing: 'Manual - Paypal',
|
|
},
|
|
{
|
|
id: 38,
|
|
fullName: 'Moritz Piccard',
|
|
company: 'Twitternation PVT LTD',
|
|
role: 'maintainer',
|
|
country: 'Croatia',
|
|
contact: '(365) 277-2986',
|
|
email: 'mpiccard11@vimeo.com',
|
|
currentPlan: 'enterprise',
|
|
status: 'inactive',
|
|
avatar: avatar1,
|
|
billing: 'Auto Debit',
|
|
},
|
|
{
|
|
id: 39,
|
|
fullName: 'Tyne Widmore',
|
|
company: 'Yombu PVT LTD',
|
|
role: 'subscriber',
|
|
country: 'Finland',
|
|
contact: '(531) 731-0928',
|
|
email: 'twidmore12@bravesites.com',
|
|
currentPlan: 'team',
|
|
status: 'pending',
|
|
avatar: '',
|
|
billing: 'Manual - Credit Card',
|
|
},
|
|
{
|
|
id: 40,
|
|
fullName: 'Florenza Desporte',
|
|
company: 'Kamba PVT LTD',
|
|
role: 'author',
|
|
country: 'Ukraine',
|
|
contact: '(312) 104-2638',
|
|
email: 'fdesporte13@omniture.com',
|
|
currentPlan: 'company',
|
|
status: 'active',
|
|
avatar: avatar6,
|
|
billing: 'Manual - Credit Card',
|
|
},
|
|
{
|
|
id: 41,
|
|
fullName: 'Edwina Baldetti',
|
|
company: 'Dazzlesphere PVT LTD',
|
|
role: 'maintainer',
|
|
country: 'Haiti',
|
|
contact: '(315) 329-3578',
|
|
email: 'ebaldetti14@theguardian.com',
|
|
currentPlan: 'team',
|
|
status: 'pending',
|
|
avatar: '',
|
|
billing: 'Manual - Cash',
|
|
},
|
|
{
|
|
id: 42,
|
|
fullName: 'Benedetto Rossiter',
|
|
company: 'Mybuzz PVT LTD',
|
|
role: 'editor',
|
|
country: 'Indonesia',
|
|
contact: '(323) 175-6741',
|
|
email: 'brossiter15@craigslist.org',
|
|
currentPlan: 'team',
|
|
status: 'inactive',
|
|
avatar: '',
|
|
billing: 'Manual - Credit Card',
|
|
},
|
|
{
|
|
id: 43,
|
|
fullName: 'Micaela McNirlan',
|
|
company: 'Tambee PVT LTD',
|
|
role: 'admin',
|
|
country: 'Indonesia',
|
|
contact: '(242) 952-0916',
|
|
email: 'mmcnirlan16@hc360.com',
|
|
currentPlan: 'basic',
|
|
status: 'inactive',
|
|
avatar: '',
|
|
billing: 'Manual - Credit Card',
|
|
},
|
|
{
|
|
id: 44,
|
|
fullName: 'Vladamir Koschek',
|
|
company: 'Centimia PVT LTD',
|
|
role: 'author',
|
|
country: 'Guatemala',
|
|
contact: '(531) 758-8335',
|
|
email: 'vkoschek17@abc.net.au',
|
|
currentPlan: 'team',
|
|
status: 'active',
|
|
avatar: '',
|
|
billing: 'Auto Debit',
|
|
},
|
|
{
|
|
id: 45,
|
|
fullName: 'Corrie Perot',
|
|
company: 'Flipopia PVT LTD',
|
|
role: 'subscriber',
|
|
country: 'China',
|
|
contact: '(659) 385-6808',
|
|
email: 'cperot18@goo.ne.jp',
|
|
currentPlan: 'team',
|
|
status: 'pending',
|
|
avatar: avatar3,
|
|
billing: 'Manual - Paypal',
|
|
},
|
|
{
|
|
id: 46,
|
|
fullName: 'Saunder Offner',
|
|
company: 'Skalith PVT LTD',
|
|
role: 'maintainer',
|
|
country: 'Poland',
|
|
contact: '(200) 586-2264',
|
|
email: 'soffner19@mac.com',
|
|
currentPlan: 'enterprise',
|
|
status: 'pending',
|
|
avatar: '',
|
|
billing: 'Auto Debit',
|
|
},
|
|
{
|
|
id: 47,
|
|
fullName: 'Karena Courtliff',
|
|
company: 'Feedfire PVT LTD',
|
|
role: 'admin',
|
|
country: 'China',
|
|
contact: '(478) 199-0020',
|
|
email: 'kcourtliff1a@bbc.co.uk',
|
|
currentPlan: 'basic',
|
|
status: 'active',
|
|
avatar: avatar1,
|
|
billing: 'Manual - Credit Card',
|
|
},
|
|
{
|
|
id: 48,
|
|
fullName: 'Onfre Wind',
|
|
company: 'Thoughtmix PVT LTD',
|
|
role: 'admin',
|
|
country: 'Ukraine',
|
|
contact: '(344) 262-7270',
|
|
email: 'owind1b@yandex.ru',
|
|
currentPlan: 'basic',
|
|
status: 'pending',
|
|
avatar: '',
|
|
billing: 'Manual - Credit Card',
|
|
},
|
|
{
|
|
id: 49,
|
|
fullName: 'Paulie Durber',
|
|
company: 'Babbleblab PVT LTD',
|
|
role: 'subscriber',
|
|
country: 'Sweden',
|
|
contact: '(694) 676-1275',
|
|
email: 'pdurber1c@gov.uk',
|
|
currentPlan: 'team',
|
|
status: 'inactive',
|
|
avatar: '',
|
|
billing: 'Auto Debit',
|
|
},
|
|
{
|
|
id: 50,
|
|
fullName: 'Beverlie Krabbe',
|
|
company: 'Kaymbo PVT LTD',
|
|
role: 'editor',
|
|
country: 'China',
|
|
contact: '(397) 294-5153',
|
|
email: 'bkrabbe1d@home.pl',
|
|
currentPlan: 'company',
|
|
status: 'active',
|
|
avatar: avatar2,
|
|
billing: 'Manual - Credit Card',
|
|
},
|
|
]
|
|
|
|
|
|
// 👉 return users
|
|
// eslint-disable-next-line sonarjs/cognitive-complexity
|
|
mock.onGet('/apps/users/list').reply(config => {
|
|
const { q = '', role = null, plan = null, status = null, options = {} } = config.params ?? {}
|
|
const { sortBy = '', itemsPerPage = 10, page = 1 } = options
|
|
const queryLower = q.toLowerCase()
|
|
|
|
// filter users
|
|
let filteredUsers = users.filter(user => ((user.fullName.toLowerCase().includes(queryLower) || user.email.toLowerCase().includes(queryLower)) && user.role === (role || user.role) && user.currentPlan === (plan || user.currentPlan) && user.status === (status || user.status))).reverse()
|
|
|
|
// sort users
|
|
const sort = JSON.parse(JSON.stringify(sortBy))
|
|
if (sort.length) {
|
|
if (sort[0]?.key === 'user') {
|
|
filteredUsers = filteredUsers.sort((a, b) => {
|
|
if (sort[0]?.order === 'asc')
|
|
return a.fullName.localeCompare(b.fullName)
|
|
else
|
|
return b.fullName.localeCompare(a.fullName)
|
|
})
|
|
}
|
|
if (sort[0]?.key === 'billing') {
|
|
filteredUsers = filteredUsers.sort((a, b) => {
|
|
if (sort[0]?.order === 'asc')
|
|
return a.billing.localeCompare(b.billing)
|
|
else
|
|
return b.billing.localeCompare(a.billing)
|
|
})
|
|
}
|
|
if (sort[0]?.key === 'role') {
|
|
filteredUsers = filteredUsers.sort((a, b) => {
|
|
if (sort[0]?.order === 'asc')
|
|
return a.role.localeCompare(b.role)
|
|
else
|
|
return b.role.localeCompare(a.role)
|
|
})
|
|
}
|
|
if (sort[0]?.key === 'plan') {
|
|
filteredUsers = filteredUsers.sort((a, b) => {
|
|
if (sort[0]?.order === 'asc')
|
|
return a.currentPlan.localeCompare(b.currentPlan)
|
|
else
|
|
return b.currentPlan.localeCompare(a.currentPlan)
|
|
})
|
|
}
|
|
if (sort[0]?.key === 'status') {
|
|
filteredUsers = filteredUsers.sort((a, b) => {
|
|
if (sort[0]?.order === 'asc')
|
|
return a.status.localeCompare(b.status)
|
|
else
|
|
return b.status.localeCompare(a.status)
|
|
})
|
|
}
|
|
}
|
|
const totalUsers = filteredUsers.length
|
|
|
|
// total pages
|
|
const totalPages = Math.ceil(totalUsers / itemsPerPage)
|
|
|
|
return [200, { users: paginateArray(filteredUsers, itemsPerPage, page), totalPages, totalUsers, page: page > Math.ceil(totalUsers / itemsPerPage) ? 1 : page }]
|
|
})
|
|
|
|
// 👉 Add user
|
|
mock.onPost('/apps/users/user').reply(config => {
|
|
const { user } = JSON.parse(config.data)
|
|
|
|
user.id = genId(users)
|
|
users.push(user)
|
|
|
|
return [201, { user }]
|
|
})
|
|
|
|
// 👉 Get Single user
|
|
mock.onGet(/\/apps\/users\/\d+/).reply(config => {
|
|
// Get event id from URL
|
|
const userId = config.url?.substring(config.url.lastIndexOf('/') + 1)
|
|
|
|
// Convert Id to number
|
|
const Id = Number(userId)
|
|
const userIndex = users.findIndex(e => e.id === Id)
|
|
const user = users[userIndex]
|
|
|
|
Object.assign(user, {
|
|
taskDone: 1230,
|
|
projectDone: 568,
|
|
taxId: 'Tax-8894',
|
|
language: 'English',
|
|
})
|
|
if (user)
|
|
return [200, user]
|
|
|
|
return [404]
|
|
})
|
|
mock.onDelete(/\/apps\/users\/\d+/).reply(config => {
|
|
// Get user id from URL
|
|
const userId = config.url?.substring(config.url.lastIndexOf('/') + 1)
|
|
|
|
// Convert Id to number
|
|
const Id = Number(userId)
|
|
const userIndex = users.findIndex(e => e.id === Id)
|
|
if (userIndex >= 0) {
|
|
users.splice(userIndex, 1)
|
|
|
|
return [200]
|
|
}
|
|
|
|
return [400]
|
|
})
|