public function updated(WorkOrder $workOrder) { $sendedUsers = []; $messageData = []; switch ($workOrder->status) { case 0: $messageData = ['title' => '工单 #' . $workOrder->id . ' 已关闭', 'template' => 'host.communication.message.template.closed']; break; case 2: $messageData = ['title' => '工单 #' . $workOrder->id . ' 已被受理', 'template' => 'host.communication.message.template.accept']; break; case 3: $messageData = ['title' => '工单 #' . $workOrder->id . ' 已被标记为解决', 'template' => 'host.communication.message.template.solved']; break; } foreach ($workOrder->participants as $participant) { if ($participant->id == \Auth::id()) { continue; } $url = \get_uri_path(route('host.work.work-order.show', $workOrder->id)); $message = new Message(); $message->title = $messageData['title']; $message->content = view($messageData['template'], ['workOrder' => $workOrder, 'url' => $url]); $message->sendTo($participant); // 当工单解决或关闭则取消关注 if ($workOrder->status == 0 || $workOrder->status == 3) { $workOrder->participants()->detach($participant->id); } $sendedUsers[] = $participant->id; } foreach ($workOrder->group->participants as $participant) { if ($participant->id == \Auth::id()) { continue; } if (!in_array($participant->id, $sendedUsers)) { $url = \get_uri_path(route('host.work.work-order.show', $workOrder->id)); $message = new Message(); $message->title = $messageData['title']; $message->content = view($messageData['template'], ['workOrder' => $workOrder, 'url' => $url]); $message->sendTo($participant); } } // 创建历史 $history = new WorkOrderHistory(); $history->event_id = WorkOrderHistory::EVENT_WORK_ORDER_STATUS_CHANGE; $history->remark = json_encode(['status' => $workOrder->status]); $history->workOrder()->associate($workOrder); $history->user()->associate(\Auth::user()); $history->save(); }
/** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * * @return \Illuminate\Http\Response */ public function store(Request $request, $groupId) { $validator = \Validator::make($request->all(), ['subject' => 'required', 'sort' => 'required|numeric|min:0|max:5', 'content' => 'required', 'category_id' => 'required|exists:categories,id']); if ($validator->fails()) { return redirect()->back()->withErrors($validator->errors()); } return \DB::transaction(function () use($request, $groupId) { $group = Group::findOrFail($groupId); $category = Category::findOrFail($request->input('category_id')); $workOrder = new WorkOrder(); $workOrder->subject = $request->input('subject'); $workOrder->sort = $request->input('sort'); $workOrder->category()->associate($category); $workOrder->group()->associate($group); $workOrder->publisher()->associate(\Auth::user()); $workOrder->save(); return redirect()->route('host.work.work-order.show', $workOrder->id)->with('create-success', 'work-order'); }); }
private function operating($target, $type, $method) { $targetObject = $type == User::INVOLVED_WORK_ORDER ? WorkOrder::findOrFail($target) : Group::findOrFail($target); $operator = \Auth::user()->involvements($type); if ($method) { $operator->attach($targetObject->id); } else { $operator->detach($targetObject->id); } if (\Request::ajax()) { return response()->json(['body' => 'success']); } return redirect()->back(); }
public function store(Request $request, $id) { $validator = \Validator::make($request->all(), ['content' => 'required']); if ($validator->fails()) { return redirect()->back()->withErrors($validator->errors()); } return \DB::transaction(function () use($id, $request) { $workOrder = WorkOrder::findOrFail($id); $message = new WorkOrderMessage(); $message->content = $request->input('content'); $message->workOrder()->associate($workOrder); $message->publisher()->associate(\Auth::user()); $message->save(); if ($request->ajax()) { return response()->json(['body' => $message->id]); } return redirect()->back()->with('create-success', 'work-order-message'); }); }
/** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $workOrder = WorkOrder::findOrFail($id); if ($workOrder->status != 0 && $workOrder->status != 3) { if (in_array($status = $request->input('status', -1), [0, 1, 2, 3])) { $workOrder->status = $status; $workOrder->save(); } } return response()->json(['body' => 'success']); }
/** * Register any other events for your application. * * @param \Illuminate\Contracts\Events\Dispatcher $events * @return void */ public function boot(DispatcherContract $events) { parent::boot($events); WorkOrder::observe(WorkOrderObserver::class); WorkOrderMessage::observe(WorkOrderMessageObserver::class); }