<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the Closure to execute when that URI is requested.
|
*/

//главная страница
Route::get('/', array('as' => 'home', 'uses' => 'HomeController@index'));

//регистрация/вход пользователя
Route::get('login', 'UserController@showLogin');
Route::post('login', 'UserController@login');
Route::get('logout', 'UserController@logout');
Route::get('register', 'UserController@showRegistration');
Route::post('register', 'UserController@store');
Route::post('users/{id}/change', 'UserController@change');
Route::resource('users', 'UserController', array('only' => array('index', 'show', 'create', 'store', 'edit', 'destroy', 'update')));

// Телефония
Route::get('telefony', 'TelefonyController@index');

//восстановление пароля
Route::controller('password', 'RemindersController');

//Заявки
Route::get('lead', 'LeadController@index');
Route::post('lead/{id}', 'LeadController@getLead')->where('id', '[0-9]+');
Route::post('lead/sendtocrm', 'LeadController@sendToCRM');
Route::post('lead/delete', 'LeadController@delete');

//CRM
Route::get('crm', 'CrmController@index');
Route::post('crm/partner/{id}', 'CrmController@getPartner')->where('id', '[0-9]+');
Route::post('crm/partner/update', 'CrmController@updatePartner');
Route::post('crm/search', 'CrmController@search');
Route::get('crm/searchpage', 'CrmController@searchPage');
Route::any('crm/globalsearch', 'CrmController@globalSearch');
//Route::post('crm/getrefrence', 'CrmController@getRefrence');
Route::post('crm/getrefrencestat', 'CrmController@getRefrenceStat');
Route::get('crm/getrefrencestat', function() {return Redirect::to('/');});
Route::post('crm/holdrefrence', 'CrmController@holdRefrence');
Route::post('crm/{id}/comments', 'CrmController@getPartnerComments')->where('partnerId', '[0-9]+');
Route::post('crm/getworkpartner', 'CrmController@getWorkPartner');
Route::get('crm/shoplogistics/act_fence', 'CrmController@shopLogisticsActFence');
Route::get('crm/cdek/act_fence', 'CrmController@cdekActFence');
//Route::get('crm/shoplogistics/export', 'CrmController@shopLogisticsExport');

//Отправка
Route::get('shipments', 'ShipmentsController@index');
Route::get('shipments/create', 'ShipmentsController@create');
Route::post('shipments/store', 'ShipmentsController@store');
Route::post('shipments/setnogoods', 'ShipmentsController@setNoGoods');
Route::post('shipments/sethasgoods', 'ShipmentsController@setHasGoods');
Route::post('shipments/cdekpacked', 'ShipmentsController@cdekPacked');
Route::post('shipments/shoplogistics/actfeence', 'ShipmentsController@shoplogisticsActFence');
Route::post('shipments/shoplogistics/zabor', 'ShipmentsController@shoplogisticsAddZabor');
Route::post('shipments/shoplogistics/transfered', 'ShipmentsController@shoplogisticsTransfered');
Route::post('shipments/shoplogistics/send', 'ShipmentsController@shoplogisticsSend');
Route::get('shipments/shoplogistics/{id}/act_fence', 'ShipmentsController@downloadShoplogisticsActFence')->where('shipmentId', '[0-9]+');
Route::get('shipments/shoplogistics/{id}/', 'ShipmentsController@downloadShoplogisticsActFence')->where('shipmentId', '[0-9]+');
Route::get('shipments/post/{id}/export', 'ShipmentsController@downloadPostExport')->where('shipmentId', '[0-9]+');
Route::post('shipments/cdek/actfeence', 'ShipmentsController@cdekActFence');
Route::post('shipments/cdek/zabor', 'ShipmentsController@cdekAddZabor');
Route::post('shipments/cdek/transfered', 'ShipmentsController@cdekTransfered');
Route::post('shipments/cdek/send', 'ShipmentsController@cdekSend');
Route::get('shipments/sdek/{id}/act_fence', 'ShipmentsController@downloadCdekActFence')->where('shipmentId', '[0-9]+');
Route::get('shipments/sdek/{id}/orderprint', 'ShipmentsController@downloadCdekOrderPrint')->where('partnerId', '[0-9]+');

