@@ 12-136 (lines=125) @@ | ||
9 | use Illuminate\Support\Facades\DB; |
|
10 | use PDF; |
|
11 | ||
12 | class ExportController extends Controller |
|
13 | { |
|
14 | /** |
|
15 | * Create a new controller instance. |
|
16 | * |
|
17 | * @return void |
|
18 | */ |
|
19 | public function __construct() |
|
20 | { |
|
21 | $this->middleware('auth'); |
|
22 | } |
|
23 | ||
24 | /** |
|
25 | * Show the form for creating a new resource. |
|
26 | * |
|
27 | * @return \Illuminate\Http\Response |
|
28 | */ |
|
29 | public function index() |
|
30 | { |
|
31 | date_default_timezone_set('Europe/Madrid'); |
|
32 | $format = 'Y/m/d'; |
|
33 | $now = date($format); |
|
34 | $to = date($format, strtotime('+15 days')); |
|
35 | $constraints = [ |
|
36 | 'from' => $now, |
|
37 | 'to' => $to, |
|
38 | ]; |
|
39 | ||
40 | $inventories = DB::table('inventories') |
|
41 | ->leftJoin('brand', 'inventories.brand_id', '=', 'brand.id') |
|
42 | ->leftJoin('material_type', 'inventories.material_type_id', '=', 'material_type.id') |
|
43 | ->leftJoin('brand_model', 'inventories.model_id', '=', 'brand_model.id') |
|
44 | ->leftJoin('moneySource', 'inventories.moneySourceId', '=', 'moneySource.id') |
|
45 | ->leftJoin('location', 'inventories.location_id', '=', 'location.id') |
|
46 | ->leftJoin('provider', 'inventories.provider_id', '=', 'provider.id') |
|
47 | ->select('inventories.*', 'material_type.name as material_type_name', 'material_type.id as material_type_id', 'brand.name as brand_name', 'brand.id as brand_id', 'brand_model.name as brand_model_name', 'brand_model.id as model_id', 'location.name as location_name', 'location.id as location_id', 'moneySource.name as moneySource_name', 'moneySource.id as moneySourceId', |
|
48 | 'provider.name as provider_name', 'provider.id as provider_id') |
|
49 | ->paginate(); |
|
50 | ||
51 | return view('/export/index', ['inventories' =>$inventories, 'searchingVals' => $constraints]); |
|
52 | ||
53 | //$inventories = $this->getItemsInventory($constraints); |
|
54 | //return view('/export/index', ['inventories' =>$inventories, 'searchingVals' => $constraints]); |
|
55 | } |
|
56 | ||
57 | /** |
|
58 | * Store a newly created resource in storage. |
|
59 | * |
|
60 | * @param \Illuminate\Http\Request $request |
|
61 | * |
|
62 | * @return \Illuminate\Http\Response |
|
63 | */ |
|
64 | public function exportExcel(Request $request) |
|
65 | { |
|
66 | $this->prepareExportingData($request)->export('csv'); |
|
67 | redirect()->intended('mnt-export'); |
|
68 | } |
|
69 | ||
70 | public function exportPDF(Request $request) |
|
71 | { |
|
72 | $constraints = [ |
|
73 | 'from' => $request['from'], |
|
74 | 'to' => $request['to'], |
|
75 | ]; |
|
76 | $inventories = $this->getExportingData($constraints); |
|
77 | $pdf = PDF::loadView('export/exportpdf', ['inventories' => $inventories, 'searchingVals' => $constraints])->setPaper('a4', 'landscape'); |
|
78 | ||
79 | return $pdf->download('Exportat_desde_'.$request['from'].'_a_'.$request['to'].'.pdf'); |
|
80 | } |
|
81 | ||
82 | private function prepareExportingData($request) |
|
83 | { |
|
84 | $inventories = $this->getExportingData(['from'=> $request['from'], 'to' => $request['to']]); |
|
85 | ||
86 | return Excel::create('Exportat_desde_'.$request['from'].'_a_'.$request['to'], function ($excel) use ($inventories, $request) { |
|
87 | // Set the title |
|
88 | $excel->setTitle('Inventari from '.$request['from'].' to '.$request['to']); |
|
89 | ||
90 | // Call them separately |
|
91 | $excel->setDescription('Llista'); |
|
92 | $excel->sheet('Items', function ($sheet) use ($inventories) { |
|
93 | $sheet->fromArray($inventories); |
|
94 | }); |
|
95 | }); |
|
96 | } |
|
97 | ||
98 | public function search(Request $request) |
|
99 | { |
|
100 | $constraints = [ |
|
101 | 'from' => $request['from'], |
|
102 | 'to' => $request['to'], |
|
103 | ]; |
|
104 | $inventories = $this->getItemsInventory($constraints); |
|
105 | ||
106 | return view('export/index', ['inventories' => $inventories, 'searchingVals' => $constraints]); |
|
107 | } |
|
108 | ||
109 | private function getItemsInventory($constraints) |
|
110 | { |
|
111 | $inventories = Inventory::where('date_entrance', '>=', $constraints['from']) |
|
112 | ->where('date_entrance', '<=', $constraints['to']) |
|
113 | ->get(); |
|
114 | ||
115 | return $inventories; |
|
116 | } |
|
117 | ||
118 | private function getExportingData($constraints) |
|
119 | { |
|
120 | return DB::table('inventories') |
|
121 | ->leftJoin('brand', 'inventories.brand_id', '=', 'brand.id') |
|
122 | ->leftJoin('material_type', 'inventories.material_type_id', '=', 'material_type.id') |
|
123 | ->leftJoin('brand_model', 'inventories.model_id', '=', 'brand_model.id') |
|
124 | ->leftJoin('moneySource', 'inventories.moneySourceId', '=', 'moneySource.id') |
|
125 | ->leftJoin('location', 'inventories.location_id', '=', 'location.id') |
|
126 | ->leftJoin('provider', 'inventories.provider_id', '=', 'provider.id') |
|
127 | ->select('inventories.name as name', 'inventories.description as description', 'material_type.name as material_type_name', 'brand.name as brand_name', 'brand_model.name as brand_model_name', |
|
128 | 'location.name as location_name', 'moneySource.name as moneySource_name', 'provider.name as provider_name', 'inventories.quantity as quantity', 'inventories.price as price', 'inventories.date_entrance as date_entrance', 'inventories.last_update as last_update') |
|
129 | ||
130 | ->get() |
|
131 | ->map(function ($item, $key) { |
|
132 | return (array) $item; |
|
133 | }) |
|
134 | ->all(); |
|
135 | } |
|
136 | } |
|
137 |
@@ 12-136 (lines=125) @@ | ||
9 | use Illuminate\Support\Facades\DB; |
|
10 | use PDF; |
|
11 | ||
12 | class ExportController extends Controller |
|
13 | { |
|
14 | /** |
|
15 | * Create a new controller instance. |
|
16 | * |
|
17 | * @return void |
|
18 | */ |
|
19 | public function __construct() |
|
20 | { |
|
21 | $this->middleware('auth'); |
|
22 | } |
|
23 | ||
24 | /** |
|
25 | * Show the form for creating a new resource. |
|
26 | * |
|
27 | * @return \Illuminate\Http\Response |
|
28 | */ |
|
29 | public function index() |
|
30 | { |
|
31 | date_default_timezone_set('Europe/Madrid'); |
|
32 | $format = 'Y/m/d'; |
|
33 | $now = date($format); |
|
34 | $to = date($format, strtotime('+15 days')); |
|
35 | $constraints = [ |
|
36 | 'from' => $now, |
|
37 | 'to' => $to, |
|
38 | ]; |
|
39 | ||
40 | $inventories = DB::table('inventories') |
|
41 | ->leftJoin('brand', 'inventories.brand_id', '=', 'brand.id') |
|
42 | ->leftJoin('material_type', 'inventories.material_type_id', '=', 'material_type.id') |
|
43 | ->leftJoin('brand_model', 'inventories.model_id', '=', 'brand_model.id') |
|
44 | ->leftJoin('moneySource', 'inventories.moneySourceId', '=', 'moneySource.id') |
|
45 | ->leftJoin('location', 'inventories.location_id', '=', 'location.id') |
|
46 | ->leftJoin('provider', 'inventories.provider_id', '=', 'provider.id') |
|
47 | ->select('inventories.*', 'material_type.name as material_type_name', 'material_type.id as material_type_id', 'brand.name as brand_name', 'brand.id as brand_id', 'brand_model.name as brand_model_name', 'brand_model.id as model_id', 'location.name as location_name', 'location.id as location_id', 'moneySource.name as moneySource_name', 'moneySource.id as moneySourceId', |
|
48 | 'provider.name as provider_name', 'provider.id as provider_id') |
|
49 | ->paginate(); |
|
50 | ||
51 | return view('/export/index', ['inventories' =>$inventories, 'searchingVals' => $constraints]); |
|
52 | ||
53 | //$inventories = $this->getItemsInventory($constraints); |
|
54 | //return view('/export/index', ['inventories' =>$inventories, 'searchingVals' => $constraints]); |
|
55 | } |
|
56 | ||
57 | /** |
|
58 | * Store a newly created resource in storage. |
|
59 | * |
|
60 | * @param \Illuminate\Http\Request $request |
|
61 | * |
|
62 | * @return \Illuminate\Http\Response |
|
63 | */ |
|
64 | public function exportExcel(Request $request) |
|
65 | { |
|
66 | $this->prepareExportingData($request)->export('csv'); |
|
67 | redirect()->intended('mnt-export'); |
|
68 | } |
|
69 | ||
70 | public function exportPDF(Request $request) |
|
71 | { |
|
72 | $constraints = [ |
|
73 | 'from' => $request['from'], |
|
74 | 'to' => $request['to'], |
|
75 | ]; |
|
76 | $inventories = $this->getExportingData($constraints); |
|
77 | $pdf = PDF::loadView('export/exportpdf', ['inventories' => $inventories, 'searchingVals' => $constraints])->setPaper('a4', 'landscape'); |
|
78 | ||
79 | return $pdf->download('Exportat_desde_'.$request['from'].'_a_'.$request['to'].'.pdf'); |
|
80 | } |
|
81 | ||
82 | private function prepareExportingData($request) |
|
83 | { |
|
84 | $inventories = $this->getExportingData(['from'=> $request['from'], 'to' => $request['to']]); |
|
85 | ||
86 | return Excel::create('Exportat_desde_'.$request['from'].'_a_'.$request['to'], function ($excel) use ($inventories, $request) { |
|
87 | // Set the title |
|
88 | $excel->setTitle('Inventari from '.$request['from'].' to '.$request['to']); |
|
89 | ||
90 | // Call them separately |
|
91 | $excel->setDescription('Llista'); |
|
92 | $excel->sheet('Items', function ($sheet) use ($inventories) { |
|
93 | $sheet->fromArray($inventories); |
|
94 | }); |
|
95 | }); |
|
96 | } |
|
97 | ||
98 | public function search(Request $request) |
|
99 | { |
|
100 | $constraints = [ |
|
101 | 'from' => $request['from'], |
|
102 | 'to' => $request['to'], |
|
103 | ]; |
|
104 | $inventories = $this->getItemsInventory($constraints); |
|
105 | ||
106 | return view('export/index', ['inventories' => $inventories, 'searchingVals' => $constraints]); |
|
107 | } |
|
108 | ||
109 | private function getItemsInventory($constraints) |
|
110 | { |
|
111 | $inventories = Inventory::where('date_entrance', '>=', $constraints['from']) |
|
112 | ->where('date_entrance', '<=', $constraints['to']) |
|
113 | ->get(); |
|
114 | ||
115 | return $inventories; |
|
116 | } |
|
117 | ||
118 | private function getExportingData($constraints) |
|
119 | { |
|
120 | return DB::table('inventories') |
|
121 | ->leftJoin('brand', 'inventories.brand_id', '=', 'brand.id') |
|
122 | ->leftJoin('material_type', 'inventories.material_type_id', '=', 'material_type.id') |
|
123 | ->leftJoin('brand_model', 'inventories.model_id', '=', 'brand_model.id') |
|
124 | ->leftJoin('moneySource', 'inventories.moneySourceId', '=', 'moneySource.id') |
|
125 | ->leftJoin('location', 'inventories.location_id', '=', 'location.id') |
|
126 | ->leftJoin('provider', 'inventories.provider_id', '=', 'provider.id') |
|
127 | ->select('inventories.name as name', 'inventories.description as description', 'material_type.name as material_type_name', 'brand.name as brand_name', 'brand_model.name as brand_model_name', |
|
128 | 'location.name as location_name', 'moneySource.name as moneySource_name', 'provider.name as provider_name', 'inventories.quantity as quantity', 'inventories.price as price', 'inventories.date_entrance as date_entrance', 'inventories.last_update as last_update') |
|
129 | ||
130 | ->get() |
|
131 | ->map(function ($item, $key) { |
|
132 | return (array) $item; |
|
133 | }) |
|
134 | ->all(); |
|
135 | } |
|
136 | } |
|
137 |