ldc-jeusselin/app/Http/Controllers/Pro/DashboardController.php
2021-04-01 16:06:19 +02:00

112 lines
4.7 KiB
PHP

<?php
namespace App\Http\Controllers\Pro;
use App\Http\Controllers\Controller;
use App\Models\Cotations;
use App\Models\CotationsData;
use App\Models\Objectives;
use App\Models\PublicPdfs;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Carbon;
class DashboardController extends Controller
{
public function index(Request $request)
{
//$cotations = CotationsData::whereNotNull('prix')->orderBy('produit')->orderBy('qualite')->orderBy('recolte')
$cotations = CotationsData::select('produit','qualite','recolte', DB::raw("GROUP_CONCAT(echeance,'::',prix SEPARATOR '|@|') AS prices"))
->groupBy('produit')
->groupBy('qualite')
->groupBy('recolte')
->get();
$mps = CotationsData::select('produit')->distinct()->get();
setlocale(LC_TIME, config('app.locale'));
$dateMajCotations = CotationsData::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::with('status')->where('user_id',Auth::user()->id)->orderBy('updated_at','DESC')->get();
$formEnums = $this->getObjectivesFormEnums();
$pdfsAnalyse = PublicPdfs::where('category_id',1)->where('is_published',1)->orderBy('created_at','DESC')->get();
$pdfsMarches = PublicPdfs::where('category_id',2)->where('is_published',1)->orderBy('created_at','DESC')->get();
//par défaut le marché est fermé
$market_closed = true;
//si on est (un jour de semaine) après 11h ou avant 17h45 alors ouvert
$time = Carbon::now(); // Current time
$start = Carbon::create($time->year, $time->month, $time->day, 11, 0, 0); //set time to 11:00
$end = Carbon::create($time->year, $time->month, $time->day, 17, 45, 0); //set time to 17:45
if ($time->isWeekday()) {
if ($time->between($start, $end, true)) {
$market_closed = false;
}
}
$dayMaj = Carbon::createFromFormat('Y-m-d H:i:s', $dateMajCotations->updated_at)->startOfDay();
$today = Carbon::now()->startOfDay();
$noCotationsYet = false; //we suppose we have cotations today
if ($today > $dayMaj) {
$noCotationsYet = true; //we don't have the cotations yet
}
return view('pro.dashboard.index', compact('cotations', 'mps', 'dbobjectif', 'dbmyObjectives', 'formEnums', 'pdfsAnalyse', 'pdfsMarches', 'dateMajCotations', 'market_closed', 'noCotationsYet'));
}
public function waiting(Request $request)
{
return view('pro.dashboard.waiting');
}
private function getObjectivesFormEnums() {
$enums = array();
$produitEnum = CotationsData::select('produit AS value')->distinct()->get();
$enums['produit'] = $produitEnum;
$qualiteEnum = array();
foreach ($produitEnum as $produit) {
$qualiteEnum[$produit->value] = CotationsData::select('qualite AS value')->distinct()->where('produit',$produit->value)->get();
}
$enums['qualite'] = $qualiteEnum;
$campagneEnum = array();
foreach ($produitEnum as $produit) {
$campagneEnum[$produit->value] = CotationsData::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::select('echeance AS value')->distinct()
->where('produit',$produit->value)
->where('recolte',$campagne->value)
->whereNotNull('prix')
->get();
}
}
$enums['echeance'] = $echeanceEnum;
return $enums;
}
}