/**
  * Store a newly created in storage
  */
 public function store()
 {
     $validator = Validator::make($input = Input::all(), Beneficiario::rules('create'));
     if ($validator->fails()) {
         return Redirect::back()->withErrors($validator)->withInput();
     }
     DB::beginTransaction();
     try {
         $nombres = $input['nombres'];
         $filename = null;
         // Profile Image Upload
         if (Input::hasFile('foto')) {
             $path = public_path() . "/foto/";
             File::makeDirectory($path, $mode = 0777, true, true);
             $image = Input::file('foto');
             $extension = $image->getClientOriginalExtension();
             $filename = "{$nombres}_{$input['beneficiarioID']}." . strtolower($extension);
             //                Image::make($image->getRealPath())->resize('872','724')->save($path.$filename);
             Image::make($image->getRealPath())->fit(872, 724, function ($constraint) {
                 $constraint->upsize();
             })->save($path . $filename);
         }
         Beneficiario::create(['beneficiarioID' => $input['beneficiarioID'], 'responsableID' => $input['nitcit'] . " " . $input['nitcit2'], 'objetivo' => $input['objetivo'], 'nombres' => ucwords(strtolower($input['nombres'])), 'apellidos' => ucwords(strtolower($input['apellidos'])), 'genero' => $input['genero'], 'fechanac' => date('Y-m-d', strtotime($input['fechanac'])), 'telefono' => $input['telefono'], 'fechaing' => date('Y-m-d', strtotime($input['fechaing'])), 'direccion' => ucwords(strtolower($input['direccion'])), 'foto' => isset($filename) ? $filename : 'default.jpg', 'direccionperm' => ucwords(strtolower($input['direccionperm'])), 'iddiagnostico' => $input['iddiag'], 'diagnostico' => $input['diagnostico'], 'fechadiagnostico' => $input['fechadiag'], 'tratamiento' => $input['tratamiento'], 'razon' => $input['razon'], 'duracion' => $input['duracion'], 'referencia' => $input['referencia'], 'lugar' => $input['lugar']]);
         //  Insert into salary table
         if ($input['montosolicitado'] != '') {
             Soldonacion::create(['beneficiarioID' => $input['beneficiarioID'], 'tipo' => 'current', 'nota' => 'Primera Solicitud', 'monto' => $input['montosolicitado']]);
         }
         // Insert Into Bank Details
         Zonificacion::create(['beneficiarioID' => $input['beneficiarioID'], 'departamento' => $input['departamento'], 'provincia' => $input['provincia'], 'localidad' => $input['localidad'], 'zona' => $input['zona'], 'canton' => $input['canton'], 'otros' => $input['otros']]);
         //
         $tipo = 'responsable';
         Personal::create(['beneficiarioID' => $input['beneficiarioID'], 'personalID' => $input['nitcit'], 'emision' => $input['nitcit2'], 'nombres' => $input['nombresReponsable'], 'apellidos' => $input['apellidosResponsable'], 'ocupacion' => $input['ocupacionResponsable'], 'parentesco' => $input['parentesco'], 'tipoPersonal' => $tipo]);
         $fullname = $input['nombres'] . " " . $input['apellidos'];
         // -------------- UPLOAD THE DOCUMENTS  -----------------
         $documents = ['certnac', 'CIprueba', 'solicitud', 'croquis', 'perfil'];
         foreach ($documents as $document) {
             if (Input::hasFile($document)) {
                 $path = public_path() . "/beneficiarios_documents/{$document}/";
                 File::makeDirectory($path, $mode = 0777, true, true);
                 $file = Input::file($document);
                 $extension = $file->getClientOriginalExtension();
                 $filename = "{$document}_{$input['beneficiarioID']}_{$fullname}.{$extension}";
                 Input::file($document)->move($path, $filename);
                 Bendocumentos::create(['beneficiarioID' => $input['beneficiarioID'], 'fileName' => $filename, 'type' => $document]);
             }
         }
         //            dd(json_encode(Input::all()));
         //            if($this->data['setting']->ben_add==1)
         //            {
         //                $this->data['ben_name'] = $fullname;
         //                $this->data['ben_email'] = $input['email'];
         //                $this->data['ben_password'] = $input['password'];
         //                //        Send Employee Add Mail
         //                Mail::send('emails.admin.beneficiarios_add', $this->data, function ($message) use ($input) {
         //                    $message->from($this->data['setting']->email, $this->data['setting']->name);
         //                    $message->to($input['email'], $input['nombres']." ".$input['apellidos'])
         //                        ->subject('Cuenta Creada - ' . $this->data['setting']->website);
         //                });
         //            }
         //  ********** END UPLOAD THE DOCUMENTS**********
     } catch (\Exception $e) {
         DB::rollback();
         throw $e;
     }
     Activity::log(['contentId' => $input['beneficiarioID'], 'contentType' => 'Beneficiario', 'action' => 'Creacion', 'user_id' => Auth::admin()->get()->id, 'description' => 'Creacion del un Beneficiario', 'details' => 'Usuario: ' . Auth::admin()->get()->name, 'updated' => $input['beneficiarioID'] ? true : false]);
     DB::commit();
     return Redirect::route('admin.beneficiarios.index')->with('success', "<strong>{$fullname}</strong> exitosamente adicionado en le base de datos");
 }