Example #1
0
 public function consolidate($reseller_id = null)
 {
     $q = Model::Product();
     if (!is_null($reseller_id)) {
         $q->where(['reseller_id', '=', (int) $reseller_id]);
     }
     $products = $q->cursor();
     foreach ($products as $product) {
         if (isset($product['reseller_id']) && isset($product['segment_id']) && isset($product['sellzone_id'])) {
             $row = Model::Productdata()->firstOrCreate(['reseller_id' => (int) $product['reseller_id'], 'segment_id' => (int) $product['segment_id'], 'sellzone_id' => (int) $product['sellzone_id']]);
             unset($product['_id']);
             $row->product = $product;
             $family = repo('segment')->getFamilyfromItem((int) $product['segment_id']);
             if (!empty($family)) {
                 $market = current($family);
                 $market_id = (int) $market['id'];
             } else {
                 $market_id = $segment_id;
             }
             $company = Model::Company()->where(['reseller_id', '=', (int) $product['reseller_id']])->first(false);
             $reseller = Model::Reseller()->find((int) $product['reseller_id'], false);
             $segment = Model::Segment()->find((int) $product['segment_id'], false);
             $location = lib('utils')->remember('has.locations.companies.' . $product['reseller_id'], function ($reseller_id) {
                 $company = Model::Company()->where(['reseller_id', '=', (int) $reseller_id])->first(true);
                 if ($company) {
                     $coords = lib('geo')->getCoordsMap($company->address . ' ' . $company->zip . ' ' . $company->city);
                     $loc = ['lng' => $coords['lng'], 'lat' => $coords['lat']];
                 }
                 return $loc;
             }, Model::Company()->getAge(), [$product['reseller_id']]);
             $status = (int) lib('status')->getId('reseller', 'REGISTER') == $reseller['status_id'];
             $row->company = $company;
             $row->segment = $segment;
             $row->status = $status;
             $row->location = $location;
             $row->reseller = $reseller;
             $options = [];
             $resellerObj = Model::Reseller()->model($reseller);
             $hasAgenda = lib('option')->get('agenda.partage', $resellerObj, false);
             $distanceMaxReseller = (double) lib('option')->get('zone.intervention.' . $market_id, $resellerObj, 0);
             $delai_presta = lib('option')->get('delai.intervention.' . $market_id, $resellerObj, 0);
             $minAmount = lib('option')->get('montant.intervention.' . $market_id, $resellerObj, 0);
             $options['has_agenda'] = $hasAgenda;
             $options['distance_max'] = $distanceMaxReseller;
             $options['delai_min'] = $delai_presta;
             $options['amount_min'] = $minAmount;
             $options['languages'] = [];
             $languages = ['anglais', 'espagnol', 'allemand', 'italien', 'néerlandais', 'portugais', 'russe', 'japonais', 'chinois'];
             foreach ($languages as $language) {
                 $speak = lib('option')->get('langue.' . $market_id . '.' . $language, $resellerObj, false);
                 $options['languages'][$language] = $speak;
             }
             $row->options = $options;
             $row->save();
         }
     }
 }