%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/pjc/app/Http/Controllers/
Upload File :
Create Path :
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;
    }






}

Zerion Mini Shell 1.0