orderBy('produit')->orderBy('qualite')->orderBy('recolte') $cotations = CotationsData::query() ->select('produit', 'qualite', 'recolte', DB::raw("GROUP_CONCAT(echeance,'::',COALESCE(prix,'--') SEPARATOR '|@|') AS prices")) ->whereNotNull('prix') ->groupBy('produit') ->groupBy('qualite') ->groupBy('recolte') ->orderBy('produit') ->get(); $mps = CotationsData::query()->select('produit')->distinct()->orderBy('produit')->get(); $dateMajCotations = CotationsData::query()->select('updated_at')->orderBy('id', 'DESC')->first(); $dbobjectif = new Objectives(); // * capte les nouvelles colonnes éventuelles $nullData = array_combine( $dbobjectif->getFillable(), array_fill(0, count($dbobjectif->getFillable()), null) ); $dbobjectif->fill($nullData); $dbobjectif->produit = '--'; $dbobjectif->qualite = '--'; $dbobjectif->campagne = '--'; $dbobjectif->quantite = 0; // $dbobjectif->prix = 0; $dbobjectif->echeance = '--'; $dbobjectif->volume_restant = 0; // $dbobjectif->observations = ''; $dbmyObjectives = Objectives::query()->with('status')->whereHas('customer', function (Builder $q) { $q->where('id', Auth::guard('frontend')->user()->id); })->orderBy('updated_at', 'DESC')->get(); $formEnums = $this->getObjectivesFormEnums(); $pdfsAnalyse = PublicPdfs::query()->where('category_id', 1) ->where('is_published', true)->orderBy('created_at', 'DESC')->get(); $pdfsMarches = PublicPdfs::query()->where('category_id', 2) ->where('is_published', true)->orderBy('created_at', 'DESC')->get(); // * par défaut le marché est fermé // * si on est (un jour de semaine) après 11h ou avant 17h45 alors ouvert $market_closed = true; // * Current time $time = Carbon::now(); // * set time to 11:00 $start = Carbon::create($time->year, $time->month, $time->day, 11, 0, 0); // * set time to 17:45 $end = Carbon::create($time->year, $time->month, $time->day, 17, 45, 0); if ($time->isWeekday()) { if ($time->between($start, $end, true)) { $market_closed = false; } } if (!$dateMajCotations) { $noCotationsYet = true; } else { $dayMaj = Carbon::createFromFormat('Y-m-d H:i:s', $dateMajCotations->updated_at)->startOfDay(); $today = Carbon::now()->startOfDay(); // * we suppose we have cotations today $noCotationsYet = false; if ($today > $dayMaj) { // * we don't have the cotations yet $noCotationsYet = true; } } $articles = Articles::where([ ['status', 1], ['category_id', 2] ])->orderBy('created_at', 'ASC')->paginate(4); $objectivesData = [ 'dbobjectif' => $dbobjectif, 'dbmyObjectives' => $dbmyObjectives, 'formEnums' => $formEnums, ]; return view( 'fo.pro.dashboard.index', compact( 'cotations', 'mps', 'objectivesData', 'pdfsAnalyse', 'pdfsMarches', 'dateMajCotations', 'market_closed', 'noCotationsYet', 'articles' ) ); } public function waiting(Request $request) { /** @var \App\Models\Customer */ $customer = Auth::guard('frontend')->user(); if ($customer->is_validated_pro) { return \response()->redirectToRoute('fo.pro.dashboard'); } return view('fo.pro.dashboard.waiting'); } private function getObjectivesFormEnums() { $enums = array(); /** @var \Illuminate\Database\Eloquent\Collection */ $produitEnum = CotationsData::query()->select('produit AS value')->distinct()->get(); $enums['produit'] = $produitEnum; $qualiteEnum = array(); foreach ($produitEnum as $produit) { $qualiteEnum[$produit->value] = CotationsData::query() ->select('qualite AS value')->distinct()->where('produit', $produit->value)->get(); } $enums['qualite'] = $qualiteEnum; $campagneEnum = array(); foreach ($produitEnum as $produit) { $campagneEnum[$produit->value] = CotationsData::query() ->select('recolte AS value')->distinct()->where('produit', $produit->value)->get(); } $enums['campagne'] = $campagneEnum; $echeanceEnum = array(); foreach ($produitEnum as $produit) { foreach ($campagneEnum[$produit->value] as $campagne) { $echeanceEnum[$produit->value][$campagne->value] = CotationsData::query() ->select('echeance AS value')->distinct() ->where('produit', $produit->value) ->where('recolte', $campagne->value) ->whereNotNull('prix') ->get(); } } $enums['echeance'] = $echeanceEnum; return $enums; } }