Skip to content

Commit 0736d90

Browse files
authored
Add Remove user and update transactions to show 'prior employeee' (#77)
1 parent bee2e35 commit 0736d90

File tree

6 files changed

+37
-64
lines changed

6 files changed

+37
-64
lines changed

models/schema.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,15 @@ CREATE TABLE Products(
4242
DROP TABLE IF EXISTS Transactions;
4343
CREATE TABLE Transactions(
4444
transactionID INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
45-
userID INT NOT NULL,
45+
userID INT,
4646
productID INT NOT NULL,
4747
date DATETIME NOT NULL,
4848
productQty INT NOT NULL,
4949
startLoc VARCHAR(10) NOT NULL,
5050
endLoc VARCHAR(10) NOT NULL,
5151
createdAt DATETIME NOT NULL,
5252
updatedAt DATETIME NOT NULL,
53-
CONSTRAINT FOREIGN KEY (userID) REFERENCES Users(userID),
53+
CONSTRAINT FOREIGN KEY (userID) REFERENCES Users(userID) on DELETE SET NULL,
5454
CONSTRAINT FOREIGN KEY (productID) REFERENCES Products(productID)
5555
);
5656

models/userModel.js

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,12 @@ const updateUser = async (id, data) => {
4242
return getUserById(id);
4343
};
4444

45-
const deleteUser = async (id, data) => {
46-
const now = moment().format(constants.dateFormat);
47-
await db.pool.asyncQuery(
48-
'UPDATE Users SET userLevelID = ?, password = ?, email = ?, firstName = ?, lastName = ?, updatedAt = ? WHERE Users.userID = ?',
49-
[data.userLevelID, ' ', ' ', 'NULL', 'NULL', now, id],
50-
);
45+
const deleteUserFromDB = async (id) => {
46+
const data = await db.pool.asyncQuery('DELETE FROM Users where userID = ?', [
47+
id.userID,
48+
]);
5149

52-
return getUserById(id);
50+
return data;
5351
};
5452

5553
const createUser = async (data) => {
@@ -72,5 +70,5 @@ module.exports = {
7270
getUserForAuthentication,
7371
updateUser,
7472
createUser,
75-
deleteUser,
73+
deleteUserFromDB,
7674
};

routes/userRouter.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ userRouter.put(
1313
[authService.jwt, authService.managementOnly],
1414
userService.editUserLevel,
1515
);
16-
userRouter.put(
17-
'/:id/delete',
16+
userRouter.delete(
17+
'/:id',
1818
[authService.jwt, authService.managementOnly],
19-
userService.deleteUserFromDB,
19+
userService.deleteUser,
2020
);
2121
userRouter.post('/login', authService.login, userService.login);
2222
userRouter.post('/create', authService.create, userService.create);

services/userService.js

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -112,31 +112,16 @@ const editUserLevel = async (req, res, next) => {
112112
});
113113
};
114114

115-
const deleteUserFromDB = async (req, res, next) => {
115+
const deleteUser = async (req, res, next) => {
116116
const userID = req.params.id;
117-
const { userLevelID: newUserLevelID } = req.body;
118-
const { userLevel } = res.locals;
119-
const user = await userModel.getUserById(userID);
120-
121-
const userLevels = await userLevelModel.getAll();
122-
const schema = yup
123-
.number()
124-
.oneOf(userLevels.map((userLevelInner) => userLevelInner.userLevelID))
125-
.required();
126-
127-
schema
128-
.validate(newUserLevelID)
129-
.then(async (validatedUserLevelID) => {
130-
const updatedUser = await userModel.deleteUser(userID, {
131-
...user,
132-
userLevelID: validatedUserLevelID,
133-
});
134-
res.status(200).send(updatedUser);
135-
})
136-
.catch((error) => {
137-
res.status(400);
138-
res.send(error);
139-
});
117+
let data;
118+
try {
119+
data = await userModel.deleteUserFromDB({ userID });
120+
res.status(200).send(data);
121+
} catch (e) {
122+
console.log(e);
123+
next(e);
124+
}
140125
};
141126

142127
const getAllLevels = async (req, res, next) => {
@@ -156,5 +141,5 @@ module.exports = {
156141
login,
157142
editUserLevel,
158143
getAllLevels,
159-
deleteUserFromDB,
144+
deleteUser,
160145
};

src/components/Transaction/TransactionListItem.jsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@ export default function TransactionListItem({ transaction: propTransaction }) {
1919
<Card border="light">
2020
<Card.Body>
2121
<Card.Title>Transaction ID: {transaction.transactionID} </Card.Title>
22-
<Card.Title>
23-
User: {capitalize(user.firstName)} {capitalize(user.lastName)}
24-
</Card.Title>
22+
{user && (
23+
<Card.Title>
24+
User: {capitalize(user.firstName)} {capitalize(user.lastName)}
25+
</Card.Title>
26+
)}
27+
{!user && <Card.Title>User: Prior Employee</Card.Title>}
2528
<Card.Text>Date: {transaction.date.split('T')[0]} </Card.Text>
2629
</Card.Body>
2730
</Card>

src/components/Users/UserListItem.jsx

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,15 @@ export default function UserListItem({ user: propUser }) {
3434
});
3535
};
3636

37-
const deleteUser = (updatedUserRole) => {
38-
const userLevelID = getIDfromRole(updatedUserRole.toLowerCase());
37+
const deleteUser = () => {
3938
API.instance
40-
.put(`/user/${user.userID}/delete`, { userLevelID })
39+
.delete(`/user/${user.userID}`)
4140
.then((res) => {
41+
window.location.reload();
4242
console.log(res);
43-
setUser(res.data);
44-
setNewUserRole('');
45-
setNewUserRole('');
46-
setModal('');
4743
})
4844
.catch((err) => {
45+
console.log(err);
4946
setError(err?.response?.data?.error ?? 'Delete user failed!');
5047
});
5148
};
@@ -54,7 +51,7 @@ export default function UserListItem({ user: propUser }) {
5451
if (modal === CHANGE_ROLE) {
5552
changeRole(newUserRole);
5653
} else if (modal === REMOVE) {
57-
deleteUser(newUserRole);
54+
deleteUser();
5855
}
5956
};
6057

@@ -102,34 +99,24 @@ export default function UserListItem({ user: propUser }) {
10299
<Modal show={!!modal} onHide={() => setModal('')} centered>
103100
<Modal.Header closeButton>
104101
<Modal.Title>
105-
Remove {capitalize(user.firstName)}{' '}
106-
{capitalize(`${user.lastName}`)} From User List, Change to owner
102+
Remove employee {capitalize(user.firstName)}{' '}
103+
{capitalize(`${user.lastName}`)}
107104
</Modal.Title>
108105
</Modal.Header>
109106
<Modal.Body>
110107
<Form>
111108
<Form.Label>
112-
Are you sure you wanna delete {capitalize(user.firstName)}{' '}
113-
{capitalize(`${user.lastName}`)} ?
109+
Are you sure you wanna remove {capitalize(user.firstName)}{' '}
110+
{capitalize(`${user.lastName}`)}?
114111
</Form.Label>
115-
<Form.Control
116-
as="select"
117-
value={newUserRole}
118-
onChange={(e) => setNewUserRole(e.target.value)}
119-
>
120-
<option />
121-
<option>Owner</option>
122-
</Form.Control>
123112
<Form.Text className="text-danger" type="invalid">
124113
{error}
125114
</Form.Text>
126115
</Form>
127116
</Modal.Body>
128117

129118
<Modal.Footer>
130-
<Button disabled={newUserRole === ''} onClick={onModalClick}>
131-
Confirm
132-
</Button>
119+
<Button onClick={onModalClick}>Confirm</Button>
133120
</Modal.Footer>
134121
</Modal>
135122
);

0 commit comments

Comments
 (0)