Chat with us, powered by LiveChat

Quicksuite Knowledge Base Get Support 24/7

Food Quicksuite

Join us on this exploration of the Food Feature, where precision meets innovation, and the financial pulse of our super app resonates with the evolving demands of our diverse user base. Food Delivery Feature is a comprehensive tool meticulously crafted to elevate the dining experience for users while empowering administrators with precise control over the entire food delivery ecosystem. It seamlessly integrates the culinary desires of users with the operational excellence of our super app, fostering a harmonious environment where choice, convenience, and quality converge.
Food Quicksuite

In the Food Module, we have the first feature of Cuisine Types

  • In the cuisine feature, the admin will be able to see a search bar that can help the admin search for a specific cuisine type.
  • Alongside the search bar, a bin icon is present which is an option for deleting a cuisine type. The admin can also import and export cuisine types from a CSV file.
  • The admin can also update the serial numbers of cuisine types using the update serial number button. To add more cuisine types to the already existing list of cuisine types, click on the add button. The admin will be required to add the name and image of the cuisine type.

The admin will be able to see various details of a particular cuisine type like its image and its name. The created date refers to the date on which the cuisine type was created in the admin dashboard. The status tab represents whether a cuisine type is active or blocked. The admin can change the status of a cuisine from active to blocked and vice-versa.

In the action tab, the admin can edit or delete a particular cuisine type. Alongside the action tab, the drag and drop option is available, which helps the admin to drag a particular cuisine type and change its serial number.
Categories Feature

Let’s proceed to the Categories Feature

  • In the categories feature, the admin will be able to see categories along with subcategories.
  • In the top right corner, you can see a search bar that helps the admin search for categories as well as subcategories in the existing list.
  • On clicking a specific category, the admin will be able to view the subcategories of that particular category. The admin can also edit or block a particular category.
  • Alongside the search bar, a bin icon is also present that will help the admin to delete a particular category or all categories at once. The admin can also import or export categories from a CSV file.
  • Just right by this import-export button, a choose button is also available that helps the admin to add a category or a subcategory. The admin will be required to mention the cuisine type, category name, and image to add a particular category.

Categories Feature

Now we move on to the Restaurant Feature

  • On clicking on the restaurant feature, the admin can see the 2 main tabs restaurant and pending restaurants. The pending restaurant tab lists those restaurants whose onboarding requests are pending approval.
  • Under the restaurant tab, all impaneled restaurants are listed with details like their name, image, rating, and others that are added at the time of restaurant registration to the panel.
  • The document status represents the approval status of the documents submitted by the restaurant owner.
  • The type section indicates the restaurant type based on the cuisine. The restaurant ID refers to a unique ID given to a specific restaurant.
  • The product tab represents the number of products offered by the restaurant. The admin can also add products on merchant request.
  • The status tab represents whether a restaurant is active or blocked from serving and the admin can control the same.
  • The created date tab refers to the date on which the restaurant was added to the panel.

The 3 dots sign is for the action by the admin to edit restaurant details that contain information related to restaurant name & location, delivery details, bank details, operating hours & holiday lot if any.

view ratings & reviews
Admin can also see outlets, delete any restaurant, and view ratings & reviews. All these come under the action tab.

Next to the 3 dots action icon is a redirection icon, Clicking on this takes the admin to the merchant panel.

A search bar is present on the top right corner that helps the admin to search for a restaurant using its name, email, and restaurant ID. Alongside the search bar, a bin icon is present that allows the admin to delete a particular restaurant or all the restaurants at once.

The admin can also import or export restaurants in CSV file format. The filter button can help the admin filter the restaurants based on various criteria like reviews, maximum delivery time, minimum delivery time, item quality, and blocked restaurants.

To add a new restaurant, click on the add restaurant button. In the next step, the admin will be required to add details like personal details of the restaurant, delivery options, bank details of the merchant, and operating hours of the restaurant. After the admin is done adding the details, click on the add button to submit the details.

A rainy mode button is present below the add restaurant button which helps the admin to switch the merchants off temporarily. This change will be reflected in the customer app.
Report Feature