//Склад
Route::get('storage', 'StorageController@index');

//работа с клиентом
Route::post('partner/{id}/infosource', 'PartnerController@getSource')->where('id', '[0-9]+');
Route::get('partner/{id}', 'PartnerController@index')->where('partnerId', '[0-9]+');
Route::post('partner/getmanagers', 'PartnerController@getManagersList');
Route::post('partner/changemanager', 'PartnerController@setNewManager');
Route::post('partner/call', 'PartnerController@call');
Route::get('partner/call/{id}.wav', 'PartnerController@getCallFile')->where('mlsitcallId', '[0-9]+');
Route::get('partner/call/download/{id}/{name}.wav', 'PartnerController@downloadCallFile')->where('mlsitcallId', '[0-9]+');
Route::post('partner/trashphone', 'PartnerController@trashPhone');
Route::post('partner/repeated', 'PartnerController@repeated');
Route::post('partner/holdover', 'PartnerController@holdOver');
Route::post('partner/busy', 'PartnerController@busy');
Route::post('partner/reject', 'PartnerController@reject');
Route::post('partner/setdatetime', 'PartnerController@setDateTime');
Route::post('partner/agree', 'PartnerController@agree');
Route::post('partner/paymentrecive', 'PartnerController@paymentRecive');
Route::post('partner/paymentconfirm', 'PartnerController@paymentConfirm');
Route::post('partner/registrationok', 'PartnerController@registrationOk');
Route::post('partner/todelivering', 'PartnerController@toDelivering');
Route::post('partner/sended', 'PartnerController@sended');
Route::post('partner/recived', 'PartnerController@recived');
Route::post('partner/recivedandpaymentrecive', 'PartnerController@recivedAndPaymentRecive');
Route::post('partner/uploadfile', 'PartnerController@uploadFile');
Route::post('partner/deletefile', 'PartnerController@deleteFile');
Route::post('partner/sendchecked', 'PartnerController@sendChecked');
Route::post('partner/deliverychecked', 'PartnerController@deliveryChecked');
Route::post('partner/update', 'PartnerController@update');
Route::post('partner/hrsuccess', 'PartnerHrController@hrSuccess');
Route::post('partner/hrtest', 'PartnerHrController@hrTest');
Route::post('partner/hrreject', 'PartnerHrController@reject');
Route::post('partner/hrreserve', 'PartnerHrController@reserve');
Route::post('partner/clarificationaddress', 'PartnerController@clarificationAddress');
Route::post('partner/sendtoshoplogistics', 'PartnerController@sendToShoplogistics');
Route::post('partner/checkshoplogistics', 'PartnerController@checkShoplogistics');
Route::post('partner/sendtoshoplogisticsall', 'PartnerController@sendToShoplogisticsAll');
Route::get('partner/{id}/productsjson', 'PartnerController@productsJSON')->where('partnerId', '[0-9]+');
Route::post('partner/cdekcalculate', 'PartnerController@cdekCalculate');
Route::post('partner/checkcdek', 'PartnerController@checkCdek');
Route::post('partner/sendtocdek', 'PartnerController@sendToCdek');
Route::post('partner/sendtocdekall', 'PartnerController@sendToCdekAll');
Route::post('partner/deletecdek', 'PartnerController@deleteCdek');

