public function save($request, $ipc_rate = false)
 {
     $rules = ['month_year' => 'required', 'index' => 'required|numeric'];
     $messages = ['month_year.required' => 'El campo Año no puede ser vacío', 'index.required' => 'El campo IPC no puede ser vacío', 'index.numeric' => 'El campo IPC sólo se aceptan números'];
     $validator = Validator::make($request->all(), $rules, $messages);
     if ($validator->fails()) {
         return redirect('ipc_rate')->withErrors($validator)->withInput();
     } else {
         $ipcTasa = IpcRate::where('month_year', '=', Util::datePickPeriod($request->month_year))->first();
         if ($ipcTasa) {
             $ipcTasa->user_id = Auth::user()->id;
             $ipcTasa->index = trim($request->index);
             $ipcTasa->save();
             $message = "Índice de Precios al Consumidor actualizado con éxito";
             Session::flash('message', $message);
         } else {
             $message = "Fecha no disponible";
             Session::flash('message', $message);
         }
     }
     return redirect('ipc_rate');
 }
 public function save($request, $id = false)
 {
     $rules = ['affiliate_id' => 'numeric', 'retirement_fund_modality_id' => 'numeric'];
     $messages = ['affiliate_id.numeric' => 'Solo se aceptan números para id afiliado', 'retirement_fund_modality_id.numeric' => 'Solo se aceptan números para id modalidad'];
     $validator = Validator::make($request->all(), $rules, $messages);
     if ($validator->fails()) {
         return redirect('tramite_fondo_retiro/' . $id)->withErrors($validator)->withInput();
     } else {
         $retirement_fund = RetirementFund::afiIs($id)->first();
         $affiliate = Affiliate::idIs($id)->first();
         switch ($request->type) {
             case 'form_modality':
                 if ($request->modality == 4 && $affiliate->date_decommissioned == null) {
                     $message = "Ingrese Fecha de deceso de Afiliado";
                 } else {
                     if ($request->modality) {
                         $retirement_fund->retirement_fund_modality_id = trim($request->modality);
                     }
                     $retirement_fund->city_id = trim($request->city);
                     $retirement_fund->save();
                     switch ($request->modality) {
                         case '1':
                             $affiliate->affiliate_state_id = 8;
                             $affiliate->save();
                             break;
                         case '2':
                             $affiliate->affiliate_state_id = 7;
                             $affiliate->save();
                             break;
                         case '3':
                             $affiliate->affiliate_state_id = 5;
                             $affiliate->save();
                             break;
                         case '4':
                             $affiliate->affiliate_state_id = 4;
                             $affiliate->save();
                             break;
                     }
                     $message = "Información General de Fondo de Retiro actualizado con éxito";
                 }
                 break;
             case 'form_document':
                 if ($retirement_fund->retirement_fund_modality_id) {
                     foreach (json_decode($request->data) as $item) {
                         $Document = Document::where('retirement_fund_id', '=', $retirement_fund->id)->where('requirement_id', '=', $item->requirement_id)->first();
                         if (!$Document) {
                             $Document = new Document();
                             $Document->retirement_fund_id = $retirement_fund->id;
                             $Document->requirement_id = $item->requirement_id;
                         }
                         $Document->status = $item->booleanValue;
                         $Document->reception_date = date('Y-m-d');
                         $Document->save();
                         $retirement_fund->reception_date = date('Y-m-d');
                         $retirement_fund->save();
                     }
                     $message = "Información de requisitos de Fondo de Retiro actualizado con éxito";
                 } else {
                     $message = "Seleccione la modalidad y la ciudad";
                 }
                 break;
             case 'antec':
                 foreach (json_decode($request->data) as $item) {
                     $antecedent = Antecedent::where('retirement_fund_id', '=', $retirement_fund->id)->where('antecedent_file_id', '=', $item->prestacion_id)->first();
                     if (!$antecedent) {
                         $antecedent = new Antecedent();
                         $antecedent->retirement_fund_id = $retirement_fund->id;
                         $antecedent->antecedent_file_id = $item->prestacion_id;
                     }
                     $antecedent->status = $item->booleanValue;
                     $antecedent->save();
                 }
                 $retirement_fund->check_file_date = date('Y-m-d');
                 $retirement_fund->save();
                 $message = "Información de requisitos de Fondo de Retiro actualizado con éxito";
                 break;
             case 'periods':
                 $affiliate->service_start_date = Util::datePickPeriod($request->fech_ini_serv);
                 $affiliate->service_end_date = Util::datePickPeriod($request->fech_fin_serv);
                 $affiliate->save();
                 $retirement_fund->anticipation_start_date = Util::datePickPeriod($request->fech_ini_anti);
                 $retirement_fund->anticipation_end_date = Util::datePickPeriod($request->fech_fin_anti);
                 $retirement_fund->recognized_start_date = Util::datePickPeriod($request->fech_ini_reco);
                 $retirement_fund->recognized_end_date = Util::datePickPeriod($request->fech_fin_reco);
                 $retirement_fund->save();
                 $retirement_fund->qualification_date = date('Y-m-d');
                 $retirement_fund->save();
                 $message = "Información de Periodos de Aporte actualizado con éxito";
                 break;
         }
         Session::flash('message', $message);
     }
     return redirect('retirement_fund/' . $id);
 }
 public function save($request, $base_wage = false)
 {
     global $month_year, $results;
     $reader = $request->file('archive');
     $filename = $reader->getRealPath();
     $month_year = $request->month_year;
     Excel::load($filename, function ($reader) {
         global $month_year, $results;
         ini_set('upload_max_filesize', '9999M');
         ini_set('post_max_size', '9999M');
         ini_set('max_execution_time', '-1');
         ini_set('max_input_time', '-1');
         ini_set('memory_limit', '-1');
         set_time_limit(36000);
         $results = collect($reader->select(array('niv', 'gra', 'sue'))->get());
     });
     $degrees = DB::table('degrees')->orderBy('id', 'asc')->get();
     foreach ($degrees as $item) {
         foreach ($results as $datos) {
             if ($datos['niv'] == $item->niv && $datos['gra'] == $item->grad && Util::decimal($datos['sue']) != 0) {
                 $date = Util::datePickPeriod($month_year);
                 $year = Carbon::parse($date)->year;
                 $month = Carbon::parse($date)->month;
                 $base_wage = DB::table('base_wages')->select(DB::raw('base_wages.degree_id, degrees.code_level, degrees.code_degree, base_wages.month_year'))->leftJoin('degrees', 'base_wages.degree_id', '=', 'degrees.id')->where('code_level', '=', $item->niv)->where('code_degree', '=', $item->grad)->whereMonth('month_year', '=', $month)->whereYear('month_year', '=', $year)->first();
                 if (!$base_wage) {
                     $base_wage = new BaseWage();
                     $base_wage->user_id = Auth::user()->id;
                     $base_wage->degree_id = $item->id;
                     $base_wage->month_year = Util::datePickPeriod($month_year);
                     $base_wage->amount = Util::decimal($datos['sue']);
                     $base_wage->save();
                 }
                 break;
             }
         }
     }
     Session::flash('message', "Sueldos importados exitosamente");
     return redirect('base_wage');
 }