<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
// Route::get('migrate', 'App\Http\Controllers\LandingPageController@migrateDB');

use App\Http\Controllers\HomeController;

Route::get('manifest.json', function () {
    return response()->json([
        'name' => 'Noora Curtain',
        'short_name' => 'Noora',
        'start_url' => url('/'),
        'scope' => url('/'),
        'background_color' => '#ffffff',
        'theme_color' => '#18b500',
        'display' => 'standalone',
        'orientation' => 'portrait',
        'icons' => [
            ['src' => asset('icons/icon-72x72.png'), 'type' => 'image/png', 'sizes' => '72x72'],
            ['src' => asset('icons/icon-96x96.png'), 'type' => 'image/png', 'sizes' => '96x96'],
            ['src' => asset('icons/icon-128x128.png'), 'type' => 'image/png', 'sizes' => '128x128'],
            ['src' => asset('icons/icon-144x144.png'), 'type' => 'image/png', 'sizes' => '144x144'],
            ['src' => asset('icons/icon-152x152.png'), 'type' => 'image/png', 'sizes' => '152x152'],
            ['src' => asset('icons/icon-192x192.png'), 'type' => 'image/png', 'sizes' => '192x192'],
            ['src' => asset('icons/icon-384x384.png'), 'type' => 'image/png', 'sizes' => '384x384'],
            ['src' => asset('icons/icon-512x512.png'), 'type' => 'image/png', 'sizes' => '512x512'],
        ],
    ], 200, [
        'Content-Type' => 'application/manifest+json',
        'Cache-Control' => 'no-cache, no-store, must-revalidate',
    ]);
});

Route::get('service-worker.js', function () {
    $script = <<<JS
self.addEventListener('install', function(event) {
    self.skipWaiting();
});

self.addEventListener('activate', function(event) {
    event.waitUntil(self.clients.claim());
});
JS;

    return response($script, 200, [
        'Content-Type' => 'application/javascript',
        'Cache-Control' => 'no-cache, no-store, must-revalidate',
    ]);
});

Route::get('clear', function () {
    Artisan::call('optimize:clear');
    cache()->forget('biller_list');
    cache()->forget('brand_list');
    cache()->forget('category_list');
    cache()->forget('coupon_list');
    cache()->forget('customer_list');
    cache()->forget('customer_group_list');
    cache()->forget('product_list');
    cache()->forget('product_list_with_variant');
    cache()->forget('warehouse_list');
    cache()->forget('table_list');
    cache()->forget('tax_list');
    cache()->forget('currency');
    cache()->forget('general_setting');
    cache()->forget('pos_setting');
    cache()->forget('user_role');
    cache()->forget('permissions');
    cache()->forget('role_has_permissions');
    cache()->forget('role_has_permissions_list');
    foreach (\DB::table('roles')->pluck('id') as $roleId) {
        cache()->forget('user_role' . $roleId);
        cache()->forget('role_has_permissions' . $roleId);
        cache()->forget('role_has_permissions_list' . $roleId);
    }
    dd('cleared');
});
Route::get('addon-list', 'HomeController@addonList');
Route::get('update-coupon', 'CouponController@updateCoupon');
Route::get('auto-update-dashboard', 'DashboardController@index')->name('dashboard');

// Auto Update
Route::group(['prefix' => 'developer-section'], function () {
    Route::get('/', 'DeveloperSectionController@index')->name('developer-section.index');
    Route::post('/', 'DeveloperSectionController@submit')->name('developer-section.submit');
    Route::post('/bug-update-setting', 'DeveloperSectionController@bugUpdateSetting')->name('bug-update-setting.submit');
    Route::post('/version-upgrade-setting', 'DeveloperSectionController@versionUpgradeSetting')->name('version-upgrade-setting.submit');
});

