Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 49.50 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Http\Controllers;
  4.  
  5. use Illuminate\Http\Request;
  6. use App\Vimage;
  7. use Image;
  8. use App\Vehicle;
  9. use App\Inventory;
  10. use DB;
  11. use App\Setting;
  12. use App\ntas\ToolBox;
  13. use App\Role;
  14. use App\User;
  15. use \App\ntas\vin_decode\iDecode;
  16.  
  17. use Illuminate\Support\Facades\Storage;
  18.  
  19. class AjaxController extends Controller {
  20.  
  21. /***********************************************************************************************************************************************************
  22. *
  23. ***********************************************************************************************************************************************************/
  24.  
  25. private $imgWidth = 1024;
  26. private $imgHeight = 1024 *.75;
  27. private $origImgWidth = 2048;
  28. private $config = null;
  29.  
  30. private $vehicleThumbnailPath = null;
  31. private $vehicleOriginalPath = null;
  32.  
  33. /***********************************************************************************************************************************************************
  34. * __construct
  35. ***********************************************************************************************************************************************************/
  36.  
  37. public function __construct() {
  38. parent::__construct();
  39.  
  40. ToolBox::Trace(sprintf('[AC00038] (BEGIN) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  41. ToolBox::Trace(sprintf('[AC00039]--- ToolBox::Config: %s', json_encode(ToolBox::Config() )));
  42.  
  43. $this->vehicleThumbnailPath = null;
  44. $this->vehicleOriginalPath = null;
  45. if( null !== ToolBox::Config() ) {
  46. $this->vehicleThumbnailPath = public_path( ToolBox::Config()->vehicleThumbnailPath );
  47. $this->vehicleOriginalPath = storage_path( ToolBox::Config()->vehicleOriginalPath );
  48.  
  49. ToolBox::Trace(sprintf('[AC00047]--- vehicleThumbnailPath: %s', $this->vehicleThumbnailPath));
  50. ToolBox::Trace(sprintf('[AC00048]--- vehicleOriginalPath : %s', $this->vehicleOriginalPath));
  51.  
  52. } else {
  53. ToolBox::Trace(sprintf('[AC00051]--- ToolBox::Config is null.'));
  54. }
  55.  
  56. ToolBox::Trace(sprintf('[AC00054] (END) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  57. }
  58.  
  59. /***********************************************************************************************************************************************************
  60. * vehicleThumbnailPath
  61. ***********************************************************************************************************************************************************/
  62.  
  63. public function vehicleThumbnailPath() {
  64. ToolBox::Trace(sprintf('[AC00062] (BEGIN) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  65.  
  66. // if( null === $this->vehicleThumbnailPath && null !== ToolBox::Config() ) {
  67. if( null === $this->vehicleThumbnailPath ) {
  68. // $this->vehicleThumbnailPath = public_path( ToolBox::Config()->vehicleThumbnailPath );
  69. ToolBox::Trace(sprintf('[AC00066]--- vehicleThumbnailPath: %s', $this->vehicleThumbnailPath));
  70. // return $this->vehicleThumbnailPath;
  71. $this->vehicleThumbnailPath = public_path('images/vehicles');
  72. } else {
  73. // if( null === $this->vehicleThumbnailPath ) {
  74. // ToolBox::Trace(sprintf('[AC00076]--- vehicleThumbnailPath is null.'));
  75. // }
  76. //
  77. // if( null === ToolBox::Config() ) {
  78. // ToolBox::Trace(sprintf('[AC00081]--- Config is null.'));
  79. // }
  80. }
  81.  
  82. ToolBox::Trace(sprintf('[AC00078]--- returning: %s', $this->vehicleThumbnailPath));
  83. ToolBox::Trace(sprintf('[AC00079] (END) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  84. return( $this->vehicleThumbnailPath );
  85. }
  86.  
  87. /***********************************************************************************************************************************************************
  88. * vehicleOriginalPath
  89. ***********************************************************************************************************************************************************/
  90.  
  91. public function vehicleOriginalPath() {
  92. ToolBox::Trace(sprintf('[AC00087] (BEGIN) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  93.  
  94. if( trim($this->vehicleOriginalPath) === '' ) {
  95. // if( null !== ToolBox::Config() ) {
  96. //
  97. // $this->vehicleOriginalPath = storage_path( ToolBox::Config()->vehicleOriginalPath );
  98. // ToolBox::Trace(sprintf('[AC00094]--- returning value : %s', $this->vehicleOriginalPath));
  99. // } else {
  100. // ToolBox::Trace(sprintf('[AC00096]--- config is empty...'));
  101. // }
  102. $this->vehicleOriginalPath = storage_path('images/vehicles/original');
  103. } else {
  104. ToolBox::Trace(sprintf('[AC00099]--- vehicleOriginalPath not empty: %s', $this->vehicleOriginalPath));
  105. }
  106.  
  107. ToolBox::Trace(sprintf('[AC00102] (END) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  108. return( $this->vehicleOriginalPath );
  109. }
  110.  
  111. /***********************************************************************************************************************************************************
  112. * overlayUpload
  113. ***********************************************************************************************************************************************************/
  114.  
  115. public function overlayUpload(Request $request) {
  116. ToolBox::Trace(sprintf('[AC00114] (BEGIN) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  117. $image = null;
  118. $which_overlay = '';
  119. $name = '';
  120. $data['files'] = array();
  121.  
  122. if( $request->hasFile('primary_overlay_up') ) {
  123. $image = $request->file('primary_overlay_up');
  124. $which_overlay = 'primary_overlay';
  125. } else if( $request->hasFile('secondary_overlay_up') ) {
  126. $image = $request->file('secondary_overlay_up');
  127. $which_overlay = 'secondary_overlay';
  128. } else if( $request->hasFile('certified_overlay_up') ) {
  129. $image = $request->file('certified_overlay_up');
  130. $which_overlay = 'certified_overlay';
  131. }
  132.  
  133. $name = sprintf("%s_%s.%s",
  134. ToolBox::User()->dealers()->first()->cpin,
  135. md5_file( $image->getRealPath() ),
  136. $image->getClientOriginalExtension()
  137. );
  138.  
  139. ToolBox::Trace(sprintf("[AC00137]--- image overlay name: %s", $name));
  140.  
  141. $orgimg = Image::make(
  142. $image
  143. )->save(
  144. storage_path('images/overlays') . '/' . $name
  145. );
  146.  
  147. array_push($data['files'], [
  148. 'url' => $orgimg->basename,
  149. 'src' => $which_overlay
  150. ]);
  151.  
  152. ToolBox::Trace(sprintf('[AC00145] (END) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  153. return response()->json($data);
  154. }
  155.  
  156. /***********************************************************************************************************************************************************
  157. * vehicleUpload
  158. ***********************************************************************************************************************************************************/
  159.  
  160. public function vehicleUpload(Request $request) {
  161. // dd($request);
  162. $rtn['files'] = array();
  163. $rtn['error'] = null;
  164. $baseFileName = strtolower(str_replace(
  165. ' ',
  166. '_',
  167. (
  168. trim($request->year) . '-' .
  169. trim($request->make) . '-' .
  170. trim( str_replace('-', '_', $request->model) ) . '-' .
  171. trim($request->cpin) . '-' .
  172. trim($request->stock_number)
  173. )
  174. ));
  175.  
  176. $this->checkImagePaths();
  177. if( $request->hasFile('uploadedImage') ) {
  178. foreach( $request->file('uploadedImage') as $image ) {
  179. $hash = hash('joaat', md5_file( $image->getRealPath() ) );
  180. ToolBox::Trace(sprintf('[AC00177]--- hash: %s', $hash ));
  181.  
  182. // $filename = strtolower($baseFileName . '-' . $hash . '.' . $image->getClientOriginalExtension());
  183. $filename = strtolower($baseFileName . '-' . $hash . '.jpg');
  184. $location = $this->vehicleThumbnailPath . '/' . $filename;
  185. $original = $this->vehicleOriginalPath . '/' . $filename;
  186.  
  187. // http://image.intervention.io/ (documentation)
  188. // create & save the original file
  189. $orgimg = Image::make(
  190. $image
  191. )->resize(
  192. $this->origImgWidth,
  193. null,
  194. function($constraint) {
  195. $constraint->upsize();
  196. $constraint->aspectRatio();
  197. }
  198. )->save(
  199. $original
  200. );
  201.  
  202. $newimg = Image::canvas(
  203. $this->imgWidth,
  204. $this->imgHeight,
  205. '#ffffff'
  206. )->insert(
  207. Image::make(
  208. $orgimg
  209. )->resize(
  210. $this->imgWidth,
  211. null,
  212. function($constraint) {
  213. $constraint->upsize();
  214. $constraint->aspectRatio();
  215. }
  216. )->sharpen(
  217. 5
  218. ),
  219. 'top'
  220. )->save(
  221. $location
  222. );
  223.  
  224. array_push($rtn['files'], ['url' => $newimg->basename]);
  225. }
  226.  
  227. return response()->json($rtn);
  228.  
  229. } else {
  230.  
  231. $rtn['error'] = 'unknown image error';
  232. return response()->json($rtn);
  233.  
  234. }
  235.  
  236. }
  237.  
  238. /***********************************************************************************************************************************************************
  239. * VehicleDeleteImage
  240. ***********************************************************************************************************************************************************/
  241.  
  242. public function VehicleDestroyImage(Request $request) {
  243.  
  244. $image = Vimage::where('name', '=', $request->name)->first();
  245.  
  246. if( $image !== null ) {
  247. // Storage::delete(public_path($image->name));
  248. // $image->delete();
  249. // Hard Delete
  250. }
  251.  
  252. return response()->json(true);
  253.  
  254. }
  255.  
  256. public function VehicleDeleteImage(Request $request) {
  257.  
  258. $image = Vimage::where('name', '=', $request->name)->first();
  259.  
  260. if( $image !== null ) {
  261. $image->isDeleted = true;
  262. $image->save();
  263. }
  264.  
  265. return response()->json(true);
  266.  
  267. }
  268.  
  269. /***********************************************************************************************************************************************************
  270. *
  271. ***********************************************************************************************************************************************************/
  272.  
  273. public function VehicleUndeleteImage(Request $request) {
  274. $image = Vimage::where('name', '=', $request->name)->first();
  275.  
  276. if( $image !== null ) {
  277. $image->isDeleted = false;
  278. $image->save();
  279. }
  280.  
  281. return response()->json(true);
  282. }
  283.  
  284. /***********************************************************************************************************************************************************
  285. *
  286. ***********************************************************************************************************************************************************/
  287.  
  288. public function checkImagePaths() {
  289. ToolBox::Trace(sprintf('[AC00264] (BEGIN) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  290.  
  291. // make sure the public vehicles image folder exists
  292. if( !file_exists( $this->vehicleThumbnailPath() ) ) {
  293. try {
  294. ToolBox::Trace(sprintf('[AC00272]--- vehicleThumbnailPath: %s', $this->vehicleThumbnailPath() ));
  295. if( !empty($this->vehicleThumbnailPath()) ) {
  296. mkdir( $this->vehicleThumbnailPath() );
  297. } else {
  298. ToolBox::Trace(sprintf('[AC00274]--- mkdir::vehicleThumbnailPath FAILED'));
  299. }
  300. } catch(Exception $e) {
  301. ToolBox::Trace(sprintf('[AC00275]--- vehicleThumbnailPath Exception: %s', $e->getMessage() ));
  302. return( false );
  303. }
  304. }
  305.  
  306. // make sure the original vehicle image folder exists
  307.  
  308. if( !file_exists( $this->vehicleOriginalPath() ) && $this->vehicleOriginalPath() !== '' ) {
  309. try {
  310. if( !empty($this->vehicleOriginalPath()) ) {
  311. mkdir( $this->vehicleOriginalPath(), 0777, true );
  312. } else {
  313. ToolBox::Trace(sprintf('[AC00289]--- mkdir::vehicleOriginalPath FAILED'));
  314. }
  315. } catch(Exception $e) {
  316. return( false );
  317. }
  318. }
  319.  
  320. ToolBox::Trace(sprintf('[AC00287] (END) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  321. return( true );
  322.  
  323. }
  324.  
  325. /***********************************************************************************************************************************************************
  326. * updateField
  327. ***********************************************************************************************************************************************************/
  328.  
  329. public function updateField(Request $request) {
  330.  
  331. $vin = $request->input('vin');
  332.  
  333. $inventory = null;
  334. $vehicle = Vehicle::where('vin', '=', $vin)->first();
  335. $field = $request->input('field');
  336. $value = $request->input('value');
  337.  
  338. if( strtolower(trim($field)) == 'vehicle_type' ) {
  339. $inventory = Inventory::where('vehicle_id', '=', $vehicle->id)->first();
  340. $inventory->{$field} = $value;
  341. $inventory->save();
  342. } else {
  343. // $vehicle = Vehicle::where('vin', '=', $request->input('vin'))->first();
  344. $vehicle->{$field} = $value;
  345. $vehicle->save();
  346. }
  347.  
  348. }
  349.  
  350. /***********************************************************************************************************************************************************
  351. * updatePricing
  352. ***********************************************************************************************************************************************************/
  353.  
  354. public function updatePricing(Request $request) {
  355. $success = false;
  356. $iid = $request->input('iid');
  357. $field = null;
  358. $value = $request->input('value');
  359.  
  360. switch( strtolower($request->input('field')) ) {
  361. case 'cost' :
  362. $field = 'cost';
  363. break;
  364. case 'msrp' :
  365. $field = 'msrp';
  366. break;
  367. case 'list_price' :
  368. $field = 'list_price';
  369. break;
  370. case 'retail_price' :
  371. $field = 'retail_price';
  372. break;
  373. case 'internet_price' :
  374. $field = 'internet_price';
  375. break;
  376. }
  377.  
  378. if( null !== $field && is_numeric($iid) && (empty($value) || is_numeric($value)) ) {
  379. $inv = Inventory::where('id', '=', $iid)->first();
  380. if( $field === 'msrp' ) {
  381. $v = Vehicle::where('id', '=', $inv->vehicle_id)->first();
  382. $v->{$field} = $value;
  383. $v->save();
  384. $success = true;
  385. } else if( !empty($field) ) {
  386. $inv->{$field} = $value;
  387. $inv->save();
  388. $success = true;
  389. }
  390. }
  391.  
  392. return response()->json($success);
  393. }
  394.  
  395. /***********************************************************************************************************************************************************
  396. * roleToggle
  397. ***********************************************************************************************************************************************************/
  398.  
  399. public function roleToggle(Request $request) {
  400. ToolBox::Trace( sprintf('AjaxController.php::roleToggle: [%s]', json_encode($request->input()) ) );
  401. $user = User::where('id', '=', $request->input('id'))->first();
  402. if( $request->input('value') === "true" ) {
  403. ToolBox::Trace( sprintf('--Attaching') );
  404. $user->roles()->attach( Role::where('name', '=', $request->input('role'))->first() );
  405. } else {
  406. // $user = \App\User::where('id', '=', $request->input('id'))->first();
  407. ToolBox::Trace( sprintf('--detatching') );
  408. $user->roles()->detach( Role::where('name', '=', $request->input('role'))->first() );
  409. }
  410. }
  411.  
  412. /***********************************************************************************************************************************************************
  413. * userDeleteToggle
  414. ***********************************************************************************************************************************************************/
  415.  
  416. public function userDeleteToggle(Request $request) {
  417. $user = \App\User::where('id', '=', $request->input('id'))->first();
  418. if( $request->input('value') === "true" ) {
  419. $user->is_deleted = true;
  420. $user->is_active = false;
  421. $user->save();
  422. } else {
  423. $user->is_deleted = false;
  424. $user->is_active = true;
  425. $user->save();
  426. }
  427.  
  428. return response()->json(true);
  429. }
  430.  
  431. /***********************************************************************************************************************************************************
  432. * userActiveToggle
  433. ***********************************************************************************************************************************************************/
  434.  
  435. public function userActiveToggle(Request $request) {
  436. $user = \App\User::where('id', '=', $request->input('id'))->first();
  437. if( $request->input('value') === "true" ) {
  438. $user->is_active = true;
  439. $user->save();
  440. } else {
  441. $user->is_active = false;
  442. $user->save();
  443. }
  444. }
  445.  
  446. /***********************************************************************************************************************************************************
  447. * addNewUser
  448. ***********************************************************************************************************************************************************/
  449.  
  450. public function addNewUser(Request $request) {
  451. ToolBox::Trace('AjaxController.php::addNewUser: (begin)');
  452.  
  453. // dd( $request->input() );
  454. $roles = [];
  455. $pwd = null !== $request->input('pwd') ? $request->input('pwd') : str_random(12);
  456. $user = \App\User::where( 'email', '=', $request->input('email') )->first();
  457.  
  458. ToolBox::Trace(
  459. sprintf(
  460. 'AjaxController.php::addNewUser: id=[%s], pwd=[%s]',
  461. $request->input('email'),
  462. $pwd
  463. )
  464. );
  465.  
  466. if( $user === null ) {
  467. $user = new \App\User;
  468. }
  469.  
  470. $user->first_name = $request->input('fname');
  471. $user->last_name = $request->input('lname');
  472. $user->name = sprintf("%s %s", $request->input('fname'), $request->input('lname') );
  473. $user->email = $request->input('email');
  474. $user->password = bcrypt( $pwd );
  475. // $user->password = $request->input('pwd');
  476. $user->force_password_change = true;
  477. // $user->dealer_id = \Auth::user()->dealer_id;
  478. $user->api_token = str_random(128);
  479. $user->save();
  480.  
  481. // $user->dealers()->attach( ToolBox::User()->dealer_id );
  482.  
  483. $role_admin = Role::where('name', 'admin')->first();
  484. $role_salesperson = Role::where('name', 'salesperson')->first();
  485. $role_ntas = Role::where('name', 'ntas')->first();
  486. $role_inventory_manager = Role::where('name', 'inventory_manager')->first();
  487. $role_customer = Role::where('name', 'customer')->first();
  488.  
  489. if( strtolower($request->input('admin')) === "true" ) {
  490. array_push($roles, $role_admin->id);
  491. }
  492.  
  493. if( strtolower($request->input('salesperson')) === "true" ) {
  494. array_push($roles, $role_salesperson->id );
  495. }
  496.  
  497. if( strtolower($request->input('inventorymanager')) === "true" ) {
  498. array_push($roles, $role_inventory_manager->id );
  499. }
  500.  
  501. $user->roles()->attach($roles);
  502.  
  503. ToolBox::Trace('AjaxController.php::addNewUser: (end)');
  504. return $user->toJson();
  505.  
  506. }
  507.  
  508. /***********************************************************************************************************************************************************
  509. * getVehicleValueByVin
  510. ***********************************************************************************************************************************************************/
  511.  
  512. public function getVehicleValueByVin(Request $request) {
  513. $nada = new \App\ntas\nada;
  514. $results = null;
  515.  
  516. \App\ntas\ToolBox::Trace(sprintf('ToolBox.php::getVehicleValueByVin: Input=[ %s ]', json_encode($request->input()) ) );
  517.  
  518. try {
  519. $results = $nada->getValueByVin(
  520. array(
  521. 'vin' => $request->input('vin'),
  522. 'mileage' => $request->input('mileage')
  523. )
  524. );
  525.  
  526. \App\ntas\ToolBox::Trace(sprintf('ToolBox.php::getVehicleValueByVin: results=[ %s ]', json_encode($results) ) );
  527.  
  528. return json_encode($results);
  529. } catch(Exception $ex) {
  530. \App\ntas\ToolBox::Trace(sprintf('ToolBox.php::getVehicleValueByVin: fail=[ %s ]', json_encode($ex) ) );
  531. return null;
  532. }
  533. } // end getVehicleValueByVin
  534.  
  535. /***********************************************************************************************************************************************************
  536. * getNadaAccessories
  537. ***********************************************************************************************************************************************************/
  538.  
  539. public function getNadaAccessories(Request $request) {
  540. $nada = new \App\ntas\nada;
  541. $results = null;
  542.  
  543. try {
  544. $results = $nada->getAccessories(
  545. array(
  546. 'vin' => $request->input('vin'),
  547. 'period' => 0,
  548. 'vehicletype' => 'UsedCar',
  549. 'uid' => $request->input('uid'),
  550. 'region' => 5
  551. )
  552. );
  553.  
  554. return json_encode($results);
  555. } catch(Exception $ex) {
  556. return null;
  557. }
  558. } // end getAccessories
  559.  
  560. /***********************************************************************************************************************************************************
  561. * putNadaAccessory
  562. ***********************************************************************************************************************************************************/
  563.  
  564. public function putNadaAccessory(Request $request) {
  565. $option = new \App\Option;
  566. }
  567.  
  568. /***********************************************************************************************************************************************************
  569. * setDealerId
  570. ***********************************************************************************************************************************************************/
  571.  
  572. public function setDealerId(Request $request) {
  573.  
  574. ToolBox::Trace( sprintf('AjaxController::setDealerId: begin (%s)', json_encode($request->input() )) );
  575.  
  576. if( null !== $request->input('dealer_id') ) {
  577. session( ['dealer_id' => $request->input('dealer_id') ] );
  578.  
  579. if( \Auth::user() ) {
  580. \Auth::user()->dealer_id = $request->input('dealer_id');
  581. \Auth::user()->save();
  582. }
  583.  
  584. return response()->json(true);
  585. }
  586.  
  587. return response()->json(false);
  588. }
  589.  
  590. /***********************************************************************************************************************************************************
  591. * removeDealerId
  592. ***********************************************************************************************************************************************************/
  593.  
  594. public function removeDealerId(Request $request) {
  595. \App\ntas\ToolBox::forgetSession('dealer_id');
  596. return response()->json(true);
  597. }
  598.  
  599. /***********************************************************************************************************************************************************
  600. * getTemplate
  601. ***********************************************************************************************************************************************************/
  602.  
  603. public function getTemplate(Request $request) {
  604. ToolBox::Trace(sprintf('[AC00577] (BEGIN) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  605. ToolBox::Trace(sprintf('[AC00578]--- $request->input(): %s', json_encode($request->input())));
  606.  
  607. if( $request->input('template') ) {
  608. $dgroups = null;
  609. $dealersArray = null;
  610.  
  611. switch( $request->input('template') ) {
  612. case 'hbjs_linkdealertogroup_tpl':
  613. case 'hbjs_adddealer_tpl':
  614. $dgroups[0] = '';
  615. foreach( \App\dgroup::where('is_active', '=', 1)->where('is_deleted', '=', 0)->orderBy('name')->select('id', 'name')->get() as $row ) {
  616. $dgroups[$row->id] = $row->name;
  617. }
  618. break;
  619. case 'hbjs_linkusertodealer_tpl':
  620. case 'hbjs_linkgrouptodealer_tpl':
  621. $dealersArray[0] = '';
  622. foreach( \App\Dealer::where('is_active', '=', '1')->where('is_deleted', '=', 0)->orderBy('name')->get() as $row ) {
  623. $dealersArray[$row->id] = $row->name;
  624. }
  625. break;
  626. }
  627.  
  628. // dd('params', $request->input('params') );
  629.  
  630. return response(
  631. view(
  632. sprintf(
  633. // 'themes.%s.shared.%s',
  634. // ToolBox::Config()->theme,
  635. 'shared.%s',
  636. $request->input('template')
  637. )
  638. )->with(
  639. 'dgroups',
  640. $dgroups
  641. )->with(
  642. 'dealersarray',
  643. $dealersArray
  644. )->with(
  645. 'params',
  646. $request->input('params')
  647. )->render()
  648. );
  649. }
  650.  
  651. ToolBox::Trace(sprintf('[AC00622] (END) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  652. return response()->json(null);
  653. }
  654.  
  655. /***********************************************************************************************************************************************************
  656. * checkUserExists
  657. ***********************************************************************************************************************************************************/
  658.  
  659. public function checkUserExists(Request $request) {
  660. $email = $request->input('email');
  661.  
  662. $user = \App\User::where('email', '=', trim($email) )->first();
  663.  
  664. if( null !== $user ) {
  665. return response()->json([
  666. 'status' => true,
  667. 'user' => [
  668. 'id' => $user->id,
  669. 'first_name' => $user->first_name,
  670. 'last_name' => $user->last_name,
  671. 'email' => $user->email,
  672. 'phone' => $user->phone,
  673. 'fax' => $user->fax
  674. ]
  675. ]);
  676. } else {
  677. return response()->json([
  678. 'status' => false
  679. ]);
  680. }
  681. }
  682.  
  683. /***********************************************************************************************************************************************************
  684. * newDealerGroup
  685. ***********************************************************************************************************************************************************/
  686.  
  687. public function newDealerGroup(Request $request) {
  688. ToolBox::Trace(sprintf('[AC00646] (BEGIN) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  689. ToolBox::Trace(sprintf('[AC00647]--- $request: %s', json_encode( $request->input() ) ));
  690.  
  691. $incomingGroup = $request->input('group');
  692. $incomingUser = $request->input('user');
  693. $group = null;
  694. $user = null;
  695.  
  696. $group = new \App\dgroup;
  697. $group->name = $incomingGroup['name'];
  698. $group->address_1 = $incomingGroup['address1'];
  699. $group->address_2 = $incomingGroup['address2'];
  700. $group->city = $incomingGroup['city'];
  701. $group->state = $incomingGroup['state'];
  702. $group->zip = $incomingGroup['zip'];
  703. $group->phone = $incomingGroup['phone'];
  704. $group->fax = $incomingGroup['fax'];
  705. $group->email = $incomingGroup['email'];
  706. $group->website = $incomingGroup['website'];
  707. $group->save();
  708.  
  709. if( isset($incomingUser['email']) ) {
  710. $user = \App\User::where('email', '=', $incomingUser['email'])->first();
  711.  
  712. if( null === $user ) {
  713. $user = new \App\User;
  714. $user->first_name = $incomingUser['first_name'];
  715. $user->last_name = $incomingUser['last_name'];
  716. $user->name = sprintf("%s %s", trim($incomingUser['first_name']), trim($incomingUser['last_name']));
  717. $user->email = $incomingUser['email'];
  718. $user->phone = $incomingUser['phone'];
  719. $user->fax = $incomingUser['fax'];
  720. $user->password = bcrypt("ChangeMeN0w");
  721. // $user->password = "ChangeMeN0w";
  722. $user->force_password_change = true;
  723. $user->api_token = str_random(128);
  724. $user->save();
  725. }
  726.  
  727. $user->roles()->attach( \App\Role::where('name', 'admin')->first() );
  728. $user->group_id = $group->id;
  729. $user->save();
  730.  
  731. }
  732.  
  733. return response()->json(true);
  734. }
  735.  
  736. /***********************************************************************************************************************************************************
  737. * linkg (link dealer to dealer group)
  738. ***********************************************************************************************************************************************************/
  739.  
  740. public function linkg(Request $request) {
  741. $group_id = null !== $request->input('group_id') ? $request->input('group_id') : null;
  742. $dealer_id = null !== $request->input('dealer_id')? $request->input('dealer_id') : null;
  743. $rtnFlag = false;
  744.  
  745. \App\ntas\ToolBox::Trace(
  746. sprintf("AjaxController.php::linkg: [(%s) = (%s)], [(%s) = (%s)]",
  747. "group_id",
  748. $group_id,
  749. "dealer_id",
  750. $dealer_id
  751. )
  752. );
  753.  
  754. $dealer = \App\Dealer::where('id', '=', $dealer_id)->first();
  755.  
  756. if( null !== $dealer ) {
  757. $dealer->dgroup_id = (int) $group_id;
  758. $dealer->save();
  759. $dealer->group()->attach($group_id);
  760. $rtnFlag = true;
  761. }
  762.  
  763. return response()->json($rtnFlag);
  764. }
  765.  
  766. /***********************************************************************************************************************************************************
  767. * unlinkg (unlink dealer from dealer group)
  768. ***********************************************************************************************************************************************************/
  769.  
  770. public function unlinkg(Request $request) {
  771. $group_id = null !== $request->input('group_id') ? $request->input('group_id') : null;
  772. $dealer_id = null !== $request->input('dealer_id')? $request->input('dealer_id') : null;
  773. $rtnFlag = false;
  774.  
  775. $dealer = \App\Dealer::where('id', '=', $dealer_id)->first();
  776.  
  777. if( null !== $dealer ) {
  778. $dealer->dgroup_id = -1;
  779. $dealer->save();
  780. $dealer->group()->detach($group_id);
  781. $rtnFlag = true;
  782. }
  783.  
  784. return response()->json($rtnFlag);
  785. }
  786.  
  787. /***********************************************************************************************************************************************************
  788. * linkd (link dealer to dealer)
  789. ***********************************************************************************************************************************************************/
  790.  
  791. public function linkd(Request $request) {
  792. $group_id = null !== $request->input('group_id') ? $request->input('group_id') : null;
  793. $dealer_id = null !== $request->input('dealer_id')? $request->input('dealer_id') : null;
  794. $group = null;
  795. $rtnFlag = false;
  796.  
  797. \App\ntas\ToolBox::Trace(
  798. sprintf("AjaxController.php::linkd: [(%s) = (%s)], [(%s) = (%s)]",
  799. "group_id",
  800. $group_id,
  801. "dealer_id",
  802. $dealer_id
  803. )
  804. );
  805.  
  806. if( isset($group_id) ) {
  807. $group = \App\dgroup::where('id', '=', $group_id)->first();
  808. }
  809.  
  810. if( null !== $group ) {
  811. // $group->dealers()->attach($group_id);
  812. $group->dealers()->attach($dealer_id);
  813. $rtnFlag = true;
  814. }
  815.  
  816. return response()->json($rtnFlag);
  817. }
  818.  
  819. /***********************************************************************************************************************************************************
  820. * unlinkd (unlink dealer from dealer group)
  821. ***********************************************************************************************************************************************************/
  822.  
  823. public function unlinkd(Request $request) {
  824. $group_id = null !== $request->input('group_id') ? $request->input('group_id') : null;
  825. $dealer_id = null !== $request->input('dealer_id')? $request->input('dealer_id') : null;
  826.  
  827. $rtnFlag = false;
  828.  
  829. $group = \App\dgroup::where('id', '=', $group_id)->first();
  830.  
  831. // dd( $request->input() );
  832. // dd( $group );
  833. if( null !== $group ) {
  834. $group->dealers()->detach($dealer_id);
  835. $rtnFlag = true;
  836. }
  837.  
  838. return response()->json($rtnFlag);
  839. }
  840.  
  841. /***********************************************************************************************************************************************************
  842. * linku (link user to dealer)
  843. ***********************************************************************************************************************************************************/
  844.  
  845. public function linku(Request $request) {
  846. $user_id = null !== $request->input('user_id') ? $request->input('user_id') : null;
  847. $dealer_id = null !== $request->input('dealer_id')? $request->input('dealer_id') : null;
  848. $group = null;
  849. $rtnFlag = false;
  850.  
  851. \App\ntas\ToolBox::Trace(
  852. sprintf("AjaxController.php::linku: [(%s) = (%s)], [(%s) = (%s)]",
  853. "user_id",
  854. $user_id,
  855. "dealer_id",
  856. $dealer_id
  857. )
  858. );
  859.  
  860. if( isset($user_id) ) {
  861. $user = \App\User::where('id', '=', $user_id)->first();
  862. }
  863.  
  864. if( null !== $user ) {
  865. $user->dealers()->attach($dealer_id);
  866. $rtnFlag = true;
  867. }
  868.  
  869. return response()->json($rtnFlag);
  870. }
  871.  
  872. /***********************************************************************************************************************************************************
  873. * unlinku (unlink user from dealer)
  874. ***********************************************************************************************************************************************************/
  875.  
  876. public function unlinku(Request $request) {
  877. $dealer_id = $request->input('dealer_id');
  878. $user_id = $request->input('user_id');
  879. $rtnFlag = false;
  880.  
  881. $user = \App\User::where('id', '=', $user_id)->first();
  882.  
  883. if( null !== $user ) {
  884. $user->dealers()->detach($dealer_id);
  885. $rtnFlag = true;
  886. }
  887.  
  888. return response()->json($rtnFlag);
  889. }
  890.  
  891. /***********************************************************************************************************************************************************
  892. * addNewDealer
  893. ***********************************************************************************************************************************************************/
  894.  
  895. public function addNewDealer(Request $request) {
  896. ToolBox::Trace(sprintf('[AC00867] (BEGIN) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  897. ToolBox::Trace(sprintf('[AC00868]--- $request->input(): %s', json_encode( $request->input() )));
  898.  
  899. $new_dealer = null !== $request->input('dealer') ? $request->input('dealer') : null;
  900. $incomingUser = null !== $request->input('user') ? $request->input('user') : null;
  901. $dealer = null;
  902. $user = null;
  903.  
  904. ToolBox::Trace(sprintf('[AC00875]--- $new_dealer: %s', json_encode($new_dealer)));
  905. ToolBox::Trace(sprintf('[AC00876]--- $incomingUser: %s', json_encode($incomingUser)));
  906. if( null !== $new_dealer ) {
  907. $new_dealer_settings = array(
  908. 'cpin' => isset($new_dealer['cpin']) ? $new_dealer['cpin'] : null,
  909. 'name' => isset($new_dealer['name']) ? $new_dealer['name'] : null,
  910. 'street_address_1' => isset($new_dealer['address_1']) ? $new_dealer['address_1'] : null,
  911. 'street_address_2' => isset($new_dealer['address_2']) ? $new_dealer['address_2'] : null,
  912. 'city' => isset($new_dealer['city']) ? $new_dealer['city'] : null,
  913. 'state' => isset($new_dealer['state']) ? $new_dealer['state'] : null,
  914. 'zip' => isset($new_dealer['zip']) ? $new_dealer['zip'] : null,
  915. 'phone' => isset($new_dealer['phone']) ? $new_dealer['phone'] : null,
  916. 'fax' => isset($new_dealer['fax']) ? $new_dealer['fax'] : null,
  917. 'email' => isset($new_dealer['email']) ? $new_dealer['email'] : '',
  918. 'website' => isset($new_dealer['website']) ? $new_dealer['website'] : null
  919. );
  920.  
  921. ToolBox::Trace(sprintf('[AC00892]--- $new_dealer_settings: %s', json_encode($new_dealer_settings)));
  922. $dealer = \App\Dealer::where('cpin', '=', $new_dealer['cpin'])->first();
  923.  
  924. if( null === $dealer ) {
  925. $dealer = new \App\Dealer;
  926. }
  927.  
  928. ToolBox::Trace(sprintf('[AC00894]--- back from creating new Dealer.'));
  929. $dealer->Add( $new_dealer_settings );
  930.  
  931. // create dealer settings.
  932. $new_dealer_config = config('dealer.config');
  933. // $new_dealer_config['cpin'] = $new_dealer['cpin'];
  934. $new_dealer_config['primary_overlay'] = isset($new_dealer['primary_overlay']) ? $new_dealer['primary_overlay'] : null;
  935. $new_dealer_config['secondary_overlay'] = isset($new_dealer['secondary_overlay']) ? $new_dealer['secondary_overlay'] : null;
  936. $new_dealer_config['certified_overlay'] = isset($new_dealer['certified_overlay']) ? $new_dealer['certified_overlay'] : null;
  937.  
  938. // $settings = \App\Setting::where('')
  939. $settings = new \App\Setting;
  940. $settings->Add(
  941. array(
  942. 'dealer_id' => $dealer->id,
  943. // 'cpin' => $dealer->cpin,
  944. 'key' => 'config',
  945. 'val' => $new_dealer_config
  946. )
  947. );
  948.  
  949. if( null !== $settings ) {
  950. ToolBox::Trace(sprintf('[AC00913]--- great success.'));
  951. return response()->json(
  952. array(
  953. 'success' => true,
  954. 'message' => '[AC00913] great success!'
  955. )
  956. );
  957. } else {
  958. ToolBox::Trace(sprintf('[AC00920]--- settings variable is null.'));
  959. return response()->json(
  960. array(
  961. 'success' => false,
  962. 'message' => '[AC00920] settings variable is null'
  963. )
  964. );
  965. }
  966.  
  967. } else {
  968. ToolBox::Trace(sprintf('[AC00930]--- $new_dealer is null or missing.'));
  969. return response()->json(
  970. array(
  971. 'success' => false,
  972. 'message' => '[AC00929] missing incoming dealer settings'
  973. )
  974. );
  975. }
  976.  
  977. }
  978.  
  979. /***********************************************************************************************************************************************************
  980. * vinDecode
  981. *
  982. *
  983. *
  984. * $data is expected to be in the following format:
  985. *
  986. * array(
  987. * "vin":"XXXXXXXXXXXXXXXXXX", // The vehicle vin to decode
  988. * "service":"chrome", // Chrome, NADA, etc. (chrome is the only service currently supported)
  989. * "apikey":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" // 64 characters in length
  990. * )
  991. ***********************************************************************************************************************************************************/
  992.  
  993. public function vinDecode(Request $request) {
  994. // ToolBox::Trace(sprintf('[AC00989] (BEGIN) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  995.  
  996. // $site_config = config(sprintf('vin_decode.%s', ToolBox::whichInstall() ));
  997. // ToolBox::Trace(sprintf('[AC01004]--- $site_config: %s', json_encode($site_config) ));
  998.  
  999.  
  1000. $data = $request->input();
  1001. // return($data['vin']);
  1002. // $data['apikey'] = $site_config['vin_decode_api_key'];
  1003.  
  1004.  
  1005. // ToolBox::Trace(sprintf('[AC00975]--- $data : %s', json_encode($data)));
  1006. // $rtnData = ToolBox::CallAPI( 'POST', $site_config['vin_decode_api_url'], $data );
  1007.  
  1008. $url = 'https://test.dealerstart.com/api/vin/v4';
  1009. // VIN to decode
  1010. // $vin = '1HGCR3F80FA015359';
  1011. $fields_string = '';
  1012.  
  1013. $fields = array(
  1014. 'vin' => $data['vin'],
  1015. 'service' => 'chrome',
  1016. 'apikey' => '4da34d1a811c6337797ec2750838dcb938dc783063c1289e71ea1fb964351985'
  1017. );
  1018. //url-ify the data for the POST
  1019. foreach($fields as $key=>$value) {
  1020. $fields_string .= $key.'='.$value.'&';
  1021. }
  1022. rtrim($fields_string, '&');
  1023.  
  1024. //open connection
  1025. $ch = curl_init();
  1026.  
  1027. //set the url, number of POST vars, POST data
  1028. curl_setopt($ch,CURLOPT_URL, $url);
  1029. curl_setopt($ch,CURLOPT_POST, count($fields));
  1030. curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
  1031. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  1032.  
  1033. //execute post
  1034. $result = curl_exec($ch);
  1035.  
  1036. //close connection
  1037. curl_close($ch);
  1038.  
  1039. // return($result);
  1040.  
  1041. // convert JSON result to an array
  1042. $result_array = json_decode($result);
  1043.  
  1044. $vin_explode_results = json_decode($result, true);
  1045.  
  1046. // echo(json_encode($rtnData));
  1047.  
  1048. // ToolBox::Trace(sprintf('[AC01016]--- $vin_explode_results: %s', json_encode($vin_explode_results)));
  1049. if( !empty($vin_explode_results) && $vin_explode_results['success'] ) {
  1050. $vin_explode_results['ntas']['stock_image_name'] = sprintf("%s",
  1051. ToolBox::saveStockImage(
  1052. array(
  1053. 'image_url' => $vin_explode_results['ntas']['stock_image_url'],
  1054. 'image_name' => $vin_explode_results['source']['styles'][0]['stockimage']['filename'],
  1055. 'vin' => $vin_explode_results['ntas']['vin'],
  1056. 'inventory_id' => rand(),
  1057. 'dealer_id' => rand(),
  1058. 'vehicle_id' => rand(),
  1059. 'year' => $vin_explode_results['ntas']['year'],
  1060. 'make' => $vin_explode_results['ntas']['make'],
  1061. 'model' => $vin_explode_results['ntas']['model'],
  1062. 'trim' => $vin_explode_results['ntas']['trim']
  1063. )
  1064. )
  1065. );
  1066.  
  1067. ToolBox::add_task(
  1068. array(
  1069. 'user_id' => (null !== \Auth::user() ? \Auth::user()->id : 0),
  1070. 'type' => 'cd_vin_explode',
  1071. 'data' => $vin_explode_results,
  1072. 'run_at' => date("Y-m-d H:i:s")
  1073. )
  1074. );
  1075.  
  1076. dispatch(
  1077. (new \App\Jobs\ProcessChromeDataJob(
  1078. $vin_explode_results
  1079. ))->delay(
  1080. \Carbon\Carbon::now()->addMinutes(5)
  1081. )->onQueue('import_chromedata')
  1082. );
  1083.  
  1084. }
  1085.  
  1086. // ToolBox::Trace(sprintf('[AC01008]--- $vin_explode_results: %s', json_encode($vin_explode_results)));
  1087. // ToolBox::Trace(sprintf('[AC01024] (END) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  1088. return $vin_explode_results;
  1089.  
  1090. }
  1091.  
  1092. /***********************************************************************************************************************************************************
  1093. * saveStockImage
  1094. ***********************************************************************************************************************************************************/
  1095.  
  1096. public function saveStockImage($params) {
  1097.  
  1098. // if( !isset($params['image_url']) ) { return array('success' => false, 'message' => 'missing field [image_url]'); }
  1099. // if( !isset($params['image_name']) ) { return array('success' => false, 'message' => 'missing field [image_name]'); }
  1100. // if( !isset($params['vin']) ) { return array('success' => false, 'message' => 'missing field [vin]'); }
  1101. // if( !isset($params['inventory_id']) ) { return array('success' => false, 'message' => 'missing field [inventory_id]'); }
  1102. // if( !isset($params['dealer_id']) ) { return array('success' => false, 'message' => 'missing field [dealer_id]'); }
  1103. // if( !isset($params['vehicle_id']) ) { return array('success' => false, 'message' => 'missing field [vehicle_id]'); }
  1104. // if( !isset($params['year']) ) { return array('success' => false, 'message' => 'missing field [year]'); }
  1105. // if( !isset($params['make']) ) { return array('success' => false, 'message' => 'missing field [make]'); }
  1106. // if( !isset($params['model']) ) { return array('success' => false, 'message' => 'missing field [model]'); }
  1107. // if( !isset($params['trim']) ) { return array('success' => false, 'message' => 'missing field [trim]'); }
  1108. //
  1109. // $baseFileName = strtolower(str_replace(
  1110. // ' ',
  1111. // '_',
  1112. // sprintf('%s-%s-%s-%s-%s.png',
  1113. // 'stock',
  1114. // trim($params['year']),
  1115. // trim($params['make']),
  1116. // trim( str_replace('-', '_', $params['model']) ),
  1117. // substr( $params['image_name'], 0, strrpos( $params['image_name'], '.' ) )
  1118. // )
  1119. // ));
  1120. //
  1121. // ToolBox::Trace(sprintf('[AC01115]--- $baseFileName: %s', $baseFileName));
  1122. //
  1123. // if( !file_exists( sprintf('%s/%s', $this->vehicleOriginalPath(), $baseFileName) )) {
  1124. //
  1125. // if( $this->checkImagePaths() ) {
  1126. // $newimg = Image::canvas(
  1127. // 400,
  1128. // 300
  1129. // )->insert(
  1130. // Image::make( $params['image_url'] ),
  1131. // 'center'
  1132. // )->save(
  1133. // sprintf('%s/%s', $this->vehicleOriginalPath(), $baseFileName)
  1134. // );
  1135. // } else {
  1136. // ToolBox::Trace(sprintf('[AC01078]--- checkImagePaths returned null, not copying image from server.'));
  1137. // }
  1138. //
  1139. // }
  1140. //
  1141. // if( !file_exists( sprintf('%s/%s', $this->vehicleThumbnailPath(), $baseFileName) ) ) {
  1142. // ToolBox::Trace(sprintf('[AC01069]--- (begin) copying to public path'));
  1143. // copy(
  1144. // sprintf('%s/%s', $this->vehicleOriginalPath(), $baseFileName),
  1145. // sprintf('%s/%s', $this->vehicleThumbnailPath(), $baseFileName)
  1146. // );
  1147. // ToolBox::Trace(sprintf('[AC01074]--- (end) copying to public path'));
  1148. // }
  1149. //
  1150. // ToolBox::Trace(sprintf('[AC01108] (END) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  1151. // return $baseFileName;
  1152. }
  1153.  
  1154. public function vehicleStatusUpdate(Request $request) {
  1155. ToolBox::Trace(sprintf('[AC01095]--- $request->input: %s', json_encode($request->input() )));
  1156.  
  1157. if( count($request->input()) > 0 ) {
  1158. if( $inv = \App\Inventory::find( $request->input('invid') ) ) {
  1159. $inv->vehicle_status = $request->input('statid');
  1160. $inv->save();
  1161. } else {
  1162. return response()->json(false);
  1163. }
  1164.  
  1165. return response()->json(true);
  1166. } else {
  1167. return response()->json(false);
  1168. }
  1169.  
  1170. }
  1171.  
  1172. public function vehicleSave(Request $request) {
  1173. ToolBox::Trace(sprintf('[AC01113] (BEGIN) %s::%s:%s', __FILE__, __FUNCTION__, __LINE__ ));
  1174. ToolBox::Trace(sprintf('[AC01114]--- $request->input(): %s', json_encode($request->input()) ));
  1175. // dd($request->input());
  1176.  
  1177. $vehicle = null;
  1178. if( !$vehicle = \App\Vehicle::where('vin', '=', trim($request->input('vin')) )->first() ) {
  1179. $vehicle = new \App\Vehicle();
  1180. }
  1181.  
  1182. $vehicle->vin = $request->input('vin');
  1183. $vehicle->year = $request->input('year');
  1184. $vehicle->make = $request->input('make');
  1185. $vehicle->model = $request->input('model');
  1186. $vehicle->trim = $request->input('trim');
  1187. $vehicle->engine = $request->input('engine');
  1188. $vehicle->engine_displacement = $request->input('engine_displacement');
  1189. $vehicle->engine_cylinders = $request->input('engine_cylinders');
  1190. $vehicle->transmission = $request->input('transmission');
  1191. $vehicle->transmission_speed = $request->input('transmission_speed');
  1192. $vehicle->mpg_city = $request->input('mpg_city');
  1193. $vehicle->mpg_highway = $request->input('mpg_highway');
  1194. $vehicle->drive_type = $request->input('drive_type');
  1195. $vehicle->exterior_color = $request->input('exterior_color');
  1196. $vehicle->interior_color = $request->input('interior_color');
  1197. $vehicle->fuel_type = $request->input('fuel_type');
  1198. $vehicle->weight = $request->input('weight');
  1199. $vehicle->description = $request->input('description') ? $request->input('description') : '';
  1200. $vehicle->msrp = $request->input('msrp');
  1201. $vehicle->record_locked = true;
  1202. $vehicle->ntas_id = ToolBox::get_ntas_id(
  1203. $request->input('vin'),
  1204. $request->input('make'),
  1205. $request->input('model'),
  1206. $request->input('trim'),
  1207. $request->input('exterior_color')
  1208. );
  1209.  
  1210. $vehicle->save();
  1211.  
  1212. $inventory = null;
  1213. $dealerID = \Auth::user()->dealers()->first()->id;
  1214.  
  1215. $inventory = $vehicle->inventory()->first();
  1216.  
  1217. if( null === $inventory ) {
  1218. $inventory = new \App\Inventory();
  1219. $inventory->vehicle_id = $vehicle->id;
  1220. $inventory->dealer_id = $dealerID;
  1221. $inventory->record_locked = true;
  1222. // $inventory->save();
  1223. }
  1224.  
  1225. $inventory->adjustments = $request->input('adjustments');
  1226. $inventory->holdback = $request->input('holdback');
  1227. $inventory->invoice_price = $request->input('invoice');
  1228. $inventory->repair_order = $request->input('repair_order');
  1229. $inventory->reconditioning = $request->input('reconditioning');
  1230. $inventory->cost = $request->input('cost');
  1231.  
  1232. $inventory->vehicle_id = $vehicle->id;
  1233. $inventory->dealer_id = $dealerID;
  1234. $inventory->cpin = \Auth::user()->dealers()->first()->cpin;
  1235. $inventory->purchase_price = $request->input('purchase_price');
  1236. $inventory->list_price = $request->input('list_price');
  1237. $inventory->cost = $request->input('cost');
  1238. $inventory->internet_price = $request->input('internet_price');
  1239. $inventory->stock_number = $request->input('stock_number');
  1240. $inventory->odometer = $request->input('odometer');
  1241. $inventory->is_active = true;
  1242. $inventory->display_on_web = $request->input('display_on_web');
  1243. $inventory->record_locked = $request->input('record_locked');
  1244. $inventory->import_locked = $request->input('record_locked');
  1245. $inventory->third_party_push_lock = null === $request->input('third_party_push_lock') ? false : true;
  1246. $inventory->sticky = $request->input('sticky');
  1247. $inventory->is_deleted = $request->input('is_deleted');
  1248. $inventory->export_autotrader = $request->input('export_autotrader');
  1249. $inventory->export_carsdotcom = $request->input('export_carsdotcom');
  1250. $inventory->export_carsforsale = $request->input('export_carsforsale');
  1251. $inventory->export_cargurus = $request->input('export_cargurus');
  1252. $inventory->export_cdk = $request->input('export_cdk');
  1253. $inventory->export_craigslist = $request->input('export_craigslist');
  1254. $inventory->export_dealerspecialties = $request->input('export_dealerspecialties');
  1255. $inventory->export_dealereprocess = $request->input('export_dealereprocess');
  1256. $inventory->export_homenet = $request->input('export_homenet');
  1257. $inventory->export_inventoryplus = $request->input('export_inventoryplus');
  1258. $inventory->export_recycler = $request->input('export_recycler');
  1259. $inventory->video_url = $request->input('video_url');
  1260. $inventory->vehicle_status = $request->input('vehicle_status');
  1261. $inventory->save();
  1262.  
  1263. // Update image table
  1264. $ctrSequence = 0;
  1265. $flgWatermark = false;
  1266. if( null !== $imgData = collect( json_decode(trim($request->input('vehicleImages'))) )->unique() ) {
  1267.  
  1268. $imgData->each( function($image) use($inventory, $dealerID, $vehicle, &$ctrSequence) {
  1269. $vimage = Vimage::where(
  1270. 'inventory_id', '=', $inventory->id
  1271. )->where(
  1272. 'dealer_id', '=', $dealerID
  1273. )->where(
  1274. 'vehicle_id', '=', $vehicle->id
  1275. )->where(
  1276. 'name', '=', strtolower(trim($image))
  1277. )->first();
  1278.  
  1279. if( $vimage === null ) {
  1280. $vimage = new Vimage;
  1281. }
  1282.  
  1283. $vimage->inventory_id = $inventory->id;
  1284. $vimage->vehicle_id = $vehicle->id;
  1285. $vimage->dealer_id = $dealerID;
  1286. $vimage->sequence = $ctrSequence;
  1287. $vimage->name = $image;
  1288. $vimage->save();
  1289.  
  1290. $ctrSequence++;
  1291.  
  1292. });
  1293.  
  1294. }
  1295.  
  1296. // Session::flash('success', 'vechicle information sucessfully updated...');
  1297.  
  1298. // return(json_encode($request->input()));
  1299. return response()->json(true);
  1300. }
  1301.  
  1302. /***********************************************************************************************************************************************************
  1303. * getDBuilderCustoms
  1304. ***********************************************************************************************************************************************************/
  1305.  
  1306. public function getDBuilderCustoms(Request $request, $dealer_id) {
  1307.  
  1308. $dbuilder = \App\dbuilder::where('dealer_id', '=', $dealer_id)->get();
  1309. //$dbuilder = \App\dbuilder::where('dealer_id', '=', $dealer_id)->get()->toJson();
  1310. // return \Response::json($dbuilder);
  1311. return response()->json(array('dbuilder'=> $dbuilder));
  1312.  
  1313.  
  1314.  
  1315.  
  1316. }
  1317.  
  1318. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement