diff --git a/app/File_attachment.php b/app/File_attachment.php new file mode 100644 index 0000000..2db43fc --- /dev/null +++ b/app/File_attachment.php @@ -0,0 +1,16 @@ +belongsTo('App\Rubro'); + } +} diff --git a/app/Http/Controllers/FichasController.php b/app/Http/Controllers/FichasController.php index 5d8e700..018feed 100644 --- a/app/Http/Controllers/FichasController.php +++ b/app/Http/Controllers/FichasController.php @@ -7,24 +7,22 @@ use App\Ficha_dato; use App\Cabecera_encuesta; use App\Rubro; +use App\Traits\PeriodosTrait; use flash; class FichasController extends Controller { + use PeriodosTrait; + public function index(){ $dbData = Ficha_dato::get(); return view('fichas.list')->with('dbData', $dbData); } public function create(){ - $periodos = Cabecera_encuesta::get(); - $periodos = $periodos->map(function($item){ - $rubro = $item->rubro->descripcion; - $periodo = $item->periodo; - $item['periodo_combo'] = $periodo.' - '.$rubro; - return $item; - })->unique('periodo')->pluck('periodo_combo', 'periodo'); - $rubros = Rubro::all()->pluck('descripcion', 'id'); + $rubro = Rubro::first()->id; + $periodos = $this->getPeriodos($rubro); + $rubros = $this->getRubros(); return view('fichas.create')->with('periodos', $periodos) ->with('rubros', $rubros); } @@ -42,25 +40,21 @@ public function show($id) } public function edit($id){ - $dbData = Cargo::find($id); - $dbNivel = Nivel::all()->pluck('descripcion', 'id'); - $dbArea = Area::all()->pluck('descripcion', 'id'); - return view('cargos.edit')->with('dbData', $dbData) - ->with('dbNivel', $dbNivel) - ->with('dbArea', $dbArea); + $dbData = Ficha_dato::find($id); + $rubro = Rubro::get()->first()->id; + $periodos = $this->getPeriodos($rubro); + $rubros = $this->getRubros(); + return view('fichas.create')->with('dbData', $dbData) + ->with('periodos', $periodos) + ->with('rubros', $rubros); } public function update(Request $request, $id){ - $dbData = Cargo::find($id); - $dbData->fill($request->all()); - if(!is_null($request->is_temporal)){ - $dbData->is_temporal = 1; - }else{ - $dbData->is_temporal = 0; - } + $dbData = new Ficha_dato($request->all()); + $dbData->save(); - return redirect()->route('cargos.index'); + return redirect()->route('admin_ficha.index'); } public function destroy($id){ diff --git a/app/Http/Controllers/FileAttachmentController.php b/app/Http/Controllers/FileAttachmentController.php new file mode 100644 index 0000000..ceb5805 --- /dev/null +++ b/app/Http/Controllers/FileAttachmentController.php @@ -0,0 +1,128 @@ +getRubros(); + // recuperamos todos los rubros + $rubro = Rubro::all()->first()->id; + $periodos = $this->getPeriodos($rubro); + // Si terminó de subir el archivo mostramos el toast correspondiente + $toast = session('upload_done'); + if($toast){ + session()->forget('upload_done'); + } + $errorUploading = session('upload_nok'); + if($errorUploading){ + session()->forget('upload_nok'); + } + + return view('file_attachment.index')->with('periodos', $periodos) + ->with('rubros', $rubros) + ->with('toast', $toast) + ->with('errorUploading', $errorUploading); + } + + + public function download(){ + $empresa = Auth::user()->empresa; + $id = $empresa->id; + if(Session::has('periodo')){ + $per = Session::get('periodo'); + $dbEncuesta = Cabecera_encuesta::where('empresa_id', $id)->whereRaw("periodo = '". $per."'")->first(); + }else{ + $dbEncuesta = Cabecera_encuesta::where('empresa_id', $id)->whereRaw('id = (select max(id) from cabecera_encuestas where empresa_id = '. $id.')')->first(); + } + $rubro = $empresa->rubro_id; + $periodo = $dbEncuesta->periodo; + $dbFile = File_attachment::where('rubro_id', $rubro)->where('periodo', $periodo)->first(); + if($dbFile){ + $filename = $dbFile->filename; + try{ + return response()->download(storage_path('app/public/uploads/'.$filename), $filename, []); + }catch(\Exception $exception){ + return view('file_attachment.notfound'); + } + + }else{ + return view('file_attachment.notfound'); + } + } + + public function upload(Request $request){ + //dd($request->all()); + // recuperamos el archivo + $file = $request->file('file'); + // validación + $rules = array( 'file' => 'required|mimes:xls,xlsx,pdf'); + $messages = array( 'file.required' => 'No se especificó ningún archivo para subir', + 'file.mimes' => 'El tipo de archivo no es correcto'); + + $validator = Validator::make($request->all(), $rules, $messages); + + if($validator->passes()){ + $filename = $file->getClientOriginalName(); + $rubro = $request->rubro_id; + $periodo = $request->periodo; + try{ + $file->storeAs('public/uploads', $filename); + $dbData = File_attachment::where('rubro_id', $rubro)->where('periodo', $periodo)->first(); + if(!$dbData){ + $dbData = new File_attachment(); + } + $dbData->rubro_id = $rubro; + $dbData->filename = $filename; + $dbData->periodo = $periodo; + $dbData->activo = 1; + $dbData->save(); + }catch(\Exception $exception){ + session(['upload_nok'=>'true']); + redirect()->back()->withInput(); + } + + }else{ + session(['upload_nok'=>'true']); + redirect()->back()->withInput(); + } + session(['upload_done'=>'true']); + return redirect()->route('file_attachment'); + + } + + public function getPeriodosAjax(Request $request){ + + $periodos = $this->getPeriodos($request->rubro_id); + + return $periodos; + } + +} diff --git a/app/Http/Controllers/ReporteController.php b/app/Http/Controllers/ReporteController.php index 14d6cf0..4e8384c 100644 --- a/app/Http/Controllers/ReporteController.php +++ b/app/Http/Controllers/ReporteController.php @@ -9,6 +9,7 @@ use App\Detalle_encuesta; use App\Cargos_rubro; use App\Empresa; +use App\Ficha_dato; use App\Nivel; use App\Cargo; use App\Rubro; @@ -231,21 +232,28 @@ public function ficha($id){ $dbEncuesta = Cabecera_encuesta::where('empresa_id', $id)->whereRaw('id = (select max(id) from cabecera_encuestas where empresa_id = '. $id.')')->first(); } $cargos = Encuestas_cargo::where('cabecera_encuesta_id', $dbEncuesta->id)->get()->count(); - if ($rubro == 4){ - if($per == "12/2016"){ - $cargos = 160; - }else{ - $cargos = 174; + $periodo = $dbEncuesta->periodo; + $dbFicha = Ficha_dato::where('rubro_id', $rubro)->where('periodo', $periodo)->first(); + if($dbFicha){ + $cargos = $dbFicha->cargos_emergentes; + $tipoCambio = $dbFicha = $dbFicha->tipo_cambio; + }else{ + if ($rubro == 4){ + if($per == "12/2016"){ + $cargos = 160; + }else{ + $cargos = 174; + } + }elseif($rubro == 1){ + $cargos = 400; + }elseif($rubro == 2){ + $cargos = 172; + }elseif($rubro == 3){ + $cargos = 175; } - }elseif($rubro == 1){ - $cargos = 400; - }elseif($rubro == 2){ - $cargos = 172; - }elseif($rubro == 3){ - $cargos = 175; + $tipoCambio = 5600; } - $periodo = $dbEncuesta->periodo; $participantes = Cabecera_encuesta::where('periodo', $periodo)->where('rubro_id', $rubro)->get(); $participantes = $participantes->map(function($item){ @@ -261,6 +269,7 @@ public function ficha($id){ ->with('cargos', $cargos) ->with('periodo', $periodo) ->with('club', $club) + ->with('tipoCambio', $tipoCambio) ->with('participantes', $participantes); } diff --git a/app/Traits/PeriodosTrait.php b/app/Traits/PeriodosTrait.php new file mode 100644 index 0000000..3ee238e --- /dev/null +++ b/app/Traits/PeriodosTrait.php @@ -0,0 +1,28 @@ +pluck('descripcion', 'id'); + return $rubros; + } + + public function getPeriodos($id){ + // recuperamos todas las encuestas del primer rubro recuperado + $periodos = Cabecera_encuesta::where('rubro_id', $id)->get(); + // filtramos los periodos para el primer rubro recuperado + $periodos = $periodos->map(function($item){ + $rubro = $item->rubro->descripcion; + $periodo = $item->periodo; + $item['periodo_combo'] = $periodo.' - '.$rubro; + return $item; + })->unique('periodo')->pluck('periodo_combo', 'periodo'); + + return $periodos; + } +} \ No newline at end of file diff --git a/database/migrations/2018_09_12_160252_create_file_attachment_table.php b/database/migrations/2018_09_12_160252_create_file_attachment_table.php new file mode 100644 index 0000000..7f1c317 --- /dev/null +++ b/database/migrations/2018_09_12_160252_create_file_attachment_table.php @@ -0,0 +1,41 @@ +increments('id'); + $table->integer('rubro_id')->unsigned(); + $table->string('periodo'); + $table->string('filename'); + $table->integer('activo'); + $table->timestamps(); + + $table->foreign('rubro_id') + ->references('id') + ->on('rubros') + ->onDelete('restrict') + ->onUpdate('cascade'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/resources/views/fichas/create.blade.php b/resources/views/fichas/create.blade.php index 852e840..01f1bb5 100644 --- a/resources/views/fichas/create.blade.php +++ b/resources/views/fichas/create.blade.php @@ -10,7 +10,6 @@