Allow deleting of customers
parent
c32b9f77b3
commit
67eb6c9014
|
@ -425,7 +425,7 @@ $(document).ready(function (){
|
|||
location.reload();
|
||||
})
|
||||
.fail(function(msg){
|
||||
showNotification(msg.responseJSON.err, 'danger');
|
||||
showNotification(msg.responseJSON.message, 'danger');
|
||||
});
|
||||
}
|
||||
});
|
||||
|
@ -484,6 +484,24 @@ $(document).ready(function (){
|
|||
e.preventDefault();
|
||||
});
|
||||
|
||||
// call update settings API
|
||||
$('#deleteCustomer').on('click', function(e){
|
||||
e.preventDefault();
|
||||
$.ajax({
|
||||
method: 'DELETE',
|
||||
url: '/admin/customer',
|
||||
data: {
|
||||
customerId: $('#customerId').val()
|
||||
}
|
||||
})
|
||||
.done(function(msg){
|
||||
showNotification(msg.message, 'success', false, '/admin/customers');
|
||||
})
|
||||
.fail(function(msg){
|
||||
showNotification(msg.responseJSON.message, 'danger');
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('click', '.image-next', function(e){
|
||||
var thumbnails = $('.thumbnail-image');
|
||||
var index = 0;
|
||||
|
@ -663,7 +681,6 @@ $(document).ready(function (){
|
|||
data: { permalink: $('#productPermalink').val(), docId: $('#productId').val() }
|
||||
})
|
||||
.done(function(msg){
|
||||
console.log('msg', msg);
|
||||
showNotification(msg.message, 'success');
|
||||
})
|
||||
.fail(function(msg){
|
||||
|
@ -850,14 +867,20 @@ function getSelectedOptions(){
|
|||
}
|
||||
|
||||
// show notification popup
|
||||
function showNotification(msg, type, reloadPage){
|
||||
function showNotification(msg, type, reloadPage, redirect){
|
||||
// defaults to false
|
||||
reloadPage = reloadPage || false;
|
||||
|
||||
// defaults to null
|
||||
redirect = redirect || null;
|
||||
|
||||
$('#notify_message').removeClass();
|
||||
$('#notify_message').addClass('alert-' + type);
|
||||
$('#notify_message').html(msg);
|
||||
$('#notify_message').slideDown(600).delay(2500).slideUp(600, function(){
|
||||
if(redirect){
|
||||
window.location = redirect;
|
||||
}
|
||||
if(reloadPage === true){
|
||||
location.reload();
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -36,7 +36,7 @@ router.post('/customer/create', async (req, res) => {
|
|||
const customer = await db.customers.findOne({ email: req.body.email });
|
||||
if(customer){
|
||||
res.status(400).json({
|
||||
err: 'A customer already exists with that email address'
|
||||
message: 'A customer already exists with that email address'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
@ -54,7 +54,7 @@ router.post('/customer/create', async (req, res) => {
|
|||
}catch(ex){
|
||||
console.error(colors.red('Failed to insert customer: ', ex));
|
||||
res.status(400).json({
|
||||
err: 'Customer creation failed.'
|
||||
message: 'Customer creation failed.'
|
||||
});
|
||||
}
|
||||
});
|
||||
|
@ -96,7 +96,7 @@ router.post('/admin/customer/update', restrict, async (req, res) => {
|
|||
if(!customer){
|
||||
if(req.apiAuthenticated){
|
||||
res.status(400).json({
|
||||
err: 'Customer not found'
|
||||
message: 'Customer not found'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
@ -139,6 +139,44 @@ router.post('/admin/customer/update', restrict, async (req, res) => {
|
|||
}
|
||||
});
|
||||
|
||||
// Delete a customer
|
||||
router.delete('/admin/customer', restrict, async (req, res) => {
|
||||
const db = req.app.db;
|
||||
|
||||
// check for existing customer
|
||||
const customer = await db.customers.findOne({ _id: common.getId(req.body.customerId) });
|
||||
if(!customer){
|
||||
if(req.apiAuthenticated){
|
||||
res.status(400).json({
|
||||
message: 'Failed to delete customer. Customer not found'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
req.session.message = 'Failed to delete customer. Customer not found';
|
||||
req.session.messageType = 'danger';
|
||||
res.redirect('/admin/customer/view/' + req.body.customerId);
|
||||
return;
|
||||
}
|
||||
// Update customer
|
||||
try{
|
||||
await db.customers.deleteOne({ _id: common.getId(req.body.customerId) });
|
||||
indexCustomers(req.app)
|
||||
.then(() => {
|
||||
res.status(200).json({ message: 'Customer deleted' });
|
||||
});
|
||||
}catch(ex){
|
||||
console.error(colors.red('Failed deleting customer: ' + ex));
|
||||
if(req.apiAuthenticated){
|
||||
res.status(400).json({ message: 'Failed to delete customer' });
|
||||
return;
|
||||
}
|
||||
req.session.message = 'Failed to delete customer';
|
||||
req.session.messageType = 'danger';
|
||||
res.redirect('/admin/customer/view/' + req.body.userId);
|
||||
}
|
||||
});
|
||||
|
||||
// render the customer view
|
||||
router.get('/admin/customer/view/:id?', restrict, async (req, res) => {
|
||||
const db = req.app.db;
|
||||
|
|
|
@ -50,7 +50,7 @@ test('[Fail] Try create a duplicate customer', async t => {
|
|||
.send(customer)
|
||||
.expect(400);
|
||||
|
||||
t.deepEqual(res.body.err, 'A customer already exists with that email address');
|
||||
t.deepEqual(res.body.message, 'A customer already exists with that email address');
|
||||
});
|
||||
|
||||
test('[Fail] Create with invalid email address', async t => {
|
||||
|
@ -157,3 +157,25 @@ test('[Success] Customer login with correct email', async t => {
|
|||
.expect(200);
|
||||
t.deepEqual(res.body.message, 'Successfully logged in');
|
||||
});
|
||||
|
||||
test('[Success] Delete a customer', async t => {
|
||||
const res = await g.request
|
||||
.delete('/admin/customer')
|
||||
.send({
|
||||
customerId: g.customers[0]._id
|
||||
})
|
||||
.set('apiKey', g.users[0].apiKey)
|
||||
.expect(200);
|
||||
t.deepEqual(res.body.message, 'Customer deleted');
|
||||
});
|
||||
|
||||
test('[Success] Failed deleting an incorrect customer', async t => {
|
||||
const res = await g.request
|
||||
.delete('/admin/customer')
|
||||
.send({
|
||||
customerId: g.customers[0]._id
|
||||
})
|
||||
.set('apiKey', g.users[0].apiKey)
|
||||
.expect(400);
|
||||
t.deepEqual(res.body.message, 'Failed to delete customer. Customer not found');
|
||||
});
|
||||
|
|
|
@ -5,7 +5,10 @@
|
|||
<div class="col-xs-12 col-md-12">
|
||||
<div class="page-header">
|
||||
<div class="pull-right">
|
||||
<button id="frm_edit_product_save" class="btn btn-success">Save customer <i class="fa fa-floppy-o"></i></button>
|
||||
<button class="btn btn-success">Save customer <i class="fa fa-floppy-o"></i></button>
|
||||
</div>
|
||||
<div class="pull-right">
|
||||
<button id="deleteCustomer" onclick="return confirm('Are you sure you want to delete this customer?');" class="btn btn-info">Delete customer <i class="fa fa-trash"></i></button>
|
||||
</div>
|
||||
<h2>Customer</h2>
|
||||
</div>
|
||||
|
@ -77,7 +80,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="customerId" value="{{result._id}}">
|
||||
<input type="hidden" name="customerId" id="customerId" value="{{result._id}}">
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
|
Loading…
Reference in New Issue