/** * Show the form for editing the specified Tracking. * * @param int $location_id * @param int $tracking_id * * @return Response */ public function insert($location_id, $tracking_id) { $subindustries = $products = []; $subindustry_id = $is_disabled = null; $location = $this->locationRepository->findWithoutFail($location_id); if (empty($location)) { Flash::error('Location not found'); return redirect(route('inserter.locations.index')); } $tracking = $this->trackingRepository->with(['facing', 'location'])->findWhere(['id' => $tracking_id, 'location_id' => $location_id])->first(); if (empty($tracking)) { Flash::error('Tracking not found'); return redirect(route('inserter.locations.trackings.index', $location->id)); } $previousId = $tracking->previousId($location_id); $nextId = $tracking->nextId($location_id); $previousTracking = $tracking->previousTracking(); $tracking_original_state = $tracking->state; // Get data from previous tracking (last month) if ($tracking->isPending() && $previousTracking) { $tracking->brand_id = $previousTracking->brand_id; $tracking->product_id = $previousTracking->product_id; $tracking->state = $previousTracking->state; } if ($tracking->inserted_at && $tracking->inserted_at->diffInMinutes(Carbon::now()) > 10) { Flash::error('Trackings are only editable within 10 minutes after insertion.'); } $brands = $this->brandRepository->lists('name', 'id'); $brandOwners = $this->brandOwnerRepository->lists('name', 'id'); $brand_id = Input::old('brand_id') ?: $tracking->brand_id; if (isset($brand_id)) { $brand = $this->brandRepository->findWithoutFail($brand_id); if (!$brand) { Flash::error('Brand not found'); return redirect(route('inserter.locations.trackings.index', $location->id)); } $subindustries = $brand->industry->subindustries->lists('name', 'id'); } $product_id = Input::old('product_id') ?: $tracking->product_id; if ($product_id) { $product = $this->productRepository->findWithoutFail($product_id); $subindustry_id = $product->subindustry_id; } $industries = $this->industryRepository->lists('name', 'id'); $subindustry_id = Input::old('subindustry_id') ?: $subindustry_id; if ($subindustry_id) { $subindustry = $this->subindustryRepository->findWithoutFail($subindustry_id); if (!$subindustry) { Flash::error('Subindustry not found'); return redirect(route('inserter.locations.trackings.index', $location->id)); } $products = $subindustry->products->lists('name', 'id'); } if ($tracking->isInserted() and !$tracking->product_id and !$tracking->brand_id) { $tracking_state = 'empty_billboard'; } elseif ($tracking->isSomethingWrong()) { $tracking_state = 'something_wrong'; } else { $tracking_state = 'regular_billboard'; } $tracking_state = Input::old('tracking_state') ?: $tracking_state; if ($tracking_state != 'regular_billboard') { $is_disabled = 'disabled'; } $modal_subindustries = $this->subindustryRepository->lists('name', 'id'); $index_route = route('inserter.locations.trackings.index', $location->id); $previous_route = route('inserter.locations.trackings.insert', [$location->id, 'tracking' => $previousId]); $next_route = route('inserter.locations.trackings.insert', [$location->id, 'tracking' => $nextId]); if (!$previousId) { $previous_route = $index_route; } if (!$nextId) { $next_route = $index_route; } return view('inserter.locations.trackings.insert')->with('brandOwners', $brandOwners)->with('brands', $brands)->with('industries', $industries)->with('is_disabled', $is_disabled)->with('location', $location)->with('modal_subindustries', $modal_subindustries)->with('next_route', $next_route)->with('previousTracking', $previousTracking)->with('previous_route', $previous_route)->with('products', $products)->with('subindustries', $subindustries)->with('subindustry_id', $subindustry_id)->with('tracking', $tracking)->with('tracking_state', $tracking_state)->with('tracking_original_state', $tracking_original_state); }