/ database / seeders / EMLTemplateSeeder.php
EMLTemplateSeeder.php
 1  <?php
 2  
 3  namespace Database\Seeders;
 4  
 5  use Carbon\Carbon;
 6  use Illuminate\Database\Console\Seeds\WithoutModelEvents;
 7  use Illuminate\Database\Seeder;
 8  use Illuminate\Support\Facades\DB;
 9  use RecursiveDirectoryIterator;
10  use RecursiveTreeIterator;
11  
12  class EMLTemplateSeeder extends Seeder
13  {
14  
15      /**
16       * Run the database seeds.
17       *
18       * @return void
19       */
20      public function run()
21      {
22          DB::table('eml_templates')->insert($this->getTemplatesByLanguage('es'));
23          DB::table('eml_templates')->insert($this->getTemplatesByLanguage('en'));
24      }
25  
26      public static function getTemplatesByLanguage(string $locale): array
27      {
28          $data = [];
29          $it = new RecursiveTreeIterator(new RecursiveDirectoryIterator(database_path('data/EML_Templates/' . $locale), \FilesystemIterator::SKIP_DOTS));
30          foreach ($it as $path) {
31              $info = pathinfo($path);
32              $content = file_get_contents(explode('-', $path)[1]);
33              $values = preg_split('/\r\n|\r|\n/', $content);
34  
35              $data[] = [
36                  'title' => explode('.', $info['filename'])[0],
37                  'subject' => array_shift($values),
38                  'body' => implode("\n", $values),
39                  'isInternal' => false,
40                  'language' => $locale,
41                  'created_at' => Carbon::now(),
42                  'updated_at' => Carbon::now(),
43              ];
44          }
45          return $data;
46      }
47  }