//Статистика
Route::get('stat/crm', 'StatController@crm');
Route::get('stat/leads', 'StatController@leads');
Route::get('stat/reject', 'StatController@reject');
Route::get('stat/finance', 'StatController@finance');
Route::get('stat/managers', 'StatController@managers');
Route::get('stat/products', 'StatController@products');
Route::get('stat/refrences', 'StatController@refrences');
Route::get('stat/visits', 'StatController@visits');
Route::get('stat/visits/dashboard', 'StatController@dashboard');
Route::get('stat/visits/all', 'StatController@visitsAll');
Route::get('stat/visits/lead', 'StatController@visitsLead');
Route::get('stat/visits/costs', 'StatController@costs');
Route::post('stat/visits/costs/create', 'StatController@createCost');
Route::post('stat/visits/costs/update', 'StatController@updateCost');
Route::post('stat/visits/costs/delete', 'StatController@deleteCost');
Route::post('stat/visits/costs/restore', 'StatController@restoreCost');
Route::get('stat/visits/utmsource', 'StatController@visitsUtmsource');
Route::get('stat/visits/utm_sources', 'UtmController@utmSources');
Route::post('stat/visits/utm_sources/create', 'UtmController@createUtmSource');
Route::post('stat/visits/utm_sources/update', 'UtmController@updateUtmSource');
Route::post('stat/visits/utm_sources/delete', 'UtmController@deleteUtmSource');
Route::post('stat/visits/utm_sources/restore', 'UtmController@restoreUtmSource');
Route::get('stat/visits/utm_campaigns', 'UtmController@utmCampaigns');
Route::post('stat/visits/utm_campaigns/create', 'UtmController@createUtmCampaign');
Route::post('stat/visits/utm_campaigns/update', 'UtmController@updateUtmCampaign');
Route::post('stat/visits/utm_campaigns/delete', 'UtmController@deleteUtmCampaign');
Route::post('stat/visits/utm_campaigns/restore', 'UtmController@restoreUtmCampaign');
Route::get('stat/visits/utmsourceext', 'StatController@visitsUtmsourceExt');
Route::get('stat/visits/budget', 'VisitsBudgetController@index');
Route::post('stat/visits/budget/update', 'VisitsBudgetController@update');
Route::get('stat/hr/leads', 'StatHrController@leads');

//Бюджет
Route::get('budget', 'BudgetController@index');
Route::get('budget/reports', 'BudgetController@reports');
Route::get('budget/reports/totalcosts/all', 'BudgetController@totalCosts');
Route::get('budget/reports/totalcosts/archive', 'BudgetController@totalCostsArchive');
Route::get('budget/reports/totalcosts/{projectId}', 'BudgetController@totalCostsProject');
Route::get('budget/reports/chartStat', 'BudgetController@chartStat');
Route::get('budget/reports/getCurrMonthStat', 'BudgetController@getCurrMonthStat');
Route::get('budget/reports/getCurrYearStat', 'BudgetController@getCurrYearStat');
Route::get('budget/reports/getYearByMonth', 'BudgetController@getYearByMonth');
Route::post('budget/update', 'BudgetController@updateCost');
Route::post('budget/updatemonth', 'BudgetController@updateMounthPlan');
Route::post('budget/updatepercent/{endDate?}', 'BudgetController@updateGroupPercent');
Route::get('budget/archive', 'BudgetController@archiveOperations');
Route::get('budget/stat/costs', 'BudgetStatController@costs');
Route::get('budget/stat/costs/export', 'BudgetStatController@costsExport');
Route::get('budget/operations', 'BudgetController@operations');
Route::post('budget/operations/add', 'BudgetController@createOperation');
Route::post('budget/operations/update', 'BudgetController@updateOperation');
Route::post('budget/operations/delete', 'BudgetController@deleteOperation');
Route::post('budget/operations/restore', 'BudgetController@restoreOperation');
Route::post('budget/operations/noincome', 'BudgetController@noIncomeOperation');
Route::post('budget/operations/nooutcome', 'BudgetController@noOutcomeOperation');
Route::post('budget/operations/transit', 'BudgetController@transitOperation');
Route::post('budget/operations/getSalaryOperation', 'BudgetController@getSalaryOperation');
Route::post('budget/operations/salary', 'BudgetController@updateSalaryOperation');
Route::post('budget/operations/history', 'BudgetOperationHistoryController@getHistory');
// Заявки на расход
Route::get('budget/costsrequests/downloadfile/{id}', 'BudgetCostsRequestsUploadController@downloadFile')->where('id', '[0-9]+');
Route::get('budget/costsrequests', 'BudgetCostsRequestsController@costsRequests');
Route::get('budget/costsrequests/test', 'BudgetCostsRequestsController@costsRequestsTest');

