Esempio n. 1
0
 /**
  * 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éé !');
 }