Next, we move to the Report Feature

  • In the report feature, you can see a filter of date which can help you to find orders according to a particular date. Alongside the date filter, you can see an export button that can help the admin to export the report file in an Excel file format.
  • The date section tells you the particular date on which the order is placed. Order number refers to the serial number of the order placed.
  • The restaurant’s name denotes the name of the restaurant from which the order is placed.
  • Customer details such as their name and delivery address are also given.
  • The report feature also includes the name of the driver delivering the order.
  • Other order details such as the creation time of the order and the time at which the order is accepted are also given.
  • Collection Time refers to the time taken by the driver to pick up the order and Wait Duration is the amount of time for which the driver had to wait at the pickup location.

Pickup Time is the time at which the order is picked up by the driver whereas Delivery Duration denotes the time taken by the driver to deliver the order. The admin can also see the time at which the order is delivered. Total distance per trip shows the amount of distance traveled by the driver to deliver the order. Order amount denotes the total billed amount of the order.

This feature goes beyond traditional food delivery platforms. It’s not just a conduit for delivering meals; it’s a gateway to a diverse culinary world within our super app. Administrators, armed with the Food Delivery Feature, navigate through a suite of functionalities that ensure a delightful journey for users – from personalized menu exploration to efficient order management, all the way to ensuring timely and accurate deliveries.

View Demo