Route::get('budget/costsrequests/sign', 'BudgetCostsRequestsController@signCostsRequests');
Route::get('budget/costsrequests/mysign', 'BudgetCostsRequestsController@mySignRequests');
Route::get('budget/costsrequests/new', 'BudgetCostsRequestsController@newCostsRequests');
Route::get('budget/costsrequests/agreed', 'BudgetCostsRequestsController@agreedCostsRequests');
Route::get('budget/costsrequests/rejected', 'BudgetCostsRequestsController@rejectedCostsRequests');
Route::get('budget/costsrequests/paid', 'BudgetCostsRequestsController@paidCostsRequests'); // оплаченные
Route::post('budget/costsrequests/openPayCostsRequest', 'BudgetCostsRequestsController@openPayCostsRequest'); // открытие окна оплаты
Route::post('budget/costsrequests/setacccode', 'BudgetCostsRequestsController@setAccountCode');
Route::get('budget/costsrequests/my', 'BudgetCostsRequestsController@myCostsRequests');
Route::get('budget/costsrequests/pattern', 'BudgetCostsRequestsController@patterns'); // Шаблоны заявок
Route::get('budget/costsrequests/search', 'BudgetCostsRequestsController@costsRequestsSearch'); // страница результатов поиска и фильтров
//Route::get('budget/costsrequests/fastsearch', 'BudgetCostsRequestsController@costsRequestsFastSearch');// быстрый поиск
//Route::get('budget/costsrequests/filtersearch', 'BudgetCostsRequestsController@costsRequestsFilterSearch');// поиск с фильтрами
Route::post('budget/costsrequests/showhistory/{id}', 'BudgetCostsRequestsController@showHistory')/*->where('id', '[0-9]+')*/;
Route::post('budget/costsrequests/checkCostsRequest', 'BudgetCostsRequestsController@checkCostsRequest');

// Route::post('budget/costsrequests/testDeleteFile', 'BudgetCostsRequestsController@testDeleteFile'); // тест удаления

Route::post('budget/costsrequests/create', 'BudgetCostsRequestsController@createRequest');
Route::post('budget/costsrequests/editCostsRequest', 'BudgetCostsRequestsController@editCostsRequest');
Route::post('budget/costsrequests/agreeCostsRequest', 'BudgetCostsRequestsController@agreeCostsRequest');
Route::post('budget/costsrequests/allocateCostsRequest', 'BudgetCostsRequestsController@allocateCostsRequest');
Route::post('budget/costsrequests/saveAllocatedCostsRequest', 'BudgetCostsRequestsController@saveAllocatedCostsRequest');
Route::post('budget/costsrequests/signCostsRequest', 'BudgetCostsRequestsController@signCostsRequest'); //подписать
Route::post('budget/costsrequests/rejectSignCostsRequest', 'BudgetCostsRequestsController@rejectSignCostsRequest');//отказ в подписи
Route::post('budget/costsrequests/backOffCostsRequest', 'BudgetCostsRequestsController@backOffCostsRequest');//возврат с подписи
Route::post('budget/costsrequests/payCostsRequest', 'BudgetCostsRequestsController@payCostsRequest');
Route::post('budget/costsrequests/rejectCostsRequest', 'BudgetCostsRequestsController@rejectCostsRequest');
Route::post('budget/costsrequests/updateCostsRequest', 'BudgetCostsRequestsController@updateCostsRequest');
Route::post('budget/costsrequests/delete', 'BudgetCostsRequestsController@deleteCostsRequest');
Route::post('budget/costsrequests/restore', 'BudgetCostsRequestsController@restoreCostsRequest');

Route::post('budget/costsrequests/uploadfile', 'BudgetCostsRequestsUploadController@uploadFile');
Route::post('budget/costsrequests/deletefile', 'BudgetCostsRequestsUploadController@deleteFile');
Route::post('budget/costsrequests/getNewNotifications', 'BudgetCostsRequestsController@getNewNotifications'); //Уведомления в заявках - 3 мин
Route::post('budget/costsrequests/getCountRequestsByStatus', 'BudgetCostsRequestsController@getCountRequestsByStatus'); //Кол-во по статусам в окне уведомления - 20 мин
Route::post('budget/costsrequests/setViewNotification', 'BudgetCostsRequestsController@setViewNotification'); // отметка о просмотре уведомления

 // бюджет - зарплата
