public function postCausesCreate(Request $request)
 {
     //Start transaction
     DB::beginTransaction();
     // create the validation rules ------------------------
     $rules = array('name' => 'Required|Unique:causes', 'description' => 'Required');
     // do the validation ----------------------------------
     // validate against the inputs from our form
     $validator = Validator::make(Input::all(), $rules);
     // check if the validator failed -----------------------
     if ($validator->fails()) {
         // get the error messages from the validator
         $messages = $validator->messages();
         // redirect our user back to the form with the errors from the validator
         return redirect(route('getCausesCreate'))->withErrors($validator);
     } else {
         // validation successful ---------------------------
         try {
             $cause = new Cause();
             $cause->uuid = Uuid::generate(4);
             $cause->name = $request->input('name');
             $cause->description = $request->input('description');
             if ($request->has('DGR')) {
                 $cause->DGR = $request->input('DGR');
             } else {
                 $cause->DGR = 0;
             }
             if ($request->has('active')) {
                 $cause->active = $request->input('active');
             } else {
                 $cause->active = 0;
             }
             $cause->total_donations = 0;
             $cause->number_of_donations = 0;
             $cause->save();
             //create cause meta
             $cause_meta = new CauseMeta();
             $cause_meta->cause_id = $cause->id;
             $cause_meta->save();
             Log::info('Cause created successfully id=' . $cause->id);
             // If we reach here, then
             // data is valid and working.
             // Commit the queries!
             DB::commit();
             return redirect(route('getCausesCreate'))->withFlashMessage('Causes created.');
         } catch (Exception $e) {
             DB::rollback();
             throw $e;
         }
     }
 }