/**
  * Creates a new work order session.
  *
  * @param int|string          $workOrderId
  *
  * @return bool|WorkOrderSession
  */
 public function create($workOrderId)
 {
     $workOrder = $this->workOrder->find($workOrderId);
     if ($workOrder) {
         // Create a new date time string set to now
         $now = Carbon::now()->toDateTimeString();
         // Create a new session
         $session = $this->model();
         // Assign its attributes
         $session->work_order_id = $workOrder->id;
         $session->user_id = $this->sentry->getCurrentUserId();
         $session->in = $now;
         /*
          * If this is the first session that is being created on
          * the work order, set the started at property to now
          */
         if ($workOrder->sessions->count() === 0) {
             $workOrder->update(['started_at' => $now]);
         }
         if ($session->save()) {
             return $session;
         }
     }
     return false;
 }
 /**
  * Creates a new report for the specified work order.
  *
  * @param ReportRequest $request
  * @param int|string    $workOrderId
  *
  * @return \Illuminate\Http\RedirectResponse
  */
 public function store(ReportRequest $request, $workOrderId)
 {
     $workOrder = $this->workOrder->find($workOrderId);
     $report = $this->report->create($request, $workOrder->id);
     if ($report) {
         // Complete the work order.
         $workOrder->complete($request);
         $message = 'Successfully created work order report.';
         return redirect()->route('maintenance.work-orders.show', [$workOrder->id])->withSuccess($message);
     } else {
         $message = 'There was an issue creating a work order report. Please try again';
         return redirect()->route('maintenance.work-orders.report.create', [$workOrder->id])->withErrors($message);
     }
 }
 /**
  * Prompts the user to download the specified uploaded file.
  *
  * @param int|string $id
  * @param int|string $attachmentId
  *
  * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
  */
 public function download($id, $attachmentId)
 {
     $workOrder = $this->workOrder->find($id);
     $attachment = $workOrder->attachments()->find($attachmentId);
     if ($attachment) {
         return response()->download($attachment->download_path);
     }
     abort(404);
 }
 /**
  * Displays the form for returning parts to the inventory.
  *
  * @param int|string $workOrderId
  * @param int|string $inventoryId
  * @param int|string $stockId
  *
  * @return \Illuminate\View\View
  */
 public function getPut($workOrderId, $inventoryId, $stockId)
 {
     $workOrder = $this->workOrder->find($workOrderId);
     $stock = $workOrder->parts()->find($stockId);
     if ($stock instanceof InventoryStock) {
         $item = $stock->item;
         return view('maintenance::work-orders.parts.inventory.stocks.put', compact('workOrder', 'item', 'stock'));
     }
     abort(404);
 }
 /**
  * Displays all the sessions for the specified work order.
  *
  * @param int|string $workOrderId
  *
  * @return \Illuminate\View\View
  */
 public function index($workOrderId)
 {
     $workOrder = $this->workOrder->find($workOrderId);
     return view('maintenance::work-orders.sessions.index', compact('workOrder'));
 }