Route::get('budget/salary', 'BudgetSalaryController@index');

Route::get('budget/salary/stat', 'BudgetSalaryController@stat');
Route::get('budget/salary/stat/all', 'BudgetSalaryController@allstat');
Route::post('budget/salary/stat/salesplan', 'BudgetSalaryController@getUsersSalesPlans'); // планы продаж
Route::post('budget/salary/stat/salesplan/update', 'BudgetSalaryController@updateUsersSalesPlans');
Route::get('budget/salary/stat/export', 'BudgetSalaryController@export');
Route::get('budget/salary/stat/operations/{id}', 'BudgetSalaryController@userSalaryOperations');
Route::get('budget/salary/stat/operations', 'BudgetSalaryController@salaryOperations');
          // заявки
Route::get('budget/salary/costsrequests/all', 'BudgetSalaryController@salaryCR'); // все
Route::get('budget/salary/costsrequests', function() {return Redirect::to('budget/salary/costsrequests/all');});
Route::get('budget/salary/costsrequests/sign', 'BudgetSalaryController@signSalaryCR');
Route::get('budget/salary/costsrequests/new', 'BudgetSalaryController@newSalaryCR');
Route::get('budget/salary/costsrequests/agreed', 'BudgetSalaryController@agreedSalaryCR');
Route::get('budget/salary/costsrequests/rejected', 'BudgetSalaryController@rejectedSalaryCR');
Route::get('budget/salary/costsrequests/paid', 'BudgetSalaryController@paidSalaryCR'); // оплаченные
Route::get('budget/salary/costsrequests/my', 'BudgetSalaryController@mySalaryCR');
Route::get('budget/salary/costsrequests/mysign', 'BudgetSalaryController@mySignSalaryCR');
Route::get('budget/salary/costsrequests/pattern', 'BudgetSalaryController@salaryPatterns'); // Шаблоны заявок
Route::get('budget/salary/costsrequests/search', 'BudgetSalaryController@salaryCRSearch');
          // настройки - пользователи
Route::get('budget/salary/users', 'BudgetSalaryUsersController@index');
Route::get('budget/salary/users/all', 'BudgetSalaryUsersController@all');
Route::get('budget/salary/users/edit', 'BudgetSalaryUsersController@edit');
Route::get('budget/salary/users/edit_projects/{id}', 'BudgetSalaryUsersController@editProjects');
Route::post('budget/salary/users/update', 'BudgetSalaryUsersController@update');
Route::post('budget/salary/users/update_projects', 'BudgetSalaryUsersController@updateProjects');
          // настройки - регистрация
Route::get('budget/salary/registration', 'BudgetSalaryUsersController@registrationIndex');

Route::post('budget/getoperationdebt', 'BudgetController@getOperationDebt');
Route::post('budget/getdualoperationdebt', 'BudgetController@getDualOperationDebt');
Route::post('budget/updateoperationdebt', 'BudgetController@updateOperationDebt');
Route::get('budget/showclosemonth', 'BudgetController@showCloseMonth');
Route::post('budget/closemonth', 'BudgetController@closeMonth');
Route::get('budget/upload', 'BudgetUploadController@index');
Route::post('budget/upload/uploadfile', 'BudgetUploadController@uploadFile');
Route::get('budget/robokassa/upload', 'BudgetUploadController@robokassa');
Route::post('budget/robokassa/upload/uploadfile', 'BudgetUploadController@robokassaUploadFile');
Route::post('budget/delete', 'BudgetUploadController@delete');
Route::post('budget/restore', 'BudgetUploadController@restore');
Route::post('budget/accounts/{id}/destroy', 'BudgetAccountsController@destroy')->where('id', '[0-9]+');
Route::resource('budget/accounts', 'BudgetAccountsController', array('except' => array('show', 'destroy')));
Route::post('budget/cost_group/{id}/destroy', 'BudgetCostGroupController@destroy')->where('id', '[0-9]+');
Route::resource('budget/cost_group', 'BudgetCostGroupController', array('except' => array('show', 'destroy')));
Route::post('budget/costs/{id}/destroy', 'BudgetCostsController@destroy')->where('id', '[0-9]+');
Route::resource('budget/costs', 'BudgetCostsController', array('except' => array('show', 'destroy')));
Route::resource('budget/partners', 'BudgetPartnersController', array('except' => array('show')));
Route::resource('budget/debtpartners', 'BudgetDebtPartnersController', array('except' => array('show')));
Route::get('budget/totalcostexport/{endDate?}', 'BudgetController@totalCostExport');
Route::get('budget/totalarchivecostexport/{startDate?}/{endDate?}', 'BudgetController@totalArchiveCostExport');
Route::get('budget/{id}/costexport/{endDate?}', 'BudgetController@costExport')->where('projectId', '[0-9]+');
Route::get('budget/{id}/ddsreport/{endDate?}', 'BudgetController@ddsReport')->where('projectId', '[0-9]+');
Route::get('budget/{projectId}/{partnerId?}{limBegin?}{count?}', 'BudgetController@showDebtPartnersOperations')->where('projectId', '[0-9]+');

