From 93c31685064a82612b92696e54598cf7afae9018 Mon Sep 17 00:00:00 2001 From: David Piesse Date: Thu, 9 Apr 2020 09:49:39 +0100 Subject: [PATCH] Add Tesco Store Seeder --- database/seeds/DatabaseSeeder.php | 1 + database/seeds/TescoStoreSeeder.php | 55 +++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 database/seeds/TescoStoreSeeder.php diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index d25ff92..707988d 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -16,5 +16,6 @@ public function run() $this->call(KrogerStoreSeeder::class); $this->call(HEBStoreSeeder::class); $this->call(PriceChopperStoreSeeder::class); + $this->call(TescoStoreSeeder::class); } } diff --git a/database/seeds/TescoStoreSeeder.php b/database/seeds/TescoStoreSeeder.php new file mode 100644 index 0000000..a4bc979 --- /dev/null +++ b/database/seeds/TescoStoreSeeder.php @@ -0,0 +1,55 @@ +ensureLocationSeedFile(); + $this->seed(); + } + + private function ensureLocationSeedFile() { + $locationSeedFilename = storage_path('tesco_stores.json'); + + if (!file_exists($locationSeedFilename)) { + file_put_contents($locationSeedFilename, file_get_contents(self::LOCATION_SEED_FILE_URL)); + } + } + + public function seed() + { + if (Chain::where('name', 'Tesco')->first()) { + return; + } + + $chain = new Chain(); + $chain->name = 'Tesco'; + $chain->url = 'https://www.tesco.com'; + $chain->save(); + + $json = json_decode(file_get_contents(storage_path('tesco_stores.json'))); + + collect($json)->each(function ($item) use ($chain) { + $store = new Store(); + $store->name = $item->name; + $store->identifier = $item->identifier; + $store->street = $item->street; + $store->city = $item->city; + $store->state = $item->state; + $store->zip = $item->zip; + $store->country = $item->country; + + $store->location = new Point($item->latitude, $item->longitude); + + $chain->stores()->save($store); + }); + } +}