$categorie, 'tags'=>$tags, ]); } public static function listMovimenti(){ $categorie=Categorie::list(); $tags=tag::getList(); /* Query per visualizzare anche il totale dei documenti presenti per il record */ $movimenti=Movimenti::getList(); return view('conti.movimenti.list',[ 'categorie'=>$categorie, 'movimenti'=>$movimenti, 'tags'=>$tags ]); } public static function dashboard() { /*$bilancio=Movimenti::getSaldo(date('Y'));*/ $entrate=Movimenti::getEntrate(date('Y')); $uscite=Movimenti::getUscite(date('Y')); $saldo=Movimenti::getSaldoTot(); $mieiTasks=Task::getTaskAssignedToUser(Auth::id()); // $TasksAssegnati=Task::getTaskAssignedByUser(Auth::id()); // $avvisi=Avviso::getAvvisi(); $avvisi=Avviso::getActualAvvisi(); return view('layouts.dashboard',[ 'entrate'=>$entrate, 'uscite'=>$uscite, 'saldo'=>$saldo, 'mieitask' => $mieiTasks, // 'assegnati' => $TasksAssegnati, 'avvisi'=>$avvisi, ]); } public static function insMovimentiSpesa(Request $request) { // dd($request); $validated=$request->validate([ 'mov_data'=>'required', 'mov_importo'=>'required | numeric' , ]); Movimenti::insSpesa($request); $mov=Movimenti::getList(); $categorie=Categorie::listSpesa(); $tags=tag::getList(); return view('conti.movimenti.list', [ 'categorie'=> $categorie, 'movimenti'=> $mov, 'tags'=>$tags, ]); /* return dd($mov);*/ } public static function insMovimentiEntrata(Request $request) { $validated=$request->validate([ 'mov_data'=>'required', 'mov_importo'=>'required | numeric' , ]); Movimenti::insEntrata($request); $mov=Movimenti::getList(); $categorie=Categorie::listEntrata(); $tags=tag::getList(); return view('conti.movimenti.list', [ 'categorie'=> $categorie, 'movimenti'=> $mov, 'tags'=>$tags, ]); /* return dd($mov);*/ } public function exportMovimenti() { $movimenti = Movimenti::export(); foreach ($movimenti as $movimento) { $lista[]=[ 'Data'=> date_format(date_create($movimento->Data),'d/m/Y'), 'Categoria'=>$movimento->Categoria, 'Tag'=>$movimento->Tag, 'Descrizione'=>$movimento->Descrizione, 'Importo'=>$movimento->Importo, 'Conto'=>$movimento->Conto, ]; } return (new FastExcel($lista))->download('movimenti_al_'.date('d-m-Y').'.xls'); // return dd($movimenti); } public function resocontoMovimenti(Request $request) { if(!$request['Year']) { $year=date('Y'); } else { $year=$request['Year']; } if (!$request['Month']) { $month=date('m'); } else { $month=$request['Month']; } $reportSpesa = Movimenti::reportSpesa($year, $month); $reportEntrate = Movimenti::reportEntrate($year,$month); return view('components.charts',[ 'dataSpesa'=>$reportSpesa, 'dataEntrate'=>$reportEntrate, ]); } public function updatePostMovimenti(Request $request) { Movimenti::updateMovimenti($request); // return redirect()->back(); return view('conti.movimenti.list', [ 'movimenti'=> Movimenti::getList(), ]); } public function deleteMovimenti(Request $request) { Movimenti::deleteMovimento($request['id']); return redirect('/admin/movimenti'); } public function girocontoPost(Request $request) { Movimenti::giroconto($request); return redirect('/admin/movimenti'); } public function giroconto() { $categorie=Categorie::list(); return view('conti.giroconto.form',[ 'categories'=>$categorie, 'contos'=>Conto::all(), ]); } public function listMovPerCateg(Request $request) { if($request['year']) { $anno=$request['year']; } else { $anno=date('Y'); } $mov=Movimenti::listByCatMonth($request['month'], $request['cat'],$anno); return view('conti.movimenti.list', [ 'movimenti'=> $mov, ]); } public function listMovByCat(Request $request) { $mov=Movimenti::listByCategory($request['cat']); return view('conti.movimenti.list', [ 'movimenti'=> $mov, ]); } public function reportCategorieAnno($anno = 0) { if ($anno <= 1970) { $anno = date('Y'); } $mesi=['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre']; $categorie=Categorie::list(); foreach ($categorie as $categoria) { $id=$categoria->id; $ncategoria=$categoria->cat_name; for ($i=1;$i<=12;$i++) { $movrow=DB::table('movimentis') ->whereMonth('mov_data','=',$i) ->whereYear('mov_data','=',$anno) ->where('mov_fk_categoria','=',$id) ->sum('mov_importo'); $coll[]=$movrow; $collx[]=$movrow; } $totale[]=array_sum($collx); unset($collx); } /*dd($totale);*/ $anni=Movimenti::getYearsFromMovimenti(); // dd($anni); return view('conti.report.catanno',[ 'categorie'=>$categorie, 'mesi'=>$mesi, 'matrice'=>array_chunk($coll, 12), 'totale'=>$totale, 'anno'=>$anno, 'sel_anni'=>$anni, ]); } public function reportCategorieAnnoXLS($anno = 0) { if ($anno <= 1970) { $anno = date('Y'); } $intestazione=['Categoria','Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre']; $categorie=DB::table('categories')->orderBy('cat_name')->get(); foreach ($categorie as $categoria) { $id=$categoria->id; $ncategoria=$categoria->cat_name; for ($i=1;$i<=12;$i++) { $movrow=DB::table('movimentis') ->whereMonth('mov_data','=',$i) ->whereYear('mov_data','=',$anno) ->where('mov_fk_categoria','=',$id) ->sum('mov_importo'); $coll[] = $movrow; } $row[]=array_combine($intestazione,array_merge(array($ncategoria),$coll)); unset($coll); } return (new FastExcel($row))->download('report_al_'.date('d-m-Y').'.xls'); } public function filterByTag(Request $tag) { $mov=Movimenti::getByTag($tag['tag']); return view('conti.movimenti.list', [ 'movimenti'=> $mov, ]); } public function apiList() { $movments = Movimenti::getList(); return json_encode($movments); } private function dateFormat($type,$string) { if($type) { list($year,$month,$day) = explode('-',$string); return $day.'/'.$month.'/'.$year; } else { list($day,$month,$year) =explode('/',$string); return $year.'-'.$month.'-'.$day; } } public function importEC_ING(Request $request) { if ($request->hasFile('filename')) { $filename=$request->file('filename')->store(); Movimenti::importEstrattoIng($filename); return redirect(Route('movimenti')); } else { return 'Nessun File trovato'; } } public function importEC_CR(Request $request) { if ($request->hasFile('filename')) { $filename=$request->file('filename')->store(); Movimenti::importEstrattoCR($filename); return redirect(Route('movimenti')); } else { return 'Nessun File trovato'; } } public function importGenericCsv(Request $request) { if ($request->hasFile('filename')) { $filename=$request->file('filename')->store(); $csv_headers=Movimenti::retrieveHeaders($filename); $db_fields=Movimenti::getDbFields(); return view('conti.importGeneric',['csv'=>$csv_headers,'db'=>$db_fields,'filename'=>$filename]); } else { return 'Nessun File trovato'; } } public function importmappedCsv(Request $request) { $this->prepareMapping($request['mapping']); $filename = Storage::path($request->filename); (new FastExcel)->configureCsv(';')->import($filename, function($line) { $data = $this->mapCsvLineToDb($line); // dd($data); if (isset($data['mov_data'])) { Movimenti::create($data); } }); return redirect(Route('movimenti')); } /** * Prepara la mappatura tra i campi CSV e i campi DB */ private function prepareMapping($mapping) { foreach ($mapping as $key => $value) { if ($value != null) { $this->map[$key] = $value; } } } /** * Mappa una riga del CSV ai campi del database */ private function mapCsvLineToDb($line) { if (isset($line[$this->map['mov_data']])) { $data = [ 'mov_data' => $this->parseDate($line[$this->map['mov_data']]), 'mov_descrizione' => $line[$this->map['mov_descrizione']] ?? null, 'mov_importo_dare' => Movimenti::cleanImporto($line[$this->map['mov_importo_dare']]?? null) , 'mov_importo_avere' => Movimenti::cleanImporto($line[$this->map['mov_importo_avere']] ?? null), 'mov_fk_categoria' => Movimenti::setCategoriesFromCsv($line[$this->map['mov_descrizione']] ?? ''), 'mov_fk_tags' => 1, 'mov_inserito_da' => Auth::id(), 'conto_id_da' => 1, 'conto_id_a' => 1, ]; return $data; } return null; // Se non c'รจ la data, non importa la riga } /** * Converte la data dal formato d/m/Y a Y-m-d */ private function parseDate($dateString) { $date = DateTime::createFromFormat('d/m/Y', $dateString); return $date ? $date->format('Y-m-d') : null; } public function importFile() { return view('conti.import'); } public function importFileCR() { return view('conti.importCR'); } public function importFileGen() { return view('conti.importGen'); } /* public function test() { Movimenti::getYearsFromMovimenti(); }*/ public function manageRedirect(Request $request) { return redirect('/admin/movimenti/reportbudget/'.$request['anno']); } public function updateMovimenti($id) { $mov=Movimenti::getMovimentoById($id); return json_encode($mov); } }