Skip to content

Commit 70b0420

Browse files
author
Antonio Contreras LEMONCODE
committed
Implement delete employee
1 parent a746e9f commit 70b0420

3 files changed

Lines changed: 36 additions & 4 deletions

File tree

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
import { Employee } from './employee-list.api-model';
22
import { mockEmployeeList } from './employee-list.mock-data';
33

4+
let employeeList = [...mockEmployeeList];
5+
46
export const getEmployeeList = async (): Promise<Employee[]> => {
5-
return mockEmployeeList;
7+
return employeeList;
8+
};
9+
10+
export const deleteEmployee = async (id: string): Promise<boolean> => {
11+
employeeList = employeeList.filter(e => e.id !== id);
12+
return true;
613
};

src/pods/employee-list/employee-list.component.tsx

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React from 'react';
2-
import { routes } from 'core/router';
32
import {
43
TableContainer,
54
RowRendererProps,
@@ -12,16 +11,26 @@ interface Props {
1211
employeeList: Employee[];
1312
onCreate: () => void;
1413
onEdit: (id: string) => void;
14+
onDelete: (id: string) => void;
1515
}
1616

1717
export const EmployeeListComponent: React.FunctionComponent<Props> = ({
1818
employeeList,
1919
onCreate,
2020
onEdit,
21+
onDelete,
2122
}) => {
2223
const { filteredList, onSearch, search } = useSearchBar(employeeList, [
2324
'name',
2425
]);
26+
27+
const renderContent = ({ itemName }) => {
28+
return (
29+
<div>
30+
¿Seguro que quiere borrar a <strong>{itemName}</strong>?
31+
</div>
32+
);
33+
};
2534
return (
2635
<>
2736
<TableContainer
@@ -32,9 +41,14 @@ export const EmployeeListComponent: React.FunctionComponent<Props> = ({
3241
)}
3342
onCreate={onCreate}
3443
onEdit={onEdit}
44+
onDelete={onDelete}
3545
labels={{
36-
searchPlaceholder: 'Buscar empleados',
46+
searchPlaceholder: 'Buscar empleado',
3747
createButton: 'Nuevo empleado',
48+
deleteTitle: 'Eliminar Empleado',
49+
deleteContent: props => renderContent(props),
50+
closeButton: 'Cancelar',
51+
acceptButton: 'Aceptar',
3852
}}
3953
enableSearch={true}
4054
search={search}

src/pods/employee-list/employee-list.container.tsx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react';
22
import { EmployeeListComponent } from './employee-list.component';
3-
import { getEmployeeList } from './api';
3+
import { getEmployeeList, deleteEmployee } from './api';
44
import { Employee } from './employee-list.vm';
55
import { useSnackbarContext } from 'common/components';
66
import { trackPromise } from 'react-promise-tracker';
@@ -32,6 +32,16 @@ export const EmployeeListContainer: React.FunctionComponent = () => {
3232
history.push(routes.editEmployee(id));
3333
};
3434

35+
const handleDelete = async (id: string) => {
36+
const errorMessage = 'Error al eliminar un empleado';
37+
try {
38+
const isDelete = await trackPromise(deleteEmployee(id));
39+
isDelete ? onLoadEmployeeList() : showMessage(errorMessage, 'error');
40+
} catch (error) {
41+
error && showMessage(errorMessage, 'error');
42+
}
43+
};
44+
3545
React.useEffect(() => {
3646
onLoadEmployeeList();
3747
}, []);
@@ -41,6 +51,7 @@ export const EmployeeListContainer: React.FunctionComponent = () => {
4151
employeeList={employees}
4252
onCreate={handleCreate}
4353
onEdit={handleEdit}
54+
onDelete={handleDelete}
4455
/>
4556
);
4657
};

0 commit comments

Comments
 (0)