/** * Execute the console command. * * @return mixed */ public function fire() { $file = $this->argument('file'); if (!file_exists($file) || !is_file($file)) { $this->error('Please provide a valid file.'); } if ($handle = fopen($file, 'r')) { while (($data = fgetcsv($handle, 0, ';')) !== false) { // If the "level" column is present, use it instead of the // "level" option. $level = $this->option('level'); if (count($data) === 7) { $level = $data[6]; } elseif ($this->option('level') === null) { $this->error('The file does not include the level of the newcomer, please provide it via the "level" flag.'); return; } // See the class description for file format. $attributes = ['first_name' => $data[2], 'last_name' => $data[1], 'password' => Str::random(6), 'sex' => strpos($data[0], 'M') !== false ? 'M' : 'F', 'email' => $data[5], 'phone' => $data[4], 'level' => $level, 'birth' => new DateTime($data[3])]; $newcomer = Newcomer::create($attributes); if ($newcomer->save() === false) { $this->error('Error while adding ' . $newcomer->first_name . ' ' . $newcomer->last_name); } } } }
/** * Create a newcomer. * * @return Response */ public function createcsv() { // Parse CSV $result = []; $temp = tmpfile(); fwrite($temp, Request::get('csv')); fseek($temp, 0); $i = 0; while (($data = fgetcsv($temp, 0, ";")) !== false) { if ($data === false) { return Redirect::back()->withErrors('Erreur de lecture à la ligne ' . ($i + 1))->withInput(); } elseif (count($data) != 11) { return Redirect::back()->withErrors('La ligne ' . ($i + 1) . ' comporte ' . count($data) . ' champ au lieu de 11 séparés par des ;')->withInput(); } $line = ['first_name' => $data[0], 'last_name' => $data[1], 'sex' => $data[2], 'birth' => $data[3], 'branch' => $data[4], 'registration_email' => $data[5], 'registration_cellphone' => $data[6], 'registration_phone' => $data[7], 'postal_code' => $data[8], 'country' => $data[9], 'ine' => $data[10]]; // Validate $validator = Validator::make($line, ['first_name' => 'required', 'last_name' => 'required', 'sex' => 'required|in:M,F,m,f', 'birth' => 'date', 'registration_email' => 'email', 'branch' => 'required'], ['sex.in' => 'Le champ sex doit valoir seulement M ou F']); if ($validator->fails()) { $errors = $validator->errors(); $errors->add('form', 'Les erreurs ont été trouvés à la ligne ' . ($i + 1)); return Redirect::back()->withErrors($errors)->withInput(); } // Transform fields and save it to the main array $line['sex'] = strtolower($line['sex']) == 'f' ? 1 : 0; $result[] = $line; $i++; } fclose($temp); // Save array to db foreach ($result as $value) { if (!Newcomer::create($value)) { return $this->error('Impossible de créer tous les nouveaux !'); } } return $this->success('Les nouveaux ont été créé !'); }