var requesturl = window.location.href; var urllink = encodeURIComponent(requesturl); function linkWithParamRow() { window.open('https://api.whatsapp.com/send?phone=+918288926964&text=Hello,%20%20Team%20Quick%20Works,%20%20'+urllink, '_blank'); } $(document).ready(function() { $('form').each(function() { // <- selects every
on page var FormID = $(this).attr('id'); var Formrole = $(this).attr('role'); var notgothere = $(this).attr('notgothere'); if(((FormID != 'videos_srch_frm') || Formrole != 'search') && (FormID != 'pass-protct') && (notgothere != 'notgothere')) { if(FormID != 'commentform') { $(this).submit(function(e) { e.preventDefault(); if (! $(this).valid()) { return false; } }).validate({ onkeyup: function(element) { $(element).valid(); }, rules: { fullname : { required: true, minlength: 3, maxlength: 30, alpha: true }, signup_first_name : { required: true, minlength: 3, alpha: true }, signup_last_name : { required: true, alpha: true }, signup_password : { required: true, minlength: 8, }, phonenumber : { required: true, digits: true, minlength: 6, maxlength: 15, mobileValidation: $(this).find(':input[name=phonenumber]').val() }, phone_number : { required: true, digits: true, minlength: 6, maxlength: 15, mobileValidation: $(this).find(':input[name=phone_number]').val() }, SelectBudget : 'required', ProjectRequirements : { required: true, minlength: 15, maxlength: 700 }, email: { required: true, email: true,//add an email rule that will ensure the value entered is valid email id. maxlength: 255, }, emailaddress: { required: true, email: true,//add an email rule that will ensure the value entered is valid email id. maxlength: 255, }, address_data : { required: true, locMethod: true }, sliderAmount: { required: function(element) { let form = $(element).closest('form'); return !form.data('sliderInteracted'); }, }, }, highlight: function(input) { $(input).addClass('empty_value'); }, unhighlight: function (input) { $(input).removeClass('empty_value'); }, invalidHandler: function(form, validator) { var errors = validator.numberOfInvalids(); if (errors) { validator.errorList[0].element.focus(); } }, errorPlacement: function(error, element){ if (element.attr("name") == "sliderAmount") { let $parent = element.closest('.rangesldr'); $parent.find('.errorbudget').show(); } else if (element.attr("name") == "emailaddress") { //error.insertAfter(element) var lastError = $(element).data('lastError'), newError = $(error).text(); $(element).data('lastError', newError); if (newError !== '') { $(element).tooltip('dispose').tooltip({title: newError}).tooltip('show'); } } else { error.insertAfter(element) } }, success: function (label, element) { $(element).tooltip('hide'); }, submitHandler: function(form) { var formID = form.id; var formData = new FormData( this[0] ); var str = $(form).serializeArray(); var formData = new FormData(); $.each(str, function(i, val) { formData.append(val.name, val.value); }); $(form).find(':input[type=submit]').prop('disabled', true); var formID = form.id; if(formID == 'thank_you_subscription_form'){ var actionurl = 'https://quick-works.com/wp-content/themes/quickworks/subscription-ajax-form.php'; } else { if(form.form_name.value == 'Download EBook') { $(form).find(':input[type=submit]').val("downloading"); } else { $(form).find(':input[type=submit]').val("Submitting..."); } var full_number = form.full_number.value; if($(form).find(':input[name=phonenumber]').length>0){ var a = form.phonenumber.value; var code = $(form).find('.iti__selected-dial-code').text(); formData.append("country_code", code); if(full_number == '') { formData.append("full_number", code+a); } } else if($(form).find(':input[name=phone_number]').length>0){ var a = form.phone_number.value; var code = $(form).find('.iti__selected-dial-code').text(); formData.append("country_code", code); if(full_number == '') { formData.append("full_number", code+a); } } formData.append("form_id", formID); if(formID == 'pln_sinp') { var actionurl = 'https://quick-works.com/wp-content/themes/quickworks/custom-signup-submission.php'; } else { var actionurl = 'https://quick-works.com/wp-content/themes/quickworks/custom-form-submission.php'; } } $.ajax({ type: "POST", url: actionurl, data: formData, beforeSend: function(){ if(formID != 'thank_you_subscription_form'){ $('.bdy_wrp').addClass("ajax-loader"); } if(formID == 'thank_you_subscription_form'){ $(".sbct_frm #thank_you_subscription_form").addClass("subsc-loader"); } }, success: function(data) { $(form).find(':input[type=submit]').val("Submit"); $(form).find(':input[type=submit]').prop('disabled', false); if(formID == 'thank_you_subscription_form'){ $(form).find("#emailaddress").val(''); $(".sbct_frm #thank_you_subscription_form").removeClass("subsc-loader"); $(form).siblings('#thank_you_subscription_mesg').html(data); setTimeout(function(){ $(form).siblings('#thank_you_subscription_mesg').hide(); }, 8000); } else if(formID == 'demo_vid') { $('.bdy_wrp').removeClass("ajax-loader"); $("#"+formID).trigger('reset'); $('#youtube_video').attr('src', form.vdo_url.value + '?autoplay=1'); $('#watchvideo').modal('show'); $('#commonpopupvdo').modal('hide'); } else { $('.bdy_wrp').removeClass("ajax-loader"); if(data == "success") { // $(".notify-msg").show().delay(7000).fadeOut(); $("#"+formID).trigger('reset'); window.location.href = 'https://quick-works.com/thankyou'; } else if(data.includes('adminLogin')) { $("#signupModal").modal('show'); $("#"+formID).trigger('reset'); window.location.href = data; } else { if(formID == 'pln_sinp') { $(".notify-msg-error").html(''); $(".notify-msg-error").html(data); $(".notify-msg-error").css("display", "flex").show().delay(7000).fadeOut(); } else { $(".notify-msg-error").show().delay(7000).fadeOut(); $("#"+formID).trigger('reset'); } } } }, error: function(er) { $('.bdy_wrp').removeClass("ajax-loader"); if(formID == 'thank_you_subscription_form'){ $('.sbct_frm #thank_you_subscription_form').removeClass("subsc-loader"); } console.log('System Error'); }, complete: function(data) { if(formID == 'footer_custom_form') { $(form).find(':input').not(':button, :submit, :reset, :hidden').val('').removeAttr('checked').removeAttr('selected'); } }, cache: false, contentType: false, processData: false }); return false; } }); } } }) $.validator.addMethod("alpha", function(value, element) { return this.optional(element) || value == value.match(/^[a-zA-Z\s]+$/); }, 'Please Enter only Alphabets'); jQuery.validator.addMethod("locMethod", function(value, element) { if (googleAdressFill === 0) return this.optional(element); else return true; }, "Please choose from the sugguested location."); jQuery.validator.addMethod("moduleMethod", function(value, element) { if (moduledt === 1) return this.optional(element); else return true; }, "Please select at least one Module."); $.validator.messages.required = function (param, input) { //console.log(input.tagName); if(input.tagName == 'SELECT'){ var str = input.innerHTML; var c = str.substring(0, str.indexOf('')); var mySubString = c.substring( str.indexOf(">") + 1, str.lastIndexOf("") ); return 'Please ' + mySubString; } else if(input.tagName == 'TEXTAREA'){ return 'Please Enter Your Description'; } else if(input.type == 'password'){ return 'Please Enter Your Password'; } else { return 'Please Enter Your ' + input.placeholder; } } $.validator.messages.minlength = function (param, input) { if(input.name == 'signup_password'){ return 'Your password must be have at least 8 characters long'; } else{ return 'Please enter at least ' + param + ' characters for ' + input.placeholder; } } $.validator.messages.maxlength = function (param, input) { return 'Please enter no more than ' + param + ' characters for ' + input.placeholder; } $.validator.messages.digits = function (param, input) { return 'Please enter only digits for ' + input.placeholder; } $.validator.addMethod("mobileValidation", function(value, element) { var filter = /^[1-9][0-9]{6,15}$/; var phn_filter = /^(\d)(?!\1+$)\d{6,15}$/; if (filter.test(value)) { if(phn_filter.test(value)) { return true; } return false; } },"Please enter valid number." ); $('input[name="phonenumber"], input[name="phone_number"]').keypress(function (e) { if ($(this).val().length > 14) { return false; } else { e = (e) ? e : window.event; var charCode = (e.which) ? e.which : e.keyCode; if (charCode > 31 && (charCode < 48 || charCode > 57)) { return false; } return true; // $(this).val($(this).val().replace(/[^0-9\.]/g,'')) //this.value = this.value.replace(/[^0-9\.]/g,''); } }); $("input[name='fullname']").keypress(function (event) { var regex = new RegExp("^[a-zA-Z ]+$"); var key = String.fromCharCode(!event.charCode ? event.which : event.charCode); if (!regex.test(key)) { event.preventDefault(); return false; } }); var Phones = document.querySelectorAll('input[name="phonenumber"]'); Phones.forEach((phone) => { fncountryCode(phone); }); function fncountryCode(data) { window.intlTelInput(data,{ utilsScript: "https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.3/js/utils.min.js", defaultCountry: "auto", hiddenInput: "full_number", geoIpLookup: function(callback) { var countryCode = country_code; var country_code1 = "us"; var country_code1; $.get('https://www.cloudflare.com/cdn-cgi/trace', function(data) { data = data.trim().split('\n').reduce(function(obj, pair) { pair = pair.split('='); return obj[pair[0]] = pair[1], obj; }, {}); country_code1 = data.loc; ip = data.ip; $('.countryName').val(country_code1); $('.ipAddress').val(ip); if(country_code1 == 'IR' || country_code1 == 'IL' || country_code1 == 'EG' || country_code1 == 'IQ' || country_code1 == 'LB' || country_code1 == 'TR' || country_code1 == 'PS' || country_code1 == 'DZ' || country_code1 == 'SY' || country_code1 == 'YE' || country_code1 == 'MA' || country_code1 == 'JO' ||country_code1 == 'BH' || country_code1 == 'BHR' || country_code1 == 'JO' ||country_code1 == 'QA' || country_code1 == 'KW' || country_code1 == 'AE' || country_code1 == 'OM' || country_code1 == 'SA' || country_code1 == 'SD' ) { $('.tpbr_inr').addClass('middle_east'); } if (country_code1 == 'ZA' || country_code1 == 'MA' || country_code1 == 'NG' || country_code1 == 'ZM' || country_code1 == 'KE' || country_code1 == 'EG' || country_code1 == 'LB' || country_code1 == 'JO' || country_code1 == 'LS' || country_code1 == 'SZ' || country_code1 == 'BW' || country_code1 == 'NA' || country_code1 == 'AO' || country_code1 == 'CM' || country_code1 == 'GQ' || country_code1 == 'GA' || country_code1 == 'CG' || country_code1 == 'TD' || country_code1 == 'CF' || country_code1 == 'CD' || country_code1 == 'ST' || country_code1 == 'BI' || country_code1 == 'ER' || country_code1 == 'MG' || country_code1 == 'RE' || country_code1 == 'SO' || country_code1 == 'KM' || country_code1 == 'ET' || country_code1 == 'RW' || country_code1 == 'DJ' || country_code1 == 'YT' || country_code1 == 'SC' || country_code1 == 'UG' || country_code1 == 'MZ' || country_code1 == 'MW' || country_code1 == 'TZ' || country_code1 == 'ZW' || country_code1 == 'BJ' || country_code1 == 'LR' || country_code1 == 'SH' || country_code1 == 'BF' || country_code1 == 'GM' || country_code1 == 'ML' || country_code1 == 'GH' || country_code1 == 'MR' || country_code1 == 'SN' || country_code1 == 'CV' || country_code1 == 'CI' || country_code1 == 'GN' || country_code1 == 'NE' || country_code1 == 'SL' || country_code1 == 'GW' || country_code1 == 'TG' || country_code1 == 'DZ' || country_code1 == 'LY' ||country_code1 == 'TN' || country_code1 == 'EH' || country_code1 == 'SD' || country_code1 == 'IN' ) { $('.afrcn_cntry').show(); } callback(country_code1); }) }, initialCountry: "auto", separateDialCode: true, autoHideDialCode: false }); } /** Common Exist Popup Start */ const CookieService = { setCookieData(name, value, days) { let expires = ''; if (days) { const date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = '; expires=' + date.toUTCString(); } document.cookie = name + '=' + (value || '') + expires + ';'; }, getCookieData(name) { const cookies = document.cookie.split(';'); for (const cookie of cookies) { if (cookie.indexOf(name + '=') > -1) { return cookie.split('=')[1]; } } return null; } }; const mouseEvent = e => { const shouldShowExitIntent = !e.toElement && !e.relatedTarget && e.clientY < 10; if (shouldShowExitIntent) { document.removeEventListener('mouseout', mouseEvent); setTimeout(function() { $('#leav_ppup').modal('show'); }, 1000); //CookieService.setCookieData('exitIntentShown', true); } }; /* if (!CookieService.getCookieData('exitIntentShown')) { } setTimeout(() => { }, 1000);*/ document.addEventListener('mouseout', mouseEvent); /** Common Exit Popup End */ $('#entr_ppup').on('click', function() { $(this).modal('hide'); }); }); /*refferal_url*/ var pageURL = $(location).attr("href"); if (pageURL.indexOf("rf_url") > -1) { var rf_url_data = pageURL.split('?rf_url').pop(); rf_url_data = rf_url_data.replace("=https", "https"); var rf_url_data1 = rf_url_data.replace(/&utm_source/, "?utm_source"); $('.refferal_page_check').val(rf_url_data1); // Delegate click handler for all tags $(document).on("click", "a", function(event) { var class_1 = $(this).hasClass('navigation__link'); var has_toggle_attr = $(this).attr('data-bs-toggle') !== undefined; if (!class_1 && !has_toggle_attr) { event.preventDefault(); // Stop default navigation var is_utm_source = $(this).attr('href') || ""; var new_href = is_utm_source + '?rf_url=' + rf_url_data; // Update href and manually trigger navigation $(this).attr("href", new_href); window.location.href = new_href; } }); } else if (pageURL.indexOf("utm_source") > -1) { $('.refferal_page_check').val(pageURL); $(document).on("click", "a", function(event) { var class_1 = $(this).hasClass('navigation__link'); var has_toggle_attr = $(this).attr('data-bs-toggle') !== undefined; if (!class_1 && !has_toggle_attr) { event.preventDefault(); // Stop default navigation var is_utm_source = $(this).attr('href') || ""; if (is_utm_source.indexOf("utm_source") === -1) { pageURL = pageURL.replace("?", "&"); var new_href1 = is_utm_source + '?rf_url=' + pageURL; // Update href and manually trigger navigation $(this).attr("href", new_href1); window.location.href = new_href1; } } }); } $.fn.hasAttr = function(name) { return this.attr(name) !== undefined; };