//загрузка акта сверки сдек
Route::get('cdek/upload', 'CdekUploadController@index');
Route::post('cdek/upload/uploadfile', 'CdekUploadController@uploadFile');

//зарплата
Route::get('salary', 'SalaryController@index');
Route::get('salary/control', 'SalaryController@control');
Route::post('salary/control/cancel', 'SalaryController@cancel');
Route::post('salary/control/restore', 'SalaryController@restore');

//проверка звонков
Route::get('checkcalls', 'CheckcallsController@index');
Route::get('checkcalls/admin', 'CheckcallsController@admin');
Route::post('checkcalls/update/{id}', 'CheckcallsController@update')->where('checkcallId', '[0-9]+');
Route::post('checkcalls/delete/{id}', 'CheckcallsController@delete')->where('checkcallId', '[0-9]+');

//API
Route::any('api', 'ApiController@api');
Route::any('papi', 'ApiController@papi');
Route::any('papi/leadorder', 'ApiController@papiLeadOrder');
Route::any('papi/leadpay', 'ApiController@papiLeadPay');
Route::any('papi/robokassapay', 'ApiController@robokassaPay');
Route::any('papi/budgetpay', 'ApiController@budgetPay');
Route::any('papi/getincomingsum', 'ApiController@getIncomingSum');
Route::any('papi/createparther', 'ApiController@createParther');
Route::get('js/abtest/{id}.js', 'ApiController@abtest')->where('siteId', '[0-9]+');
Route::get('js/abtest/{id}', 'ApiController@abtest')->where('siteId', '[0-9]+');

//Проекты, сайты, продукты, контрольные проверки
Route::resource('projects', 'ProjectsController', array('except' => array('show')));
Route::resource('projects/{projectId}/sites', 'SitesController', array('except' => array('show')));
Route::post('projects/{projectId}/products/{id}/getcode', 'SitesController@getCode');
Route::resource('projects/{projectId}/products', 'ProductsController', array('except' => array('show')));
Route::resource('projects/{projectId}/rejects', 'RejectsController', array('except' => array('show')));
Route::resource('projects/{projectId}/checkquestions', 'CheckquestionsController', array('except' => array('show')));

//Задачи пользователям
Route::resource('usertasks', 'UsertasksController', array('except' => array('show')));
Route::get('mytasks', 'UsertasksController@myTasks');
Route::post('mytasks/update/{id}', 'UsertasksController@updateTask')->where('usertaskId', '[0-9]+');

//Настройки
Route::get('settings', 'SettingsController@index');
Route::post('settings/upload/cdekcacheondelivery', 'SettingsController@uploadCdekCacheOnDelivery');

// Group Routes
//Route::resource('groups', 'GroupController');

Route::get('/', array('as' => 'home', 'uses' => 'HomeController@index'));
Route::get('startworkday', 'HomeController@showStartWorkDay');
Route::post('startworkday', 'HomeController@startWorkDay');

App::missing(function($exception) {
	return Response::view('error404', array(), 404);
});
App::before(function($request)
{
    Online::updateCurrent();
});
use Illuminate\Database\Eloquent\ModelNotFoundException;

App::error(function (ModelNotFoundException $e) {
	return Response::view('error404', array(), 404);
});