$(document).ready(function() { var business = {}; var serviceTypeList = {}; getServiceTypes().then(function (serviceTypes) { serviceTypeList = serviceTypes; getBusinessInfo(serviceTypes).then(function (data) { business = data; }); }); getAppointments(); $("#add_service").click(function () { var input_service = $("#input_service").val(); // clear the input $("#input_service").val(''); $("#predefined_services_admin_panel").append( '
' + '
' + '
\n' + ' \n' + ' \n' + '
' + '
' + ' ' + '
' + '
' + ' ' + '
' + '
' + '
' + '
' + ' ' + '
' + '
' + '
'); event.preventDefault(); }); $("#update_services_button").click(function () { businesses = []; servicesObj = []; $.each($('#predefined_services_admin_panel input:checked').siblings(), function (index, label) { let service = {}; var id = $(label).prop('for'); var text = $(label).text(); var time = $($($(label).parent()).siblings()[0]).children()[0].value; var price = $($($(label).parent()).siblings()[1]).children()[0].value; var description = $($($($($($(label).parent())).parent()).siblings()[0]).children()[0]).children()[0].value; var serviceType = {}; if (parseInt(id) != -1) { service['id'] = parseInt(id); serviceType['id'] = business['services'].find(obj => obj.id === parseInt(id))['serviceType']['id']; } else { } serviceType['name'] = text.trim(); service['serviceType'] = serviceType; service['duration'] = parseInt(time); service['price'] = parseInt(price); service['description'] = description; servicesObj.push(service); }); var servicesForDelete=[]; $.each($('#predefined_services_admin_panel input:not(:checked)').siblings(), function (index, label) { let id = $(label).prop('for'); let foundService = business['services'].find(obj => obj.id === parseInt(id)); if (foundService !== undefined && foundService['serviceStatus'] === 'ACTIVE') { let service1 = {}; service1['id'] = id; servicesForDelete.push(service1); } }); updateServices(servicesObj).then(function (response) { getBusinessInfo(serviceTypeList).then(function (data) { business = data; }); }); if (servicesForDelete.length > 0) { deleteServices(servicesForDelete).then(function (response) { getBusinessInfo(serviceTypeList).then(function (data) { business = data; }); }); } event.preventDefault(); }); $("#update_owner_button").click(function() { businesses = []; owner={}; owner['firstName'] = $('#firstName').val(); owner['lastName'] = $('#lastName').val(); owner['email'] = $('#email').val(); owner['phoneNumber'] = $('#phoneNumber').val(); owner['username'] = $('#username').val(); business['owner'] = owner; businesses.push(business); updateBusinessInfo(businesses).then(function() { getBusinessInfo(serviceTypeList).then(function (found) { business = found; }); }); }); event.preventDefault(); }); function updateBusinessInfo(businessList) { return $.ajax({ url: "http://localhost:8080/api/business", type:"PATCH", data: JSON.stringify(businessList), contentType:"application/json; charset=utf-8", dataType: 'text', success: function(succ){ alert( "Updates applied successfully" ); }, error: function(err) { alert(err); } }); } function updateServices(serviceList) { return $.ajax({ url: "http://localhost:8080/api/service", type:"PATCH", data: JSON.stringify(serviceList), contentType:"application/json; charset=utf-8", dataType: 'text', success: function(succ){ alert( "Updates applied successfully" ); }, error: function(err) { alert(err); } }); } function deleteServices(services) { return $.ajax({ url: "http://localhost:8080/api/service/delete", type:"POST", data: JSON.stringify(services), contentType:"application/json; charset=utf-8", dataType: 'text', success: function(succ){ console.log("services deleted successfully"); }, error: function(err) { console.error(err); } }); } function cancelAppointment(appointmentId) { if (confirm("Are you sure you want to cancel the appointment?")) { $.ajax({ url: "http://localhost:8080/api/appointment/" + appointmentId, type:"DELETE" }).success(function (data) { alert("Appointment successfully canceled.") getAppointments(); }).error(function (error) { alert("Something went wrong."); }); } } function getAppointments() { $.ajax({ url: "http://localhost:8080/api/appointment/future/me" }).then(function (data) { var $el = $("#bookings-table-body"); $el.empty(); $.each(data, function (index, obj) { var element = '' + ' ' + (parseInt(index) + 1) + '' + ' ' + obj['fullName'] + '' + ' ' + obj['email'] + '' + ' ' + obj['phoneNumber'] + '' + ' ' + obj['timePeriod'] + '' + ' ' + obj['serviceName'] + ''; switch (obj['status']) { case 'NEW': element += ' '; break; case 'CANCELLED_BY_CUSTOMER': element += ' '; break; case 'CANCELLED_BY_BUSINESS_OWNER': element += ' '; break; } element+=''; $el.append(element); }); }); } function getServiceTypes() { return $.ajax({ url: "http://localhost:8080/api/nomenclature/serviceTypes/me" }).then(function (serviceTypes) { return serviceTypes; }); } function getBusinessInfo(serviceTypeList) { return $.ajax({ url: "http://localhost:8080/api/business/me" }).then(function (business) { var $header = $("#header"); // header $header.text("Welcome back " + business["owner"]['firstName'] + " " + business['owner']['lastName']); // business info if(business['businessStatus'] == 'NEW') { $('#new_business_warning').removeAttr("hidden"); } $('#business_status').val(business['businessStatus']); $('#business_type').val(business['businessType']['text']); // owner info $('#firstName').val(business['owner']['firstName']); $('#lastName').val(business['owner']['lastName']); $('#phoneNumber').val(business['owner']['phoneNumber']); $('#email').val(business['owner']['email']); $('#username').val(business['owner']['username']); // services info var $el = $("#predefined_services_admin_panel"); $el.empty(); const existingServiceTypeIds = business['services'].map(service => service['serviceType']['id']); const missingAddedServiceTypes = serviceTypeList.filter(serviceType => existingServiceTypeIds.indexOf(serviceType['id']) === -1); //console.log(missingAddedServiceTypes); $.each(business['services'], function (index, obj) { var element = '
' + '
' + '
\n' + ' \n' + ' \n' + '
' + '
' + ' ' + '
' + '
' + ' ' + '
' + '
' + '
' + '
' + ' ' + '
' + '
' + '
'; $el.append(element); }); return business; }); }