%PDF- %PDF-
Direktori : /var/www/pjc/app/Http/Controllers/ |
Current File : /var/www/pjc/app/Http/Controllers/ProgrammaOre.php |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use DB; use App\Http\Controllers\Controller; use App\Models\User; use App\Utility; use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\Redirect; use Illuminate\Support\Facades\Input; use DataTables; class ProgrammaOre extends Controller { public function index(Request $request) { if($request->has('filtro')) { $settori = $request->input('filtro'); $mesiscelti = $request->input('mesi'); Session::forget('mesi'); Session::forget('settori'); } else { $settori = Session::get('idSettore'); $mesiscelti = [Date('n')]; } $commesse = DB::table('project') ->leftjoin('projects_accounts','projects_accounts.project_id','=','project.id') ->leftjoin('project_cstm','project_cstm.id_c','=','project.id') ->leftjoin('accounts','accounts.id','=','projects_accounts.account_id') ->leftjoin('pianificazioneore','pianificazioneore.idCommessa','=','project.id') ->select('project.id as uid','project.name as nome','project.description as descrizione','project.estimated_start_date as data_inizio','project.status as stato','accounts.name as ragione_sociale','project_cstm.importo_c','project_cstm.npreventivo_c','pianificazioneore.*') ->where('project.deleted',0) ->where('projects_accounts.deleted',0) ->whereIn('status',['Draft','apertamafatturata']) ->where('project_cstm.settore_c',$settori) ->where('project.estimated_start_date','>','2016-01-01') ->limit(2) ->orderby('project.date_entered','DESC') ->get(); $persone = DB::table('utenti')->where('attivo',1)->where('idsettore',$settori)->orderby('idsettore','ASC')->get(); return view('programmaore.index')->withCommesse($commesse)->withPersone($persone)->withSettori($settori)->withMesiscelti($mesiscelti); } public function index1(Request $request) { if($request->has('filtro')) { $settori = $request->input('filtro'); $mesiscelti = $request->input('mesi'); Session::forget('mesi'); Session::forget('settori'); } else { $settori = Session::get('idSettore'); $mesiscelti = [Date('n')]; } $persone = DB::table('utenti')->where('idsettore',$settori)->where('attivo',1)->get(); return view('programmaore.index')->withPersone($persone)->withSettori($settori)->withMesiscelti($mesiscelti); } public function JsonCommesse($settore) { $mesi = array( 1 => 'gennaio', 2 => 'febbraio', 3 => 'marzo', 4 => 'aprile', 5 => 'maggio', 6 => 'giugno', 7 => 'luglio', 8 => 'agosto', 9 => 'settembre', 10 => 'ottobre', 11 => 'novembre', 12 => 'dicembre' ); $commesse = DB::table('project') ->join('projects_accounts','projects_accounts.project_id','=','project.id') ->join('project_cstm','project_cstm.id_c','=','project.id') ->join('accounts','accounts.id','=','projects_accounts.account_id') ->leftjoin('pianificazioneore','pianificazioneore.idCommessa','=','project.id') ->leftjoin('pianificazionemese','pianificazionemese.idCommessa','=','project.id') ->select('project.id as uid','project.name as nome','project.description as descrizione','project.estimated_start_date as data_inizio','project.status as stato','accounts.name as ragione_sociale','project_cstm.importo_c','project_cstm.npreventivo_c','pianificazioneore.*','project_cstm.settore_c','pianificazioneore.*') ->where('project.deleted',0) ->where('projects_accounts.deleted',0) ->whereIn('status',['Draft','apertamafatturata']) ->where('project_cstm.settore_c',$settore) ->orderby('project.date_entered','DESC') ->get(); $conteggio = DB::table('project')->where('project_cstm.settore_c',$settore)->whereIn('status',['Draft','apertamafatturata'])->count(); $persone = DB::table('utenti')->where('idsettore',$settore)->where('attivo',1)->get(); foreach ($commesse as $item) { foreach($persone as $key => $per) { foreach($mesi as $m) { $assegnazioni = []; $oreassegnate = \App\pianficazioneutente::where('idCommessa', $item->uid)->where('idUtente', $per->id)->where('mese', $key)->get(); foreach ($oreassegnate as $ore) { $assegnazioni = ['id' => $per->id, 'cognome' => $per->cognome, 'mese' => $ore->mese, 'ore' => $ore->ore]; } $item->pianificazione[$m] = $assegnazioni; } } } $mesi[] = array( "defaultContent" => "<input type='text'>" ); $mesi[] = array( "defaultContent" => "<input type='text'>" ); $mesi[] = array( "defaultContent" => "<input type='text'>" ); foreach($persone as $item) { $persona[] = array("defaultContent" => "<input type='text'>"); } $response = array( "draw" => intval($input['draw']), "recordsTotal" => $conteggio, "recordsFiltered" => count($data->get()), "data" => $subdata_rtn ); return \Response::json($response, 200, []); } public function saveCommessa(Request $request) { $dati = $request->all(); $mesi = explode(',', $request->get('mesi')); $settori = $request->get('settori'); $pianificazione = \App\pianficazione::firstOrNew(['idCommessa' => $request->get('commessa')]); $pianificazione->carico_t = ($request->has('tot_termico')) ? $request->get('tot_termico') : 0; $pianificazione->carico_e = ($request->has('tot_elettrico')) ? $request->get('tot_elettrico') : 0; $pianificazione->carico_a = ($request->has('tot_incendio')) ? $request->get('tot_incendio') : 0; $pianificazione->carico_s = ($request->has('tot_sicurezza')) ? $request->get('tot_sicurezza') : 0; $pianificazione->carico_f = ($request->has('tot_formazione')) ? $request->get('tot_formazione') : 0; $pianificazione->lavorabile = $request->get('lavorabile'); $pianificazione->fatturabile = $request->get('fatturabile'); $pianificazione->note = $request->get('note'); $pianificazione->carico_t_old = $request->get('carico_t_old'); $pianificazione->carico_a_old = $request->get('carico_a_old'); $pianificazione->carico_s_old = $request->get('carico_s_old'); $pianificazione->carico_f_old = $request->get('carico_f_old'); $pianificazione->carico_e_old = $request->get('carico_e_old'); $pianificazione->anno = $request->get('anno_riferimento'); $pianificazione->save(); if ($request->has('acconti-1')) { $acconti = \App\acconti::firstOrNew(['commessa' => $request->get('commessa'), 'mese' => 1]); $acconti->mese = 1; $acconti->anno = date('Y'); $acconti->importo = $request->get('acconti-1'); $acconti->commessa = $request->get('commessa'); $acconti->save(); } if ($request->has('acconti-2')) { $acconti = \App\acconti::firstOrNew(['commessa' => $request->get('commessa'), 'mese' => 2]); $acconti->mese = 2; $acconti->anno = date('Y'); $acconti->importo = $request->get('acconti-2'); $acconti->commessa = $request->get('commessa'); $acconti->save(); } $i = 0; foreach ($mesi as $mese) { $utenti = DB::table('utenti')->where('idsettore', $settori)->get(); if (($settori == 1) && ($request->has('mese_sicurezza'))) { $ore = $request->get('mese_sicurezza')[$i]; } if (($settori == 2) && ($request->has('mese_termico'))) { $ore = $request->get('mese_termico')[$i]; } if (($settori == 3) && ($request->has('mese_elettrico'))) { $ore = $request->get('mese_elettrico')[$i]; } if (($settori == 4) && ($request->has('mese_antincendio'))) { $ore = $request->get('mese_antincendio')[$i]; } if (($settori == 5) && ($request->has('mese_formazione'))) { $ore = $request->get('mese_formazione')[$i]; } foreach ($utenti as $utente) { $pianificazioneutente = \App\pianficazioneutente::firstOrNew(['idutente' => $utente->id, 'idCommessa' => $request->get('commessa'), 'mese' => $mese]); if (($request->has($utente->id . '-' . $mese)) && ($request->get($utente->id . '-' . $mese) <> null)) { $pianificazioneutente->idCommessa = $request->get('commessa'); $pianificazioneutente->mese = $mese; $pianificazioneutente->ore = $request->get($utente->id . '-' . $mese); $pianificazioneutente->idUtente = $utente->id; $pianificazioneutente->save(); } } $i++; } Session::put('settori', $settori); Session::put('mesi', $mesi); return $dati; return Redirect::action('ProgrammaOre@index'); } public function getoremesecommessa($commessa) { $ore = \App\pianficazionemese::where('idCommessa',$commessa)->sum('ore'); return $ore; } public function calcolorimanenzamese($mese,$commessa,$importo,$carico,$id) { $righe = \App\pianficazioneutente::select('ore')->where('idCommessa',$id)->sum('ore'); $ore = $importo - $carico - $righe; return $ore; } public function datatable(Request $request) { if($request->has('filtro')) { $settori = $request->input('filtro'); $mesi = $request->input('mesi'); Session::forget('mesi'); Session::put('settori', $settori); $persone = DB::table('utenti')->where('idsettore',$settori)->where('attivo',1)->get(); } else { $settori = Session::get('idSettore'); $mesi = [1,2,3]; $persone = DB::table('utenti')->where('idsettore',$settori)->where('attivo',1)->get(); } $carico_lavoro = DB::table('project') ->join('projects_accounts','projects_accounts.project_id','=','project.id') ->join('project_cstm','project_cstm.id_c','=','project.id') ->join('accounts','accounts.id','=','projects_accounts.account_id') ->leftjoin('pianificazioneore','pianificazioneore.idCommessa','=','project.id') ->leftjoin('pianificazionemese','pianificazionemese.idCommessa','=','project.id') ->select('project.id as uid','project.name as nome','project.description as descrizione','project.estimated_start_date as data_inizio','project.status as stato','accounts.name as ragione_sociale','project_cstm.importo_c','project_cstm.npreventivo_c','pianificazioneore.*','project_cstm.settore_c','pianificazioneore.*') ->where('project.deleted',0) ->where('projects_accounts.deleted',0) ->whereIn('status',['Draft','apertamafatturata']) ->where('project_cstm.settore_c',$settori) ->orderby('project.date_entered','DESC') ->sum('project_cstm.importo_c') - DB::table('project') ->join('projects_accounts','projects_accounts.project_id','=','project.id') ->join('project_cstm','project_cstm.id_c','=','project.id') ->join('accounts','accounts.id','=','projects_accounts.account_id') ->leftjoin('pianificazioneore','pianificazioneore.idCommessa','=','project.id') ->leftjoin('pianificazionemese','pianificazionemese.idCommessa','=','project.id') ->select('project.id as uid','project.name as nome','project.description as descrizione','project.estimated_start_date as data_inizio','project.status as stato','accounts.name as ragione_sociale','project_cstm.importo_c','project_cstm.npreventivo_c','pianificazioneore.*','project_cstm.settore_c','pianificazioneore.*') ->where('project.deleted',0) ->where('projects_accounts.deleted',0) ->whereIn('status',['Draft','apertamafatturata']) ->where('project_cstm.settore_c',$settori) ->orderby('project.date_entered','DESC') ->sum('carico_s_old'); $utenti_t = [24,5,8,31,28,12]; $utenti_e = [33,34,1,2]; $utenti_a = [18,6,3]; $utenti_s = [13,23,21,20,19,17,14,11,30,32,35]; $utenti_f = [25,26,15]; switch ($settori) { case 1: $ore_settore = \App\pianficazioneutente::wherein('idUtente',$utenti_s)->sum('ore'); break; case 2: $ore_settore = \App\pianficazioneutente::wherein('idUtente',$utenti_t)->sum('ore'); break; case 3: $ore_settore = \App\pianficazioneutente::wherein('idUtente',$utenti_e)->sum('ore'); break; case 4: $ore_settore = \App\pianficazioneutente::wherein('idUtente',$utenti_a)->sum('ore'); break; case 5: $ore_settore = \App\pianficazioneutente::wherein('idUtente',$utenti_f)->sum('ore'); break; } /* $data = DB::table('project') ->join('projects_accounts','projects_accounts.project_id','=','project.id') ->join('project_cstm','project_cstm.id_c','=','project.id') ->join('accounts','accounts.id','=','projects_accounts.account_id') ->leftjoin('pianificazioneore','pianificazioneore.idCommessa','=','project.id') ->leftjoin('pianificazionemese','pianificazionemese.idCommessa','=','project.id') ->select('project.id as uid','project.name as nome','project.description as descrizione','project.estimated_start_date as data_inizio','project.status as stato','accounts.name as ragione_sociale','project_cstm.importo_c','project_cstm.npreventivo_c','pianificazioneore.*','project_cstm.settore_c','pianificazioneore.*') ->where('project.deleted',0) ->where('projects_accounts.deleted',0) ->whereIn('status',['Draft','apertamafatturata']) ->where('project_cstm.settore_c',Session::get('settori')) ->orderby('project.date_entered','DESC') ->get(); foreach($data as $item) { $item->acconti = $this->getAcconti($item->uid); $item->accontisi = $this->getAccontiSi($item->uid); $item->residuo = $item->acconti - $item->accontisi; $item->accontimese = DB::select ( DB::raw ( "Select MONTH(accco_acconti_cstm.scadenza_c) as mese,accco_acconti.importo from accco_acconti,accco_acconti_project_c,accco_acconti_cstm where accco_acconti_cstm.id_c = accco_acconti.id and accco_acconti.id = accco_acconti_project_c.accco_acconti_projectaccco_acconti_idb and accco_acconti.pagato = 'no' and accco_acconti_project_c.accco_acconti_projectproject_ida = '".$item->uid."' group by MONTH(accco_acconti_cstm.scadenza_c),accco_acconti.importo" ) ); $item->accontimesesi = DB::select ( DB::raw ( "Select MONTH(accco_acconti_cstm.scadenza_c) as mese,accco_acconti.importo from accco_acconti,accco_acconti_project_c,accco_acconti_cstm where accco_acconti_cstm.id_c = accco_acconti.id and accco_acconti.id = accco_acconti_project_c.accco_acconti_projectaccco_acconti_idb and accco_acconti.pagato = 'si' and accco_acconti_project_c.accco_acconti_projectproject_ida = '".$item->uid."' group by MONTH(accco_acconti_cstm.scadenza_c),accco_acconti.importo" ) ); $item->oremese = DB::select ( DB::raw ( "select mese, sum(ore) from pianificazioneoreutenti where idCommessa='".$item->uid."' GROUP by mese" ) ); } return $data; */ if ($request->ajax()) { $data = DB::table('project') ->join('projects_accounts','projects_accounts.project_id','=','project.id') ->join('project_cstm','project_cstm.id_c','=','project.id') ->join('accounts','accounts.id','=','projects_accounts.account_id') ->leftjoin('pianificazioneore','pianificazioneore.idCommessa','=','project.id') ->leftjoin('pianificazionemese','pianificazionemese.idCommessa','=','project.id') ->select('project.id as uid','project.name as nome','project.description as descrizione','project.estimated_start_date as data_inizio','project.status as stato','accounts.name as ragione_sociale','project_cstm.importo_c','project_cstm.npreventivo_c','pianificazioneore.*','project_cstm.settore_c','pianificazioneore.*') ->where('project.deleted',0) ->where('projects_accounts.deleted',0) ->whereIn('status',['Draft','apertamafatturata']) ->where('project_cstm.settore_c',$settori) ->orderby('project.date_entered','DESC') ->get(); foreach($data as $item) { $item->acconti = $this->getAcconti($item->uid); $item->accontisi = $this->getAccontiSi($item->uid); $item->residuo = $item->acconti - $item->accontisi; $item->accontimese = DB::select ( DB::raw ( "Select MONTH(accco_acconti_cstm.scadenza_c) as mese,accco_acconti.importo from accco_acconti,accco_acconti_project_c,accco_acconti_cstm where accco_acconti_cstm.id_c = accco_acconti.id and accco_acconti.id = accco_acconti_project_c.accco_acconti_projectaccco_acconti_idb and accco_acconti.pagato = 'no' and accco_acconti_project_c.accco_acconti_projectproject_ida = '".$item->uid."' group by MONTH(accco_acconti_cstm.scadenza_c),accco_acconti.importo" ) ); $item->accontimesesi = DB::select ( DB::raw ( "Select MONTH(accco_acconti_cstm.scadenza_c) as mese,accco_acconti.importo from accco_acconti,accco_acconti_project_c,accco_acconti_cstm where accco_acconti_cstm.id_c = accco_acconti.id and accco_acconti.id = accco_acconti_project_c.accco_acconti_projectaccco_acconti_idb and accco_acconti.pagato = 'si' and accco_acconti_project_c.accco_acconti_projectproject_ida = '".$item->uid."' group by MONTH(accco_acconti_cstm.scadenza_c),accco_acconti.importo" ) ); $item->oremese = DB::select ( DB::raw ( "select mese, sum(ore) as ore from pianificazioneoreutenti where idCommessa='".$item->uid."' GROUP by mese" ) ); } return Datatables::of($data) ->toJson(); } return view('datatable')->withPersone($persone)->withMesi($mesi)->withSettori($settori)->withCarico($carico_lavoro)->withOre($ore_settore); } public function getValue($idcommessa,$mese,$idutente) { return \App\pianficazioneutente::select('ore')->where('mese',$mese)->where('idUtente',$idutente)->where('idCommessa',$idcommessa)->first(); } public function getMese($idcommessa,$mese) { return \App\pianficazioneutente::where('mese',$mese)->where('idCommessa',$idcommessa)->sum('ore'); } public function getAcconti($id) { $totale_acconti = DB::select ( DB::raw ( "Select sum(importo) as somma from accco_acconti,accco_acconti_project_c where accco_acconti.id = accco_acconti_project_c.accco_acconti_projectaccco_acconti_idb and accco_acconti.pagato = 'no' and accco_acconti_project_c.accco_acconti_projectproject_ida = '".$id."'" ) ); return $totale_acconti[0]->somma; } public function getAccontiMese($id,$mese) { $acconti = DB::select ( DB::raw ( "Select accco_acconti_cstm.scadenza_c,accco_acconti.importo from accco_acconti,accco_acconti_project_c,accco_acconti_cstm where accco_acconti_cstm.id_c = accco_acconti.id and accco_acconti.id = accco_acconti_project_c.accco_acconti_projectaccco_acconti_idb and accco_acconti.pagato = 'no' and MONTH(accco_acconti_cstm.scadenza_c) ='".$mese."' and accco_acconti_project_c.accco_acconti_projectproject_ida = '".$id."'" ) ); return $acconti; } public function getAccontiSi($id) { $totale_acconti = DB::select ( DB::raw ( "Select sum(importo) as somma from accco_acconti,accco_acconti_project_c where accco_acconti.id = accco_acconti_project_c.accco_acconti_projectaccco_acconti_idb and accco_acconti.pagato = 'si' and accco_acconti_project_c.accco_acconti_projectproject_ida = '".$id."'" ) ); return $totale_acconti[0]->somma; } public function getAccontiMeseSi($id,$mese) { $acconti = DB::select ( DB::raw ( "Select accco_acconti_cstm.scadenza_c,accco_acconti.importo from accco_acconti,accco_acconti_project_c,accco_acconti_cstm where accco_acconti_cstm.id_c = accco_acconti.id and accco_acconti.pagato = 'si' and accco_acconti.id = accco_acconti_project_c.accco_acconti_projectaccco_acconti_idb and accco_acconti.pagato = 'no'and MONTH(accco_acconti_cstm.scadenza_c) ='".$mese."' and accco_acconti_project_c.accco_acconti_projectproject_ida = '".$id."'" ) ); return $acconti; } public static function caricoRimanente($id,$importo,$old) { $somma = \App\pianficazioneutente::where('idCommessa',$id)->sum('ore'); return $importo - $old - $somma; } public static function meseOre($key,$settore) { $utenti_t = [24,5,8,31,28,12]; $utenti_e = [33,34,1,2]; $utenti_a = [18,6,3]; $utenti_s = [13,23,21,20,19,17,14,11,30,32,35]; $utenti_f = [25,26,15]; switch ($settore) { case 1: return \App\pianficazioneutente::where('mese',$key)->wherein('idUtente',$utenti_s)->sum('ore'); break; case 2: return \App\pianficazioneutente::where('mese',$key)->wherein('idUtente',$utenti_t)->sum('ore'); break; case 3: return \App\pianficazioneutente::where('mese',$key)->wherein('idUtente',$utenti_e)->sum('ore'); break; case 4: return \App\pianficazioneutente::where('mese',$key)->wherein('idUtente',$utenti_a)->sum('ore'); break; case 5: return \App\pianficazioneutente::where('mese',$key)->wherein('idUtente',$utenti_f)->sum('ore'); break; } } public function rimanenze($uid, $mese) { $commessa = DB::table('project') ->join('projects_accounts','projects_accounts.project_id','=','project.id') ->join('project_cstm','project_cstm.id_c','=','project.id') ->join('accounts','accounts.id','=','projects_accounts.account_id') ->leftjoin('pianificazioneore','pianificazioneore.idCommessa','=','project.id') ->leftjoin('pianificazionemese','pianificazionemese.idCommessa','=','project.id') ->select('project.id as uid','project.name as nome','project.description as descrizione','project.estimated_start_date as data_inizio','project.status as stato','accounts.name as ragione_sociale','project_cstm.importo_c','project_cstm.npreventivo_c','pianificazioneore.*','project_cstm.settore_c','pianificazioneore.*') ->where('project.id',$uid) ->first(); $righe = \App\pianficazioneutente::select('ore')->where('idCommessa',$uid)->where('mese','<=',$mese)->sum('ore'); $ore = $commessa->importo_c - $commessa->carico_s_old - $righe; return $ore; } }