bubofamily/app/Http/Controllers/MovimentiController.php

227 lines
7.7 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
//use Rap2hpoutre\FastExcel\FastExcel;
use Rap2hpoutre\FastExcel\FastExcel;
class MovimentiController extends Controller
{
// Gestione dei movimenti
public static function newMovimenti() {
$categorie=DB::table('categories')->orderBy('cat_name')->get();
$tags=DB::table('tags')->orderBy('tag_name')->get();
return view('conti.movimenti.new',[
'categorie'=>$categorie,
'tags'=>$tags,
]);
}
public static function listMovimenti(){
$categorie=DB::table('categories')->orderBy('cat_name')->get();
$tags=DB::table('tags')->orderBy('tag_name')->get();
$movimenti=DB::table('movimentis')
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
->join('tags','movimentis.mov_fk_tags','=','tags.id')
->select('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name')
->get();
return view('conti.movimenti.list',[
'categorie'=>$categorie,
'movimenti'=>$movimenti,
'tags'=>$tags
]);
}
public static function insMovimentiSpesa(Request $request)
{
DB::table('movimentis')->insert(
[
'mov_data'=>$request['mov_data'],
'mov_fk_categoria'=>$request['mov_fk_categoria'],
'mov_descrizione'=>$request['mov_descrizione'],
'mov_importo'=>'-'.$request['mov_importo'],
'mov_fk_tags'=>$request['mov_fk_tags'],
'mov_inserito_da'=>$request['userid'],
]);
$mov=DB::table('movimentis')
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
->join('tags','movimentis.mov_fk_tags','=','tags.id')
->select('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name')
->get();
$categorie=DB::table('categories')
->orderBy('cat_name')
->get();
$tags=DB::table('tags')
->orderBy('tag_name')
->get();
return view('conti.movimenti.list',
[
'categorie'=> $categorie,
'movimenti'=> $mov,
'tags'=>$tags,
]);
/* return dd($mov);*/
}
public static function insMovimentiEntrata(Request $request)
{
DB::table('movimentis')->insert(
[
'mov_data'=>$request['mov_data'],
'mov_fk_categoria'=>$request['mov_fk_categoria'],
'mov_descrizione'=>$request['mov_descrizione'],
'mov_importo'=>$request['mov_importo'],
'mov_fk_tags'=>$request['mov_fk_tags'],
'mov_inserito_da'=>$request['userid'],
]);
$mov=DB::table('movimentis')
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
->join('tags','movimentis.mov_fk_tags','=','tags.id')
->select('movimentis.id','mov_data','mov_descrizione','mov_importo','cat_name','tag_name')
->get();
$categorie=DB::table('categories')
->orderBy('cat_name')
->get();
$tags=DB::table('tags')
->orderBy('tag_name')
->get();
return view('conti.movimenti.list',
[
'categorie'=> $categorie,
'movimenti'=> $mov,
'tags'=>$tags,
]);
/* return dd($mov);*/
}
public function exportMovimenti()
{
$movimenti = DB::table('movimentis')
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
->join('tags','movimentis.mov_fk_tags','=','tags.id')
->selectRaw('mov_data AS Data,cat_name AS Categoria,tag_name AS Tag,mov_descrizione AS Descrizione,mov_importo AS Importo')
->orderBy('Data','asc')
->get();
foreach ($movimenti as $movimento)
{
$lista[]=[
'Data'=>$movimento->Data,
'Categoria'=>$movimento->Categoria,
'Tag'=>$movimento->Tag,
'Descrizione'=>$movimento->Descrizione,
'Importo'=>$movimento->Importo
];
}
return (new FastExcel($lista))->download('movimenti_al_'.date('d-m-Y').'.ods');
// return dd($movimenti);
}
public function resocontoMovimenti(Request $request)
{
// SELECT Sum(movimentis.mov_importo) as resoconto, categories.cat_name FROM movimentis JOIN categories ON movimentis.mov_fk_categoria = categories.id GROUP BY categories.id;
// aggiunto per definizione del periodo di resoconto.
if(!$request['Year'])
{
$year=date('Y');
}
else {
$year=$request['Year'];
}
if (!$request['Month'])
{
$month=date('m');
}
else {
$month=$request['Month'];
}
$reportSpesa = DB::table('movimentis')
->selectRaw('ABS(Sum(movimentis.mov_importo)) as resoconto, categories.cat_name')
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
->where('mov_importo','<',0)
->whereYear('mov_data',$year)
->whereMonth('mov_data',$month)
->groupBy('cat_name')
->get();
$reportEntrate = DB::table('movimentis')
->selectRaw('ABS(Sum(movimentis.mov_importo)) as resoconto, categories.cat_name')
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
->where('mov_importo','>',0)
->whereYear('mov_data',$year)
->whereMonth('mov_data',$month)
->groupBy('cat_name')
->get();
return view('components.charts',[
'dataSpesa'=>$reportSpesa,
'dataEntrate'=>$reportEntrate,
]);
}
public function updateMovimenti(Request $request)
{
$id=$request['id'];
$mov=DB::table('movimentis')
->join('categories','movimentis.mov_fk_categoria','=','categories.id')
->join('tags','movimentis.mov_fk_tags','=','tags.id')
->where('movimentis.id','=',$id)
->get();
$categorie=DB::table('categories')
->orderBy('cat_name')
->get();
$tags=DB::table('tags')
->orderBy('tag_name')
->get();
return view('conti.movimenti.update',
[
'categorie'=> $categorie,
'movimenti'=> $mov,
'tags'=>$tags,
]);
}
public function updatePostMovimenti(Request $request)
{
DB::table('movimentis')
->where('id','=', $request['id'])
->update([
'mov_data' => $request['mov_data'],
'mov_fk_categoria'=>$request['mov_fk_categoria'],
'mov_descrizione'=>$request['mov_descrizione'],
'mov_importo'=>$request['mov_importo'],
'mov_fk_tags'=>$request['mov_fk_tags'],
'mov_inserito_da'=>$request['userid'],
]);
return redirect(route('movimenti'));
}
public function deleteMovimenti(Request $request)
{
DB::table('movimentis')
->where('id','=', $request['id'])
->delete();
return redirect(route('movimenti'));
}
public function apiList()
{
$movments = DB::table('movimentis')
->orderBy('mov_data','desc')
->get();
return json_encode($movments);
}
}