Skip to content

Commit

Permalink
feature(admin and staff can view all accounts in account page):Admin …
Browse files Browse the repository at this point in the history
…and staff can view all account in accounts page

Admin and staff can view all accounts in view accounts page
[Deliver #165663799]
  • Loading branch information
Cavdy committed Apr 28, 2019
1 parent d41768e commit f71ac7d
Show file tree
Hide file tree
Showing 12 changed files with 469 additions and 60 deletions.
10 changes: 3 additions & 7 deletions frontend-app/accounts.html
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ <h1 class="logo">Banka</h1>
<li class="sidebar-item sidebar-item-active">
<a href="./accounts.html" class="sidebar-link">Credit / Debit</a>
</li>
<li class="sidebar-item">
<a href="./viewaccounts.html" class="sidebar-link">All Accounts</a>
</li>
<li class="sidebar-item">
<a href="./transactions.html" class="sidebar-link">Transactions</a>
</li>
Expand Down Expand Up @@ -84,13 +87,6 @@ <h1 class="logo">Banka</h1>
<a href="#" class="link">Lorem ipsum dolor, sit amet consectetur adipisicing
elit. Quae, optio?</a>
</li>
<li class="item">
<a href="#" class="link">Lorem ipsum dolor, sit amet consectetur adipisicing.</a>
</li>
<li class="item">
<a href="#" class="link">Lorem ipsum dolor sit amet consectetur adipisicing
elit. Nobis similique soluta sit impedit, provident laborum?</a>
</li>
</ul>
</div>
</div>
Expand Down
11 changes: 3 additions & 8 deletions frontend-app/activate.html
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ <h1 class="logo">Banka</h1>
<li class="sidebar-item">
<a href="./accounts.html" class="sidebar-link">Credit / Debit</a>
</li>
<li class="sidebar-item">
<a href="./viewaccounts.html" class="sidebar-link">All Accounts</a>
</li>
<li class="sidebar-item">
<a href="./transactions.html" class="sidebar-link">Transactions</a>
</li>
Expand Down Expand Up @@ -84,14 +87,6 @@ <h1 class="logo">Banka</h1>
<a href="#" class="link">Lorem ipsum dolor, sit amet consectetur adipisicing
elit. Quae, optio?</a>
</li>
<li class="item">
<a href="#" class="link">Lorem ipsum dolor, sit amet consectetur
adipisicing.</a>
</li>
<li class="item">
<a href="#" class="link">Lorem ipsum dolor sit amet consectetur adipisicing
elit. Nobis similique soluta sit impedit, provident laborum?</a>
</li>
</ul>
</div>
</div>
Expand Down
10 changes: 3 additions & 7 deletions frontend-app/adduser.html
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ <h1 class="logo">Banka</h1>
<li class="sidebar-item">
<a href="./accounts.html" class="sidebar-link">Credit / Debit</a>
</li>
<li class="sidebar-item">
<a href="./viewaccounts.html" class="sidebar-link">All Accounts</a>
</li>
<li class="sidebar-item">
<a href="./transactions.html" class="sidebar-link">Transactions</a>
</li>
Expand Down Expand Up @@ -84,13 +87,6 @@ <h1 class="logo">Banka</h1>
<a href="#" class="link">Lorem ipsum dolor, sit amet consectetur adipisicing
elit. Quae, optio?</a>
</li>
<li class="item">
<a href="#" class="link">Lorem ipsum dolor, sit amet consectetur adipisicing.</a>
</li>
<li class="item">
<a href="#" class="link">Lorem ipsum dolor sit amet consectetur adipisicing
elit. Nobis similique soluta sit impedit, provident laborum?</a>
</li>
</ul>
</div>
</div>
Expand Down
29 changes: 28 additions & 1 deletion frontend-app/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ body,

.wrapper {
width: 100%;
height: 100vh;
display: flex;
}

Expand All @@ -63,7 +64,7 @@ body,
*/
.sidebar {
flex: 0 0 16rem;
min-height: 100vh;
height: 100%;
background-image: linear-gradient(to bottom, var(--sidebar-color-2), var(--sidebar-color-1));
transition: margin-left .3s;
display: flex;
Expand Down Expand Up @@ -92,6 +93,10 @@ body,
margin-bottom: auto;
}

.sidebar-list {
list-style: none;
}

.sidebar-item {
position: relative;
}
Expand Down Expand Up @@ -1115,6 +1120,28 @@ body,
=======================
*/

@media (min-width: 1600px) {
.container {
width: 100vw;
height: 100vh;
background-color: #006eb4;
background-image: url(../svg/rose.svg);
background-position: center;
background-size: cover;
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
display: flex;
align-items: center;
justify-content: center;
}

.wrapper {
height: 900px;
max-width: 1800px;
}
}

@media (max-width: 1140px) {
.showcase-content {
width: 90%;
Expand Down
10 changes: 3 additions & 7 deletions frontend-app/dashboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ <h1 class="logo">Banka</h1>
<li class="sidebar-item">
<a href="./accounts.html" class="sidebar-link">Credit / Debit</a>
</li>
<li class="sidebar-item">
<a href="./viewaccounts.html" class="sidebar-link">All Accounts</a>
</li>
<li class="sidebar-item">
<a href="./transactions.html" class="sidebar-link">Transactions</a>
</li>
Expand Down Expand Up @@ -83,13 +86,6 @@ <h1 class="logo">Banka</h1>
<li class="item">
<a href="#" class="link">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Quae, optio?</a>
</li>
<li class="item">
<a href="#" class="link">Lorem ipsum dolor, sit amet consectetur adipisicing.</a>
</li>
<li class="item">
<a href="#" class="link">Lorem ipsum dolor sit amet consectetur adipisicing elit. Nobis similique
soluta sit impedit, provident laborum?</a>
</li>
</ul>
</div>
</div>
Expand Down
228 changes: 228 additions & 0 deletions frontend-app/js/allaccounts.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,228 @@
const token = sessionStorage.getItem('token');
const api = 'https://bankaapp-api.herokuapp.com/api';
const go = document.querySelector('#go');
const limitSelect = document.querySelector('#limit');
const successMsg = document.querySelector('.successMsg');
const errMsg = document.querySelector('.errMsg');
const userTable = document.querySelector('.user-table');
const queryForm = document.querySelector('.queryForm');
const search = document.querySelector('#search');

// DELETE FETCH REQUEST FOR ACCOUNTS
const deleteApi = (url) => {
fetch(url, {
method: 'DELETE',
mode: 'cors',
cache: 'no-cache',
credentials: 'same-origin',
headers: {
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json',
},
redirect: 'follow',
referrer: 'no-referrer',
})
.then(response => response.json());
};

// GET FETCH API REQUEST TO GET ALL ACCOUNTS OF A USER
const getAccountsApi = (url) => {
fetch(url, {
method: 'GET',
mode: 'cors',
cache: 'no-cache',
credentials: 'same-origin',
headers: {
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json',
},
redirect: 'follow',
referrer: 'no-referrer',
})
.then((response) => {
if (response.status === 403) {
errMsg.parentElement.style.display = 'flex';
userTable.style.display = 'none';
queryForm.style.display = 'none';
errMsg.innerHTML = 'you must be logged in to view accounts';
} else {
userTable.style.display = 'block';
queryForm.style.display = 'flex';
errMsg.parentElement.style.display = 'none';
errMsg.innerHTML = '';
return response.json();
}
})
.then((data1) => {
if (data1.status === 401) {
errMsg.parentElement.style.display = 'flex';
userTable.style.display = 'none';
queryForm.style.display = 'none';
errMsg.innerHTML = 'you must be an admin or staff to view accounts';
} else {
userTable.style.display = 'block';
queryForm.style.display = 'flex';
errMsg.parentElement.style.display = 'none';
data1.data.map((i) => {
const table = document.querySelector('.table');
const tableRow = document.createElement('div');
tableRow.classList = 'table-row table-body';
const accountNumber = document.createElement('div');
accountNumber.className = 'account-index';
accountNumber.innerHTML = i.accountnumber;
const accountName = document.createElement('div');
accountName.className = 'account-name';
accountName.innerHTML = `${i.firstname} ${i.lastname}`;
const status = document.createElement('div');
status.className = 'account-status';
status.innerHTML = i.status;
const type = document.createElement('div');
type.className = 'activate';
type.innerHTML = i.type;
const deleteAccount = document.createElement('div');
deleteAccount.className = 'deactivate';
const aDeleteAccount = document.createElement('a');
aDeleteAccount.href = '#';
aDeleteAccount.className = 'deactivate-btn';
aDeleteAccount.innerHTML = 'Delete';
deleteAccount.appendChild(aDeleteAccount);
tableRow.appendChild(accountNumber);
tableRow.appendChild(accountName);
tableRow.appendChild(status);
tableRow.appendChild(type);
tableRow.appendChild(deleteAccount);
table.appendChild(tableRow);
});

// DELETE
const dels = document.querySelectorAll('.deactivate-btn');
dels.forEach((del) => {
del.addEventListener('click', (e) => {
const acnumber = e.target.parentElement.parentElement.children[0].innerHTML;
deleteApi(`${api}/v1/accounts/${acnumber}`);
e.target.parentElement.parentElement.remove();
successMsg.parentElement.style.display = 'flex';
successMsg.innerHTML = 'Account successfully deleted';
setInterval(() => {
location.reload(true);
}, 3000);
});
});
}
return data1;
});
};
getAccountsApi(`${api}/v1/accounts?limit=${limitSelect.value}`);

// GET FETCH API REQUEST TO GET A SPECIFIC ACCOUNT OF A USER
const getSpecficAccountApi = (url) => {
fetch(url, {
method: 'GET',
mode: 'cors',
cache: 'no-cache',
credentials: 'same-origin',
headers: {
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json',
},
redirect: 'follow',
referrer: 'no-referrer',
})
.then((response) => {
if (response.status === 403) {
errMsg.parentElement.style.display = 'flex';
userTable.style.display = 'none';
queryForm.style.display = 'none';
errMsg.innerHTML = 'you must be logged in to view accounts';
} else {
userTable.style.display = 'block';
queryForm.style.display = 'flex';
errMsg.parentElement.style.display = 'none';
errMsg.innerHTML = '';
return response.json();
}
})
.then((data1) => {
if (data1.status === 401) {
errMsg.parentElement.style.display = 'flex';
userTable.style.display = 'none';
queryForm.style.display = 'none';
errMsg.innerHTML = 'you must be an admin or staff to view accounts';
} else if (data1.status === 404) {
errMsg.parentElement.style.display = 'flex';
userTable.style.display = 'none';
queryForm.style.display = 'none';
errMsg.innerHTML = 'no account found';
} else {
userTable.style.display = 'block';
queryForm.style.display = 'flex';
errMsg.parentElement.style.display = 'none';
const i = data1.data;
const table = document.querySelector('.table');
const tableRow = document.createElement('div');
tableRow.classList = 'table-row table-body';
const accountNumber = document.createElement('div');
accountNumber.className = 'account-index';
accountNumber.innerHTML = i.accountnumber;
const accountName = document.createElement('div');
accountName.className = 'account-name';
accountName.innerHTML = `${i.firstname} ${i.lastname}`;
const status = document.createElement('div');
status.className = 'account-status';
status.innerHTML = i.status;
const type = document.createElement('div');
type.className = 'activate';
type.innerHTML = i.type;
const deleteAccount = document.createElement('div');
deleteAccount.className = 'deactivate';
const aDeleteAccount = document.createElement('a');
aDeleteAccount.href = '#';
aDeleteAccount.className = 'deactivate-btn';
aDeleteAccount.innerHTML = 'Delete';
deleteAccount.appendChild(aDeleteAccount);
tableRow.appendChild(accountNumber);
tableRow.appendChild(accountName);
tableRow.appendChild(status);
tableRow.appendChild(type);
tableRow.appendChild(deleteAccount);
table.appendChild(tableRow);

// DELETE
const dels = document.querySelectorAll('.deactivate-btn');
dels.forEach((del) => {
del.addEventListener('click', (e) => {
const acnumber = e.target.parentElement.parentElement.children[0].innerHTML;
deleteApi(`${api}/v1/accounts/${acnumber}`);
e.target.parentElement.parentElement.remove();
successMsg.parentElement.style.display = 'flex';
successMsg.innerHTML = 'Account successfully deleted';
setInterval(() => {
location.reload(true);
}, 3000);
});
});

return data1;
}
});
};

go.addEventListener('click', (e) => {
e.preventDefault();
const tableBodies = document.querySelectorAll('.table-body');
tableBodies.forEach((tableBody) => {
tableBody.remove();
});

getAccountsApi(`${api}/v1/accounts?limit=${limitSelect.value}`);
});

search.addEventListener('keyup', (e) => {
e.preventDefault();
const tableBodies = document.querySelectorAll('.table-body');
tableBodies.forEach((tableBody) => {
tableBody.remove();
});

getSpecficAccountApi(`${api}/v1/accounts/${search.value}`);
});
Loading

0 comments on commit f71ac7d

Please sign in to comment.