Example #1
0
 /**
  * Store a newly created resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @return \Illuminate\Http\Response
  */
 public function store(Request $request)
 {
     $validator = Validator::make($request->all(), ['name' => 'required|unique:projects|max:255', 'rank' => 'required|integer', 'date_start' => 'date', 'date_end' => 'date', 'descriptions.rank' => 'required|integer', 'descriptions.text' => 'required|max:500']);
     if ($validator->fails()) {
         return redirect()->back()->withErrors($validator);
     }
     DB::beginTransaction();
     $project = new Project($request->only(['name', 'rank', 'date_start', 'date_end']));
     if (!$project->save()) {
         DB::rollback();
         return redirect()->back()->withError('Could not save project');
     }
     $descriptions = [];
     foreach ($request->get('descriptions') as $description) {
         $descriptions[] = new Description($description);
     }
     if (!$project->descriptions()->saveMany($descriptions)) {
         DB::rollback();
         return redirect()->back()->withError('Could not save description');
     }
     DB::commit();
     return redirect('admin');
 }