Example #1
0
 /**
  * @param Request $request
  * @return $this|\Illuminate\Http\RedirectResponse
  */
 public function loadFromFile(Request $request)
 {
     $validator = Validator::make($request->all(), ['file' => 'required'], ['required' => 'No file provided']);
     if ($validator->fails()) {
         return redirect()->back()->withErrors($validator);
     } else {
         $contents = file($request->file('file')->getRealPath());
         try {
             DB::beginTransaction();
             foreach ($contents as $lineNumber => $line) {
                 $record = array_combine(['subject', 'text', 'created_at'], str_getcsv($line));
                 $recordsValidator = Validator::make($record, BlogRecordRequest::getValidationRules());
                 if ($recordsValidator->fails()) {
                     throw new \Exception();
                 } else {
                     $br = new BlogRecord($record);
                     $br->save();
                 }
             }
             DB::commit();
             return redirect()->back();
         } catch (\Exception $e) {
             DB::rollBack();
             return redirect()->back()->withErrors(new MessageBag(['Line number' => $lineNumber]));
         }
     }
 }