flash('service_update',TRUE); $validation = $request->validate([ 'service.domain_name' => sprintf('required|unique:%s,domain_name,%d',$o->type->getTable(),$o->type->id), 'service.domain_expire' => 'required|date', 'service.domain_tld_id' => 'required|exists:ab_domain_tld,id', 'service.domain_registrar_id' => 'required|exists:ab_domain_registrar,id', 'service.registrar_account' => 'required', 'service.registrar_username' => 'required|string|min:5', 'service.registrar_ns' => 'required|string|min:5', ]); $o->type->forceFill($validation['service'])->save(); return redirect()->back()->with('success','Record updated.'); } /** * List all the domains managed by the user * * @return View */ public function domain_list(): View { $o = Service\Domain::serviceActive() ->serviceUserAuthorised(Auth::user()) ->select('service_domains.*') ->join('ab_service',['ab_service.id'=>'service_domains.service_id']) ->with(['service.account','registrar']) ->get(); return view('r.service.domain.list') ->with('o',$o); } /** * Update a service * * @note: Route Middleware protects this path * @param Request $request * @param Service $o * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse */ public function update(Request $request,Service $o) { switch ($o->order_status) { case 'CANCEL-REQUEST': if ($request->post()) { if (! $request->post('date_end')) return redirect()->back()->withErrors('Cancellation Date not provided'); $o->date_end = $request->post('date_end'); foreach (['cancel_notes'] as $key) { if ($request->post($key)) $o->setOrderInfo($key,$request->post($key)); } $o->order_status='CANCEL-PENDING'; $o->save(); return redirect()->to(url('u/service',$o->id))->with('updated','Service cancellation submitted.'); } return $this->update_request_cancel($o); case 'ORDER-SENT': if ($request->post()) { foreach (['reference','notes'] as $key) { $o->setOrderInfo($key,$request->post($key)); } $o->save(); foreach ($request->post($o->stype) as $k=>$v) { $o->type->{$k} = $v; } $o->type->save(); return redirect()->to(url('u/service',$o->id))->with('updated','Order sent notes updated.'); } return $this->update_order_status($o); case 'PROVISION-PLANNED': if ($request->post()) { foreach (['provision_notes'] as $key) { $o->setOrderInfo($key,$request->post($key)); } $o->date_start = $request->post('date_start'); $o->save(); foreach ($request->post($o->stype) as $k=>$v) { $o->type->{$k} = $v; } $o->type->save(); return redirect()->to(url('u/service',$o->id))->with('updated','Order sent notes updated.'); } return $this->update_provision_planned($o); default: abort(499,'Not yet implemented'); } } private function update_order_status(Service $o) { return View('r.service.order.sent',['o'=>$o]); } private function update_request_cancel(Service $o) { return View('u.service.order.cancel',['o'=>$o]); } private function update_provision_planned(Service $o) { return View('r.service.order.provision_plan',['o'=>$o]); } }