Route::get('/new-release', 'ClientAutoUpdateController@newVersionReleasePage')->name('new-release');
Route::get('/bugs', 'ClientAutoUpdateController@bugUpdatePage')->name('bug-update-page');
// Action on Client server
Route::post('version-upgrade', 'ClientAutoUpdateController@versionUpgrade')->name('version-upgrade');
Route::post('bug-update', 'ClientAutoUpdateController@bugUpdate')->name('bug-update');
Auth::routes();
Route::get('/documentation', 'HomeController@documentation');
Route::group(['middleware' => ['common', 'auth', 'active']], function () {
    Route::get('/', 'HomeController@index');
    Route::get('/dashboard', 'HomeController@dashboard');
    Route::get('/home', 'HomeController@home');
    Route::get('/yearly-best-selling-price', 'HomeController@yearlyBestSellingPrice');
    Route::get('/yearly-best-selling-qty', 'HomeController@yearlyBestSellingQty');
    Route::get('/monthly-best-selling-qty', 'HomeController@monthlyBestSellingQty');
    Route::get('/recent-sale', 'HomeController@recentSale');
    Route::get('/recent-purchase', 'HomeController@recentPurchase');
    Route::get('/recent-quotation', 'HomeController@recentQuotation');
    Route::get('/recent-payment', 'HomeController@recentPayment');
    Route::get('switch-theme/{theme}', 'HomeController@switchTheme')->name('switchTheme');
    Route::get('/dashboard-filter/{start_date}/{end_date}', 'HomeController@dashboardFilter');
    Route::get('check-batch-availability/{product_id}/{batch_no}/{warehouse_id}', 'ProductController@checkBatchAvailability');

    Route::get('language_switch/{locale}', 'LanguageController@switchLanguage')->name('language.switch');

    Route::get('role/permission/{id}', 'RoleController@permission')->name('role.permission');
    Route::post('role/set_permission', 'RoleController@setPermission')->name('role.setPermission');
    Route::resource('role', 'RoleController');

    Route::post('importunit', 'UnitController@importUnit')->name('unit.import');
    Route::post('unit/deletebyselection', 'UnitController@deleteBySelection');
    Route::get('unit/lims_unit_search', 'UnitController@limsUnitSearch')->name('unit.search');
    Route::resource('unit', 'UnitController');

    Route::post('category/import', 'CategoryController@import')->name('category.import');
    Route::post('category/deletebyselection', 'CategoryController@deleteBySelection');
    Route::post('category/category-data', 'CategoryController@categoryData');
    Route::resource('category', 'CategoryController');

    Route::post('importbrand', 'BrandController@importBrand')->name('brand.import');
    Route::post('brand/deletebyselection', 'BrandController@deleteBySelection');
    Route::get('brand/lims_brand_search', 'BrandController@limsBrandSearch')->name('brand.search');
    Route::resource('brand', 'BrandController');

    Route::post('supplier/deletebyselection', 'SupplierController@deleteBySelection');
    Route::post('suppliers/clear-due', 'SupplierController@clearDue')->name('supplier.clearDue');
    Route::resource('supplier', 'SupplierController');



    Route::resource('tailoringcategory', 'TailoringCategoryController');

    Route::post('tailoringproducts/product-data', 'TailoringProductController@productData');
    Route::post('tailoringproductscompleted/product-data', 'TailoringProductController@completedProductData')->name('tailoringproductscompleted.data');
    Route::post('tailoringproductsdelivered/product-data', 'TailoringProductController@deliveredProductData')->name('tailoringproductsdelivered.data');
    Route::get('tailoringproductscompleted/', 'TailoringProductController@completedIndex')->name('tailoringproducts.completed');
    Route::get('tailoringproductsdelivered/', 'TailoringProductController@deliveredIndex')->name('tailoringproducts.delivered');
    Route::get('tailoringproducts/{id}/print', 'TailoringProductController@print')->name('tailoringproducts.print');
    Route::get('tailoringproducts/{id}/reorders', 'TailoringProductController@reorderHistory')->name('tailoringproducts.reorders');
    Route::get('/tailoringproducts/print/{type}/{id}', 'TailoringProductController@printTailor')->name('tailoringproducts.printTailor');
    Route::put('tailoringproducts/{id}/active', 'TailoringProductController@active')->name('tailoringproducts.active');


    Route::post('tailoringproducts/{id}/accept-deliver', 'TailoringProductController@productDeliver')->name('tailoringproducts.deliver');
    Route::post('tailoringproducts/{id}/reorder', 'TailoringProductController@productReorder')->name('tailoringproducts.reorder');

    Route::post('tailoringproducts/deletebyselection', 'TailoringProductController@deleteBySelection')->name('tailoringproducts.deletebyselection');
    Route::post('tailoringproducts/addcustomer', 'TailoringProductController@add_customer')->name('tailoring.addcustomer');
    Route::resource('tailoringproducts', 'TailoringProductController');

    Route::post('tailor/tailor-data', 'TailorController@tailorData')->name('tailor.data');
    Route::post('tailor/deletebyselection', 'TailorController@deleteBySelection')->name('tailor.deletebyselection');
    Route::get('tailor/my-orders', 'TailorController@myOrders')->name('tailor.myOrders');
    Route::put('tailor/my-orders/{id}/status', 'TailorController@updateMyOrderStatus')->name('tailor.updateMyOrderStatus');
    Route::get('tailor/my-monthly-summary', 'TailorController@myMonthlySummary')->name('tailor.myMonthlySummary');
    Route::get('tailor/my-monthly-summary/print', 'TailorController@printMyMonthlySummary')->name('tailor.myMonthlySummary.print');
    Route::get('tailor-monthly-summary', 'TailorController@monthlySummary')->name('tailor.monthlySummary');
    Route::post('tailor-monthly-summary/payment', 'TailorController@storeMonthlyPayment')->name('tailor.monthlyPayment.store');
    Route::get('tailor-monthly-summary/print', 'TailorController@printMonthlySummary')->name('tailor.monthlySummary.print');
    Route::get('tailor/{id}/orders', 'TailorController@tailorOrders')->name('tailor.tailorOrders');
    Route::get('tailor/orders/{type}/{id}', 'TailorController@tailorOrderspay')->name('tailor.order.edit');
    Route::post('tailor/{id}/order-data', 'TailorController@tailorOrderData')->name('tailor.order.data');
    Route::post('tailor/{id}/deleteorderbyselection', 'TailorController@deleteOrderBySelection')->name('tailor.order.deletebyselection');


    Route::resource('tailor', 'TailorController');






    Route::post('importwarehouse', 'WarehouseController@importWarehouse')->name('warehouse.import');
    Route::post('warehouse/deletebyselection', 'WarehouseController@deleteBySelection');
    Route::get('warehouse/lims_warehouse_search', 'WarehouseController@limsWarehouseSearch')->name('warehouse.search');
    Route::resource('warehouse', 'WarehouseController');

    Route::resource('tables', 'TableController');

    Route::post('importtax', 'TaxController@importTax')->name('tax.import');
    Route::post('tax/deletebyselection', 'TaxController@deleteBySelection');
    Route::get('tax/lims_tax_search', 'TaxController@limsTaxSearch')->name('tax.search');
    Route::resource('tax', 'TaxController');

    //Route::get('products/getbarcode', 'ProductController@getBarcode');
    Route::post('products/product-data', 'ProductController@productData');
    Route::get('products/gencode', 'ProductController@generateCode')->name('gencode.p');
    Route::get('products/search', 'ProductController@search');
    Route::get('products/saleunit/{id}', 'ProductController@saleUnit');
    Route::get('products/getdata/{id}/{variant_id}', 'ProductController@getData');
    Route::get('products/product_warehouse/{id}', 'ProductController@productWarehouseData');
    Route::post('importproduct', 'ProductController@importProduct')->name('product.import');
    Route::post('exportproduct', 'ProductController@exportProduct')->name('product.export');
    Route::get('products/print_barcode', 'ProductController@printBarcode')->name('product.printBarcode');
    Route::get('products/lims_product_search', 'ProductController@limsProductSearch')->name('product.search');
    Route::post('products/deletebyselection', 'ProductController@deleteBySelection');
    Route::post('products/update', 'ProductController@updateProduct');
    Route::get('products/variant-data/{id}', 'ProductController@variantData');
    Route::get('products/history', 'ProductController@history')->name('products.history');
    Route::post('products/sale-history-data', 'ProductController@saleHistoryData');
    Route::post('products/purchase-history-data', 'ProductController@purchaseHistoryData');
    Route::post('products/sale-return-history-data', 'ProductController@saleReturnHistoryData');
    Route::post('products/purchase-return-history-data', 'ProductController@purchaseReturnHistoryData');
    Route::resource('products', 'ProductController');

    Route::post('importcustomer_group', 'CustomerGroupController@importCustomerGroup')->name('customer_group.import');
    Route::post('customer_group/deletebyselection', 'CustomerGroupController@deleteBySelection');
    Route::get('customer_group/lims_customer_group_search', 'CustomerGroupController@limsCustomerGroupSearch')->name('customer_group.search');
    Route::resource('customer_group', 'CustomerGroupController');

    Route::resource('discount-plans', 'DiscountPlanController');
    Route::resource('discounts', 'DiscountController');
    Route::get('discounts/product-search/{code}', 'DiscountController@productSearch');

    Route::post('importcustomer', 'CustomerController@importCustomer')->name('customer.import');
    Route::get('customer/getDeposit/{id}', 'CustomerController@getDeposit');
    Route::post('customer/add_deposit', 'CustomerController@addDeposit')->name('customer.addDeposit');
    Route::post('customer/update_deposit', 'CustomerController@updateDeposit')->name('customer.updateDeposit');
    Route::post('customer/deleteDeposit', 'CustomerController@deleteDeposit')->name('customer.deleteDeposit');
    Route::post('customer/deletebyselection', 'CustomerController@deleteBySelection');
    Route::get('customer/lims_customer_search', 'CustomerController@limsCustomerSearch')->name('customer.search');
    Route::post('customers/clear-due', 'CustomerController@clearDue')->name('customer.clearDue');
    Route::get('customer/{id}/statement', 'CustomerController@statement')->name('customer.statement');
    Route::resource('customer', 'CustomerController');

    Route::post('importbiller', 'BillerController@importBiller')->name('biller.import');
    Route::post('biller/deletebyselection', 'BillerController@deleteBySelection');
    Route::get('biller/lims_biller_search', 'BillerController@limsBillerSearch')->name('biller.search');
    Route::resource('biller', 'BillerController');

    Route::post('sales/sale-data', 'SaleController@saleData');
    Route::post('sales/sendmail', 'SaleController@sendMail')->name('sale.sendmail');
    Route::get('sales/product_sale/{id}', 'SaleController@productSaleData');
    Route::get('pos', 'SaleController@posSale')->name('sale.pos');
    Route::get('sales/lims_sale_search', 'SaleController@limsSaleSearch')->name('sale.search');
    Route::get('sales/lims_product_search', 'SaleController@limsProductSearch')->name('product_sale.search');
    Route::get('sales/getcustomergroup/{id}', 'SaleController@getCustomerGroup')->name('sale.getcustomergroup');
    Route::get('sales/getproduct/{id}', 'SaleController@getProduct')->name('sale.getproduct');
    Route::get('sales/getproduct/{category_id}/{brand_id}', 'SaleController@getProductByFilter');
    Route::get('sales/getfeatured', 'SaleController@getFeatured');
    Route::get('sales/get_gift_card', 'SaleController@getGiftCard');
    Route::get('sales/paypalSuccess', 'SaleController@paypalSuccess');
    Route::get('sales/paypalPaymentSuccess/{id}', 'SaleController@paypalPaymentSuccess');
    Route::get('sales/gen_invoice/{id}', 'SaleController@genInvoice')->name('sale.invoice');
    Route::post('sales/add_payment', 'SaleController@addPayment')->name('sale.add-payment');
    Route::get('sales/getpayment/{id}', 'SaleController@getPayment')->name('sale.get-payment');
    Route::post('sales/updatepayment', 'SaleController@updatePayment')->name('sale.update-payment');
    Route::post('sales/deletepayment', 'SaleController@deletePayment')->name('sale.delete-payment');
    Route::get('sales/{id}/create', 'SaleController@createSale')->name('sale.draft');;
    Route::post('sales/deletebyselection', 'SaleController@deleteBySelection');
    Route::get('sales/print-last-reciept', 'SaleController@printLastReciept')->name('sales.printLastReciept');
    Route::get('sales/today-sale', 'SaleController@todaySale');
    Route::get('sales/today-profit/{warehouse_id}', 'SaleController@todayProfit');
    Route::get('sales/check-discount', 'SaleController@checkDiscount');
    Route::get('sales/customer-search', 'SaleController@customerSearch')->name('sales.customer-search');
    Route::resource('sales', 'SaleController');

    Route::get('delivery', 'DeliveryController@index')->name('delivery.index');
    Route::get('delivery/product_delivery/{id}', 'DeliveryController@productDeliveryData');
    Route::get('delivery/create/{id}', 'DeliveryController@create');
    Route::post('delivery/store', 'DeliveryController@store')->name('delivery.store');
    Route::post('delivery/sendmail', 'DeliveryController@sendMail')->name('delivery.sendMail');
    Route::get('delivery/{id}/edit', 'DeliveryController@edit');
    Route::post('delivery/update', 'DeliveryController@update')->name('delivery.update');
    Route::post('delivery/deletebyselection', 'DeliveryController@deleteBySelection');
    Route::post('delivery/delete/{id}', 'DeliveryController@delete')->name('delivery.delete');

    Route::post('quotations/quotation-data', 'QuotationController@quotationData')->name('quotations.data');
    Route::get('quotations/product_quotation/{id}', 'QuotationController@productQuotationData');
    Route::get('quotations/lims_product_search', 'QuotationController@limsProductSearch')->name('product_quotation.search');
    Route::get('quotations/getcustomergroup/{id}', 'QuotationController@getCustomerGroup')->name('quotation.getcustomergroup');
    Route::get('quotations/getproduct/{id}', 'QuotationController@getProduct')->name('quotation.getproduct');
    Route::get('quotations/{id}/create_sale', 'QuotationController@createSale')->name('quotation.create_sale');
    Route::get('quotations/{id}/create_purchase', 'QuotationController@createPurchase')->name('quotation.create_purchase');
    Route::post('quotations/sendmail', 'QuotationController@sendMail')->name('quotation.sendmail');
    Route::post('quotations/deletebyselection', 'QuotationController@deleteBySelection');
    Route::resource('quotations', 'QuotationController');

    Route::post('purchases/purchase-data', 'PurchaseController@purchaseData')->name('purchases.data');
    Route::get('purchases/product_purchase/{id}', 'PurchaseController@productPurchaseData');
    Route::get('purchases/lims_product_search', 'PurchaseController@limsProductSearch')->name('product_purchase.search');
    Route::post('purchases/add_payment', 'PurchaseController@addPayment')->name('purchase.add-payment');
    Route::get('purchases/getpayment/{id}', 'PurchaseController@getPayment')->name('purchase.get-payment');
    Route::post('purchases/updatepayment', 'PurchaseController@updatePayment')->name('purchase.update-payment');
    Route::post('purchases/deletepayment', 'PurchaseController@deletePayment')->name('purchase.delete-payment');
    Route::get('purchases/purchase_by_csv', 'PurchaseController@purchaseByCsv');
    Route::post('importpurchase', 'PurchaseController@importPurchase')->name('purchase.import');
    Route::post('purchases/deletebyselection', 'PurchaseController@deleteBySelection');
    Route::resource('purchases', 'PurchaseController');

    Route::post('transfers/transfer-data', 'TransferController@transferData')->name('transfers.data');
    Route::get('transfers/product_transfer/{id}', 'TransferController@productTransferData');
    Route::get('transfers/transfer_by_csv', 'TransferController@transferByCsv');
    Route::post('importtransfer', 'TransferController@importTransfer')->name('transfer.import');
    Route::get('transfers/getproduct/{id}', 'TransferController@getProduct')->name('transfer.getproduct');
    Route::get('transfers/lims_product_search', 'TransferController@limsProductSearch')->name('product_transfer.search');
    Route::post('transfers/deletebyselection', 'TransferController@deleteBySelection');
    Route::resource('transfers', 'TransferController');

    Route::get('qty_adjustment/getproduct/{id}', 'AdjustmentController@getProduct')->name('adjustment.getproduct');
    Route::get('qty_adjustment/lims_product_search', 'AdjustmentController@limsProductSearch')->name('product_adjustment.search');
    Route::post('qty_adjustment/deletebyselection', 'AdjustmentController@deleteBySelection');
    Route::resource('qty_adjustment', 'AdjustmentController');

    Route::post('return-sale/return-data', 'ReturnController@returnData');
    Route::get('return-sale/getcustomergroup/{id}', 'ReturnController@getCustomerGroup')->name('return-sale.getcustomergroup');
    Route::post('return-sale/sendmail', 'ReturnController@sendMail')->name('return-sale.sendmail');
    Route::get('return-sale/getproduct/{id}', 'ReturnController@getProduct')->name('return-sale.getproduct');
    Route::get('return-sale/lims_product_search', 'ReturnController@limsProductSearch')->name('product_return-sale.search');
    Route::get('return-sale/product_return/{id}', 'ReturnController@productReturnData');
    Route::post('return-sale/deletebyselection', 'ReturnController@deleteBySelection');
    Route::resource('return-sale', 'ReturnController');

    Route::post('return-purchase/return-data', 'ReturnPurchaseController@returnData');
    Route::get('return-purchase/getcustomergroup/{id}', 'ReturnPurchaseController@getCustomerGroup')->name('return-purchase.getcustomergroup');
    Route::post('return-purchase/sendmail', 'ReturnPurchaseController@sendMail')->name('return-purchase.sendmail');
    Route::get('return-purchase/getproduct/{id}', 'ReturnPurchaseController@getProduct')->name('return-purchase.getproduct');
    Route::get('return-purchase/lims_product_search', 'ReturnPurchaseController@limsProductSearch')->name('product_return-purchase.search');
    Route::get('return-purchase/product_return/{id}', 'ReturnPurchaseController@productReturnData');
    Route::post('return-purchase/deletebyselection', 'ReturnPurchaseController@deleteBySelection');
    Route::resource('return-purchase', 'ReturnPurchaseController');

    Route::get('report/product_quantity_alert', 'ReportController@productQuantityAlert')->name('report.qtyAlert');
    Route::get('report/daily-sale-objective', 'ReportController@dailySaleObjective')->name('report.dailySaleObjective');
    Route::post('report/daily-sale-objective-data', 'ReportController@dailySaleObjectiveData');
    Route::get('report/product-expiry', 'ReportController@productExpiry')->name('report.productExpiry');
    Route::get('report/warehouse_stock', 'ReportController@warehouseStock')->name('report.warehouseStock');
    Route::get('report/daily_sale/{year}/{month}', 'ReportController@dailySale');
    Route::post('report/daily_sale/{year}/{month}', 'ReportController@dailySaleByWarehouse')->name('report.dailySaleByWarehouse');
    Route::get('report/monthly_sale/{year}', 'ReportController@monthlySale');
    Route::post('report/monthly_sale/{year}', 'ReportController@monthlySaleByWarehouse')->name('report.monthlySaleByWarehouse');
    Route::get('report/daily_purchase/{year}/{month}', 'ReportController@dailyPurchase');
    Route::post('report/daily_purchase/{year}/{month}', 'ReportController@dailyPurchaseByWarehouse')->name('report.dailyPurchaseByWarehouse');
    Route::get('report/monthly_purchase/{year}', 'ReportController@monthlyPurchase');
    Route::post('report/monthly_purchase/{year}', 'ReportController@monthlyPurchaseByWarehouse')->name('report.monthlyPurchaseByWarehouse');
    Route::get('report/best_seller', 'ReportController@bestSeller');
    Route::post('report/best_seller', 'ReportController@bestSellerByWarehouse')->name('report.bestSellerByWarehouse');
    Route::post('report/profit_loss', 'ReportController@profitLoss')->name('report.profitLoss');
    Route::get('report/product_report', 'ReportController@productReport')->name('report.product');
    Route::post('report/product_report_data', 'ReportController@productReportData');
    Route::post('report/purchase', 'ReportController@purchaseReport')->name('report.purchase');
    Route::post('report/sale_report', 'ReportController@saleReport')->name('report.sale');
    Route::post('report/sale-report-chart', 'ReportController@saleReportChart')->name('report.saleChart');
    Route::post('report/payment_report_by_date', 'ReportController@paymentReportByDate')->name('report.paymentByDate');
    Route::post('report/warehouse_report', 'ReportController@warehouseReport')->name('report.warehouse');
    Route::post('report/warehouse-sale-data', 'ReportController@warehouseSaleData');
    Route::post('report/warehouse-purchase-data', 'ReportController@warehousePurchaseData');
    Route::post('report/warehouse-expense-data', 'ReportController@warehouseExpenseData');
    Route::post('report/warehouse-quotation-data', 'ReportController@warehouseQuotationData');
    Route::post('report/warehouse-return-data', 'ReportController@warehouseReturnData');
    Route::post('report/user_report', 'ReportController@userReport')->name('report.user');
    Route::post('report/user-sale-data', 'ReportController@userSaleData');
    Route::post('report/user-purchase-data', 'ReportController@userPurchaseData');
    Route::post('report/user-expense-data', 'ReportController@userExpenseData');
    Route::post('report/user-quotation-data', 'ReportController@userQuotationData');
    Route::post('report/user-payment-data', 'ReportController@userPaymentData');
    Route::post('report/user-transfer-data', 'ReportController@userTransferData');
    Route::post('report/user-payroll-data', 'ReportController@userPayrollData');
    Route::post('report/customer_report', 'ReportController@customerReport')->name('report.customer');
    Route::post('report/customer-sale-data', 'ReportController@customerSaleData');
    Route::post('report/customer-payment-data', 'ReportController@customerPaymentData');
    Route::post('report/customer-quotation-data', 'ReportController@customerQuotationData');
    Route::post('report/customer-return-data', 'ReportController@customerReturnData');
    Route::post('report/customer-group', 'ReportController@customerGroupReport')->name('report.customer_group');
    Route::post('report/customer-group-sale-data', 'ReportController@customerGroupSaleData');
    Route::post('report/customer-group-payment-data', 'ReportController@customerGroupPaymentData');
    Route::post('report/customer-group-quotation-data', 'ReportController@customerGroupQuotationData');
    Route::post('report/customer-group-return-data', 'ReportController@customerGroupReturnData');
    Route::post('report/supplier', 'ReportController@supplierReport')->name('report.supplier');
    Route::post('report/supplier-purchase-data', 'ReportController@supplierPurchaseData');
    Route::post('report/supplier-payment-data', 'ReportController@supplierPaymentData');
    Route::post('report/supplier-return-data', 'ReportController@supplierReturnData');
    Route::post('report/supplier-quotation-data', 'ReportController@supplierQuotationData');
    Route::post('report/customer-due-report', 'ReportController@customerDueReportByDate')->name('report.customerDueByDate');
    Route::post('report/customer-due-report-data', 'ReportController@customerDueReportData');
    Route::post('report/supplier-due-report', 'ReportController@supplierDueReportByDate')->name('report.supplierDueByDate');

    Route::get('user/profile/{id}', 'UserController@profile')->name('user.profile');
    Route::put('user/update_profile/{id}', 'UserController@profileUpdate')->name('user.profileUpdate');
    Route::put('user/changepass/{id}', 'UserController@changePassword')->name('user.password');
    Route::get('user/genpass', 'UserController@generatePassword');
    Route::post('user/deletebyselection', 'UserController@deleteBySelection');
    Route::resource('user', 'UserController');

    Route::get('setting/general_setting', 'SettingController@generalSetting')->name('setting.general');
    Route::post('setting/general_setting_store', 'SettingController@generalSettingStore')->name('setting.generalStore');

    Route::get('setting/reward-point-setting', 'SettingController@rewardPointSetting')->name('setting.rewardPoint');
    Route::post('setting/reward-point-setting_store', 'SettingController@rewardPointSettingStore')->name('setting.rewardPointStore');

    Route::get('backup', 'SettingController@backup')->name('setting.backup');
    Route::get('setting/general_setting/change-theme/{theme}', 'SettingController@changeTheme');
    Route::get('setting/mail_setting', 'SettingController@mailSetting')->name('setting.mail');
    Route::get('setting/sms_setting', 'SettingController@smsSetting')->name('setting.sms');
    Route::get('setting/createsms', 'SettingController@createSms')->name('setting.createSms');
    Route::post('setting/sendsms', 'SettingController@sendSms')->name('setting.sendSms');
    Route::get('setting/hrm_setting', 'SettingController@hrmSetting')->name('setting.hrm');
    Route::post('setting/hrm_setting_store', 'SettingController@hrmSettingStore')->name('setting.hrmStore');
    Route::post('setting/mail_setting_store', 'SettingController@mailSettingStore')->name('setting.mailStore');
    Route::post('setting/sms_setting_store', 'SettingController@smsSettingStore')->name('setting.smsStore');
    Route::get('setting/pos_setting', 'SettingController@posSetting')->name('setting.pos');
    Route::post('setting/pos_setting_store', 'SettingController@posSettingStore')->name('setting.posStore');
    Route::get('setting/empty-database', 'SettingController@emptyDatabase')->name('setting.emptyDatabase');

    Route::get('expense_categories/gencode', 'ExpenseCategoryController@generateCode');
    Route::post('expense_categories/import', 'ExpenseCategoryController@import')->name('expense_category.import');
    Route::post('expense_categories/deletebyselection', 'ExpenseCategoryController@deleteBySelection');
    Route::resource('expense_categories', 'ExpenseCategoryController');

    Route::post('expenses/expense-data', 'ExpenseController@expenseData')->name('expenses.data');
    Route::post('expenses/deletebyselection', 'ExpenseController@deleteBySelection');
    Route::resource('expenses', 'ExpenseController');

    Route::get('gift_cards/gencode', 'GiftCardController@generateCode');
    Route::post('gift_cards/recharge/{id}', 'GiftCardController@recharge')->name('gift_cards.recharge');
    Route::post('gift_cards/deletebyselection', 'GiftCardController@deleteBySelection');
    Route::resource('gift_cards', 'GiftCardController');

    Route::get('coupons/gencode', 'CouponController@generateCode');
    Route::post('coupons/deletebyselection', 'CouponController@deleteBySelection');
    Route::resource('coupons', 'CouponController');
    //accounting routes
    Route::post('accounts/owner-deposit', 'AccountsController@ownerDeposit')->name('accounts.ownerDeposit');
    Route::get('accounts/make-default/{id}', 'AccountsController@makeDefault');
    Route::get('accounts/balancesheet', 'AccountsController@balanceSheet')->name('accounts.balancesheet');
    Route::post('accounts/account-statement', 'AccountsController@accountStatement')->name('accounts.statement');
    Route::resource('accounts', 'AccountsController');
    Route::resource('money-transfers', 'MoneyTransferController');
    //HRM routes
    Route::post('departments/deletebyselection', 'DepartmentController@deleteBySelection');
    Route::resource('departments', 'DepartmentController');

    Route::post('employees/deletebyselection', 'EmployeeController@deleteBySelection');
    Route::resource('employees', 'EmployeeController');

    Route::post('payroll/deletebyselection', 'PayrollController@deleteBySelection');
    Route::resource('payroll', 'PayrollController');

    Route::post('attendance/deletebyselection', 'AttendanceController@deleteBySelection');
    Route::resource('attendance', 'AttendanceController');

    Route::resource('stock-count', 'StockCountController');
    Route::post('stock-count/finalize', 'StockCountController@finalize')->name('stock-count.finalize');
    Route::get('stock-count/stockdif/{id}', 'StockCountController@stockDif');
    Route::get('stock-count/{id}/qty_adjustment', 'StockCountController@qtyAdjustment')->name('stock-count.adjustment');

    Route::post('holidays/deletebyselection', 'HolidayController@deleteBySelection');
    Route::get('approve-holiday/{id}', 'HolidayController@approveHoliday')->name('approveHoliday');
    Route::get('holidays/my-holiday/{year}/{month}', 'HolidayController@myHoliday')->name('myHoliday');
    Route::resource('holidays', 'HolidayController');

    Route::get('cash-register', 'CashRegisterController@index')->name('cashRegister.index');
    Route::get('cash-register/check-availability/{warehouse_id}', 'CashRegisterController@checkAvailability')->name('cashRegister.checkAvailability');
    Route::post('cash-register/store', 'CashRegisterController@store')->name('cashRegister.store');
    Route::get('cash-register/getDetails/{id}', 'CashRegisterController@getDetails');
    Route::get('cash-register/showDetails/{warehouse_id}', 'CashRegisterController@showDetails');
    Route::post('cash-register/close', 'CashRegisterController@close')->name('cashRegister.close');

    Route::get('notifications', 'NotificationController@index')->name('notifications.index');
    Route::post('notifications/store', 'NotificationController@store')->name('notifications.store');
    Route::get('notifications/mark-as-read', 'NotificationController@markAsRead');

    Route::resource('currency', 'CurrencyController');

    Route::get('my-transactions/{year}/{month}', 'HomeController@myTransaction');

    Route::resource('custom-fields', 'CustomFieldController');

    Route::get('addon-list', 'HomeController@addonList');
    Route::post('woocommerce-install', 'AddonInstallController@woocommerceInstall')->name('woocommerce.install');
});
