%PDF- %PDF-
| Direktori : /var/www/pjc/app/Http/Controllers/ |
| Current File : /var/www/pjc/app/Http/Controllers/gestioneOre.php |
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Response;
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 Illuminate\Http\Request;
class gestioneOre extends Controller
{
public function removep($id, $mese, $anno)
{
DB::table('planning')->where('id', $id)->delete();
return Redirect::action('Planning@create', [$mese,$anno]);
}
public function login()
{
return view('login');
}
public function loginProcess(Request $request)
{
$data= $request->all();
$user=DB::table('utenti')->where('cognome', $data['user'])->where('attivo',1)->get();
$ok=DB::table('utenti')->where('cognome', $data['user'])->where('attivo',1)->count();
if ($ok) {
Session::put('users', $data['user']);
Session::put('settore', $user[0]->settore);
Session::put('idSettore', $user[0]->idsettore);
Session::put('idUtente', $user[0]->id);
return Redirect::action('gestioneOre@ore', [$user[0]->id]);
} else {
return view('login');
}
}
public function delete($id)
{
if (Session::get('idUtente')!=27) {
$check=DB::table('ore')->where('id', $id)->where('idUtente', Session::get('idUtente'))->count();
if ($check) {
DB::table('ore')
->where('id', $id)
->update(array('canc' => 1));
return Redirect::back()->with('message', 'Ora eliminata');
} else {
return Redirect::back()->with('message', 'Non puoi eliminare le ore non tue');
}
} else {
DB::table('ore')
->where('id', $id)
->update(array('canc' => 1));
return Redirect::back()->with('message', 'Ora eliminata');
}
}
public function updateOre($id)
{
$commesseAppoggio = DB::table('project')
->join('projects_accounts', 'projects_accounts.project_id', '=', 'project.id')
->join('project_cstm', 'project_cstm.id_c', '=', 'project.id')
->select('project.id', 'name', 'description')
->where('project.deleted', 0)
->where('projects_accounts.deleted', 0)
//->where ( 'status', 'Draft' )
->get();
foreach ($commesseAppoggio as $item) {
$commesseArray[$item->name]=$item->name." - ".$item->description;
}
$ore=DB::table('ore')
->where('id', $id)
->get();
if (Session::get('idUtente')!=22) {
$check=DB::table('ore')->where('id', $id)->where('idUtente', Session::get('idUtente'))->count();
if ($check) {
} else {
return Redirect::back()->with('message', 'Non puoi modificare le ore non tue');
}
}
return view('gestioneOre.update')->withDati($ore)->withCommessearray($commesseArray);
}
public function saveUpdate(Request $request)
{
$data=$request->all();
DB::table('ore')
->where('id', $data['id'])
->update($data);
return Redirect::action('gestioneOre@vcommessa', [$data['commessa']]);
}
public function logout()
{
Session::flush();
return Redirect::action('gestioneOre@login');
}
public function commesse($id = 0)
{
$utente=Session::get('idUtente');
if (!isset($utente)) {
return Redirect::action('gestioneOre@login');
}
// $account=DB::table('accounts')
// ->select('id','name')
// ->where('deleted',0)
// ->get();
// foreach ($account as $item) {
// $accounts[$item->id]=$item->name;
// }
// if($id <> 0)
// {
// $commesse=DB::table('project')
// ->join('projects_accounts','projects_accounts.project_id','=','project.id')
// ->join('project_cstm','project_cstm.id_c','=','project.id')
// ->select('project.id','name','description','estimated_start_date','status','projects_accounts.account_id','project_cstm.importo_c')
// ->where('project.deleted',0)
// ->where('projects_accounts.deleted',0)
// ->where('project_cstm.settore_c', $id)
// //->where('estimated_start_date' ,'>', '2014-01-01')
// ->whereIn('status',['Draft','apertamafatturata'])
// ->take(400)
// ->get();
// }
// else
// {
// $commesse=DB::table('project')
// ->join('projects_accounts','projects_accounts.project_id','=','project.id')
// ->join('project_cstm','project_cstm.id_c','=','project.id')
// ->select('project.id','name','description','estimated_start_date','status','projects_accounts.account_id','project_cstm.importo_c')
// ->where('project.deleted',0)
// ->where('projects_accounts.deleted',0)
//
// ->whereIn('status',['Draft','apertamafatturata'])
// ->take(100)
// ->get();
// }
$dati['id']=1;
// $dati['commesse'] = $commesse;
// $dati['accounts'] = $accounts;
if ($id == 0) {
$dati['id'] = Session::get('idSettore');
} else {
$dati['id'] = $id;
}
return view('gestioneOre.commesse')->withDati($dati);
}
public function commesseSubList(Request $request)
{
$tabella = "commesse_aperte";
$id = $request->get('id_type') == 0 ? null : $request->get('id_type');
switch ($id) {
case 1:
$tabella = "commesse_aperte";
break;
case 2:
$tabella = "commesse_aperte";
break;
case 3:
$tabella = "commesse_aperte";
break;
case 4:
$tabella = "commesse_aperte";
break;
case 5:
$tabella = "commesse_aperte";
break;
case 6:
$tabella = "commesse_aperte";
break;
case 7:
$tabella = "commesse_aperte";
break;
case 8:
$tabella = "commesse_aperte";
break;
case 9:
$tabella = "commesse_aperte";
break;
case 10:
$tabella = "commesse_aperte";
break;
case 11:
$tabella = "commesse_aperte";
break;
case 12:
$tabella = "commesse_chiuse";
break;
case 13:
$tabella = "commesse_tutte";
break;
}
$commesse = DB::table($tabella);
$id = $request->get('id_type') == 0 ? null : $request->get('id_type');
if ($id) {
if (($id <> 12) and ($id <> 13)) {
$commesse->where('settore_c', $id);
}
}
$totalcommesse = clone $commesse;
$search_string = $request->get('search')['value'];
if ($search_string) {
$commesse = DB::table($tabella)
->where('nome', 'like', '%'.$search_string.'%')
->orWhere('ragione_sociale', 'like', '%'.$search_string.'%')
->orWhere('descrizione', 'like', '%'.$search_string.'%');
}
$enumCol = array('nome', 'ragione_sociale', 'descrizione', 'data_inizio', 'stato','ore','completato');
if ($request->get('order')[0]['column'] == 6) {
$commesse->orderByRaw("CAST(".$enumCol[ $request->get('order')[0]['column'] ] ." as UNSIGNED)".$request->get('order')[0]['dir']);
} else {
$commesse->orderBy($enumCol[ $request->get('order')[0]['column'] ], $request->get('order')[0]['dir']);
}
$allcommesse = clone $commesse;
$subcommesse = clone $commesse;
$subcommesse->offset($request->get('start'))->take($request->get('length'));
$data = array();
$stato = "";
foreach ($subcommesse->get() as $item) {
if ($item->stato == 'Draft') {
$stato = "Aperta";
}
if ($item->stato == 'apertamafatturata') {
$stato = "Aperta ma fatturata";
}
$data[] = array(
'<a href="' . action('gestioneOre@vcommessa', $item->nome) . '" target="_blank">' . $item->nome . '</a>',
$item->ragione_sociale,
$item->descrizione,
$item->data_inizio,
$stato,
Utility::totOreDo($item->nome) . '/' . Utility::totOre($item->importo_c, '62.5'),
'<div class="progress">'
. '<div class="progress-bar ' . $item->completato . ' progress-bar-striped '.Utility::statoPerc($item->completato).'" role="progressbar" aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width: ' . Utility::percentuale(Utility::totOreDo($item->nome), Utility::totOre($item->importo_c, '62.5')) . '%">'
. '<p class="text-left">' . $item->completato . '% </p>'
. '</div>'
. '</div>'
);
}
$response = [
'draw' => intval($request->get('draw')),
'recordsTotal' => intval($totalcommesse->count()),
'recordsFiltered' => count($allcommesse->get()),
'data' => $data
];
return \Response::json($response, 200, []);
}
public function utenti()
{
return view('gestioneOre.utenti');
}
public function statistiche()
{
return view('gestioneOre.statistiche');
}
public function add($id, $planning = 0, $mese = 0, $anno = 0)
{
$utente=Session::get('idUtente');
if (!isset($utente)) {
return Redirect::action('gestioneOre@login');
}
$riga = DB::table('planning')->where('id', $id)->first();
return view('gestioneOre.add')->withDati($riga->id_commessa)->withPlanning($planning)->withMese($mese)->withAnno($anno)->withRiga($riga);
}
public function addOre($id = 0, Request $request)
{
$data=$request->all();
$utente=DB::table('utenti')->where('id', $data['idUtente'])->first();
$data['k'] = $utente->k;
$commessa=DB::table('project')
->join('projects_accounts', 'projects_accounts.project_id', '=', 'project.id')
->join('project_cstm', 'project_cstm.id_c', '=', 'project.id')
->select('project.id', 'name', 'description', 'estimated_start_date', 'status', 'projects_accounts.account_id', 'project_cstm.importo_c')
->where('project.deleted', 0)
->where('projects_accounts.deleted', 0)
->where('name', $data['commessa'])
->get();
$ore=Utility::totOre($commessa[0]->importo_c, 62.5);
//FINE CONTROLLO
$idriga=$data['idriga'];
$programmata=$data['programmata'];
$mese=$data['mese'];
$anno = $data['anno'];
unset($data['planning']);
unset($data['mese']);
unset($data['anno']);
$ex=DB::table('planning')->where('id', $idriga)->first();
$k=DB::table('utenti')->where('id', $ex->id_tecnico)->first();
unset($data['programmata']);
unset($data['idriga']);
// if($programmata <> 0)
// {
$valore=Utility::convertiore($data['tempo']);
$valore_vecchio = Utility::convertiore($ex->fatte);
DB::table('planning')->where('id', $idriga)->update(array('fatte' => Utility::convertioretime($valore + $valore_vecchio)));
$data['idUtente']=$ex->id_tecnico;
$data['oreNette']= Utility::convertioretime(Utility::convertiore($data['tempo'])*$k->k);
$data['utente']=$ex->id_tecnico;
//DB::table('ore')->insertGetId($data);
// }
$oreNette = Utility::convertiore($data['tempo']) * $utente->k;
$data['oreNette']= Utility::convertioretime(Utility::convertiore($data['tempo'])*$k->k);
$id = DB::table('ore')->insertGetId($data);
if ($programmata <> 0) {
return Redirect::action('gestioneOre@ore', [$ex->id_tecnico])->with('message', 'Ore inserite correttamente');
}
if ($id==0) {
return Redirect::action('gestioneOre@commesse')->with('message', 'Ore inserite correttamente');
} else {
return Redirect::action('gestioneOre@vcommessa', [$data['commessa']])->with('message', 'Ore inserite correttamente');
}
}
public function vcommessa($id)
{
$utente=Session::get('idUtente');
if (!isset($utente)) {
return Redirect::action('gestioneOre@login');
}
$commessa=DB::table('project')
->join('projects_accounts', 'projects_accounts.project_id', '=', 'project.id')
->join('project_cstm', 'project_cstm.id_c', '=', 'project.id')
->select('project.id', 'name', 'description', 'estimated_start_date', 'status', 'projects_accounts.account_id', 'project_cstm.importo_c', 'project_cstm.tipo_di_pagamento_c as tipoPagamento', 'project.status')
->where('project.deleted', 0)
->where('projects_accounts.deleted', 0)
->where('name', $id)
->get();
$ore=DB::table('ore')
->join('utenti', 'utenti.id', '=', 'ore.idUtente')
->select('ore.id', 'ore.idUtente', 'ore.data', 'ore.commessa', 'ore.tempo', 'ore.descrizione', 'ore.utente', 'utenti.settore', 'utenti.cognome', 'ore.oreNette')
->where('commessa', $id)
->where('canc', 0)
->get();
$somma = DB::select(DB::raw("select sec_to_time(sum(time_to_sec(tempo))) as somma from ore where ore.canc=0 and commessa='".$id."'"));
$saldo = DB::select(DB::raw("select sum(importo) as somma from movimenti where commessa='".$id."'"));
$dati['stato']=array('Draft'=>'Aperta','In Review'=>'Chiusa e fatturata','Published'=>'Chiusa in attesa di fattura','fallimento'=>'Fallimento','in_sospeso'=>'In sospeso','da_ripresentare'=>'Da ripresentare anno 2016','fatturatanolavorata'=>'Fatturata non lavorata');
$dati['id']=$id;
$dati['ore']=$ore;
$dati['somma']=$somma;
$dati['totOreDo']=Utility::totOreDo($commessa[0]->name);
$dati['totOre']=Utility::totOre($commessa[0]->importo_c, '62.5');
$dati['movimenti']=DB::table('movimenti')->where('commessa', $id)->get();
$dati['commessa']=$commessa;
$dati['tipologia']=array(2 => 'Acconto', 1 => 'Saldo');
$dati['dato']=$saldo[0]->somma;
return view('gestioneOre.vcommessa')->withdati($dati)->withCommessa($commessa);
}
public function sommario()
{
$utenti=DB::table('utenti')->where('attivo', 1)->get();
$giorni=30;
for ($i=1;$i<$giorni;$i++) {
$date[]=date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-$i, date("Y")));
}
foreach ($utenti as $item) {
for ($i=1;$i<$giorni;$i++) {
$oreFatte=Utility::getOreUtente(date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-$i, date("Y"))), $item->id);
$ore[$item->cognome][date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-$i, date("Y")))]=$oreFatte;
$id[$item->cognome]=$item->id;
}
}
$dati['id']=$id;
$dati['utenti']=$utenti;
$dati['ore']=$ore;
$dati['date']=$date;
return view('gestioneOre.sommario')->withdati($dati);
}
public function utente($id)
{
if ((Session::get('idUtente')==$id)or(Session::get('idUtente')==22)or(Session::get('idUtente')==27)) {
$utente=DB::table('utenti')->where('id', $id)->get();
$ore=DB::table('ore')
->select('ore.id', 'ore.commessa', 'ore.descrizione', 'ore.ragione', 'ore.data', 'ore.tempo', 'ore.idUtente', 'ore.oreNette')
->join('project', 'project.name', '=', 'ore.commessa')
->where('idUtente', $id)->orderBy('data', 'desc')
->where('canc', 0)
->orderBy('data', 'ASC')
->get();
$account=DB::table('accounts')
->select('id', 'name')
->where('deleted', 0)
->get();
foreach ($account as $item) {
$accounts[$item->id]=$item->name;
}
for ($i=0; $i < 8; $i++) {
$giorni[date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-$i, date("Y")))]=Utility::totOreDoUtente($id, date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-$i, date("Y"))));
}
$dati['utente']=$utente;
$dati['ore']=$ore;
$dati['accounts']=$accounts;
$dati['giorni']=$giorni;
return view('gestioneOre.vutente')->withdati($dati);
} else {
return Redirect::back()->with('message', 'Non puoi vedere questo utente');
}
}
public function utility()
{
/* $ore=DB::table('ore')
->select('id','tempo1')
->get();
foreach ($ore as $item)
{
$tempo=$item->tempo1;
if(count($tempo) == 1)
{
$tempo="0".$tempo.":00:00";
}
if(count($tempo) == 2)
{
$tempo=$tempo.":00:00";
}
if(count($tempo) == 4)
{
$tempo="0".$tempo.":00";
}
if(count($tempo) == 5)
{
$tempo=$tempo.":00";
}
DB::table('ore')
->where('id', $item->id)
->update(array('tempo' => $tempo));
} */
/*
$ore=DB::table('ore')
->select('id','data2')
->get();
foreach ($ore as $item)
{
$data=$item->data2;
$appoggio=explode("/", $data);
$dataOk="20".$appoggio[2]."-".$appoggio[1]."-".$appoggio[0];
DB::table('ore')
->where('id', $item->id)
->update(array('data' => $dataOk));
}
*/
/* $utenti=DB::table('utenti')
->select('cognome','id')
->get();
foreach ($utenti as $item ) {
DB::table('ore')
->where('utente', $item->cognome)
->update(array('idUtente' => $item->id));
} */
/*$commesse=DB::table('project')
->join('projects_accounts','projects_accounts.project_id','=','project.id')
->join('project_cstm','project_cstm.id_c','=','project.id')
->select('project.id','name','description','estimated_start_date','status','projects_accounts.account_id','project_cstm.importo_c')
->where('project.deleted',0)
->where('projects_accounts.deleted',0)
->get();
foreach ($commesse as $item) {
$totOreDo=Utility::totOreDo($item->name);
$totOre=Utility::totOre($item->importo_c,62.5);
$perc=Utility::percentuale($totOreDo,$totOre);
if ($perc !=0)
{
}
else
{
$perc=0;
}
if ($totOreDo !=0)
{
}
else
{
$totOreDo=0;
}
$id = DB::table('calc')->insertGetId(array('commessa'=> $item->name, 'totore' => $totOre,'sommaore' => $totOreDo,'perc' => $perc));
} */
DB::table('test')->insertGetId(array('data'=> 'ciao'));
}
public function getMail()
{
if (Utility::giornoData(date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-1))) == 'Dom') {
$i=2;
} else {
$i=1;
}
$send=array();
$utenti=DB::table('utenti')->where('attivo', 1)->get();
foreach ($utenti as $item) {
$ore=Utility::totOreDoutente($item->id, date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-$i)));
if ($ore <= 7) {
Mail::send('gestioneOre.mail', array('ore' => $ore ,'data' => date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")-1))), function ($message) use ($item) {
$message->to('info@sermatech.it', $item->cognome)->cc('s.malagoli@sermatech.it')->subject('Controllo ore');
});
$send[]=$item->cognome;
}
}
return $send;
}
public function ore($idutente, $mese = 0, $anno = 0)
{
$oreAssegnate = DB::table('planning')->where('id_tecnico', $idutente)->orderBy('mese', 'asc')->get();
$commesseAppoggio = DB::table('project')
->join('projects_accounts', 'projects_accounts.project_id', '=', 'project.id')
->join('project_cstm', 'project_cstm.id_c', '=', 'project.id')
->select('project.id', 'name', 'description', 'estimated_start_date', 'status', 'projects_accounts.account_id', 'project_cstm.importo_c')
->where('project.deleted', 0)
->where('projects_accounts.deleted', 0)
//->where ( 'status', 'Draft' )
->get();
$totaleCommesse=0;
foreach ($commesseAppoggio as $key) {
$totaleCommesse =+ $key->importo_c;
$commesse [$key->name] = $key;
}
$account = DB::table('accounts')->select('id', 'name')->where('deleted', 0)->get();
foreach ($account as $item) {
$accounts [$item->id] = $item->name;
}
$mesi = array(
'-',
'Gennaio',
'Febbraio',
'Marzo',
'Aprile',
'Maggio',
'Giugno',
'Luglio',
'Agosto',
'Settembre',
'Ottobre',
'Novembre',
'Dicembre'
);
//return $accounts;
return view('gestioneOre.oreassegnate')
->withPlanning($oreAssegnate)
->withCommesse($commesse)
->withAccounts($accounts)
->withMesi($mesi);
}
public function summary($settore)
{
$importoTotale=0; //Importo di tutte le commesse del settore
$importoCarico=0; //Importo di tutte le ore assegnate per 62.5
$importoTotale = DB::table('project')
->join('projects_accounts', 'projects_accounts.project_id', '=', 'project.id')
->join('project_cstm', 'project_cstm.id_c', '=', 'project.id')
->select('project.id', 'name', 'description', 'estimated_start_date', 'status', 'projects_accounts.account_id', 'project_cstm.importo_c')
->where('project.deleted', 0)
->where('projects_accounts.deleted', 0)
//->where ( 'status', 'Draft' )
->where('settore_c', $settore)
->sum('importo_c');
$oreAssegnate = DB::select(DB::raw("select sum(carico) as somma,mese from planning group by mese"));
foreach ($oreAssegnate as $value) {
$oreMeseCarico[$value->mese] = $value->somma;
}
return $oreMeseCarico;
}
public function addoreglobal($id = 0)
{
$utenti=DB::table('utenti')->where('attivo', 1)->get();
foreach ($utenti as $item) {
$utentiArray[$item->id]=$item->cognome;
}
$commesseAppoggio = DB::table('project')
// ->leftjoin('projects_accounts', 'projects_accounts.project_id', '=', 'project.id')
// ->leftjoin('project_cstm', 'project_cstm.id_c', '=', 'project.id')
->select('project.id', 'name', 'description')
->where('project.deleted', 0)
->get();
foreach ($commesseAppoggio as $item) {
$commesseArray[$item->name]=$item->name." - ".htmlspecialchars(substr($item->description, 0, 50), ENT_QUOTES);
}
return view('gestioneOre.addglobal')->withUtenti($utentiArray)->withCommesse($commesseArray)->withTecnico($id);
}
public function saveoreglobal(Request $request)
{
$data=$request->all();
$utente=DB::table('utenti')->where('id', $data['idUtente'])->first();
$data['k'] = $utente->k;
$data['oreNette']=Utility::calcolak($data['idUtente'], $data['tempo']);
//DEVO CONTROLLARE CHE L'INSERIMENTO DELLE ORE NON FACCIA SUPERARE IL 120%
$somma = Utility::totOreDo($data['commessa']);
$commessa=DB::table('project')
->join('projects_accounts', 'projects_accounts.project_id', '=', 'project.id')
->join('project_cstm', 'project_cstm.id_c', '=', 'project.id')
->select('project.id', 'name', 'description', 'estimated_start_date', 'status', 'projects_accounts.account_id', 'project_cstm.importo_c')
->where('project.deleted', 0)
->where('projects_accounts.deleted', 0)
->where('name', $data['commessa'])
->get();
$ore=Utility::totOre($commessa[0]->importo_c, 62.5);
//FINE CONTROLLO
$id = DB::table('ore')->insertGetId($data);
return Redirect::action('gestioneOre@utente', [$data['idUtente']])->with('message', 'Ore inserite correttamente');
}
public function calcolak()
{
$kutenti = DB::table('utenti')->get();
foreach ($kutenti as $item) {
$k[$item->id]=$item->k;
}
$ore = DB::table('ore')->select('id', 'tempo', 'idUtente')->where('canc', 0)->get();
foreach ($ore as $item) {
/*DB::table('ore1')
->where('id', $item->id)
->update(array('tempo' => $item->tempo/$k[$item->idUtente],'k' => $k[$item->idUtente]));*/
$parsed = date_parse($item->tempo);
//return $parsed;
$seconds= $parsed['hour'] * 3600 + $parsed['minute'] * 60 + $parsed['second'];
$tempo = $seconds * $k[$item->idUtente]; // esempio (in secondi)
$secondi = $tempo % 60;
$tempo = ($tempo - $secondi) / 60; // in minuti
$minuti = $tempo % 60;
$tempo = ($tempo - $minuti) / 60; // in ore
$ore = $tempo % 24;
if ($ore == 0) {
$ore = "00";
}
if ($minuti == 0) {
$minuti = "00";
}
$tempoConvert="$ore:$minuti:00";
$tempi[$item->id]=$item->tempo."-".$tempoConvert;
DB::table('ore')
->where('id', $item->id)
->update(array('k'=> $k[$item->idUtente],'oreNette'=> $tempoConvert ));
}
return $tempi;
}
public function addmovimento(Request $request)
{
DB::table('movimenti')->insertGetId($request->all());
return Redirect::action('gestioneOre@vcommessa', [$request->get('commessa')]);
}
}