public function emailTest(Request $request)
 {
     $current_user = ParseUser::getCurrentUser();
     if (!$current_user) {
         return redirect()->route('login');
     }
     $sendM = new Mail\Send();
     $rt = $sendM->sendInviteEmail(array('*****@*****.**'), $current_user, 'sciiex');
     var_dump($rt);
     echo "Done";
 }
 public function processGroup(Request $request)
 {
     //if logged process otherwise go to login form
     $current_user = ParseUser::getCurrentUser();
     if (!empty($current_user)) {
         //process form
         $lastAction = $request->session()->get('lastAction');
         $groupName = $request->input('groupname') ?: $request->session()->get('newgroup:groupName');
         $invites = $request->input('invites') ?: $request->session()->get('newgroup:invites');
         $public = $request->input('public') ?: $request->session()->get('newgroup:public');
         $reroute = $request->input('reroute');
         $st = $request->input('st');
         $groupId = $request->input('id');
         if (!empty($groupId)) {
             //does this user have permission to edit group
             $qry = new ParseQuery('Groups');
             $groupObj = $qry->get($groupId);
             if ($groupObj->get('public') !== true) {
                 if ($current_user->getObjectId() != $groupObj->get('user')->getObjectId()) {
                     throw new HttpException(401, 'Sorry you don\'t have permission to edit group');
                 }
             }
         } else {
             $groupObj = new ParseObject('Groups');
         }
         $groupObj->set('name', $groupName);
         $groupObj->set('user', $current_user);
         if ($public == 'y') {
             $groupObj->set('public', true);
         } else {
             $groupObj->set('public', false);
         }
         if (empty($invites)) {
             $invites = [];
         }
         $invites = array_keys(array_flip($invites));
         $prevInvites = $groupObj->get('invites') ?: array();
         $diffInvites = array_diff($invites, $prevInvites);
         $groupObj->setArray('invites', $invites);
         if (empty($groupObj->get('inviteCode'))) {
             $groupObj->set('inviteCode', $this->generate_random_letters(6));
         }
         try {
             $groupObj->save();
             $relation = $groupObj->getRelation('members');
             $relation->add($current_user);
             $groupObj->save();
             //send email
             if (!empty($diffInvites)) {
                 $send = new Mail\Send();
                 $send->sendInviteEmail($diffInvites, $current_user, $groupObj->get('inviteCode'), $groupObj->get('name'));
             }
             if ($reroute == 'newevents') {
                 $url = route('newEvent', ['gid' => $groupObj->getObjectId()]) . '?st=' . $st;
                 return redirect($url);
             } else {
                 return redirect('/groups');
             }
         } catch (ParseException $ex) {
             // Execute any logic that should take place if the save fails.
             // error is a ParseException object with an error code and message.
             echo 'Failed to create new object, with error message: ' . $ex->getMessage();
         }
     } else {
         //save form show login
         $request->session()->set('lastAction', 'newgroup');
         $request->session()->set('newgroup:groupName', $request->input('groupname'));
         $request->session()->set('newgroup:invites', $request->input('invites'));
         $request->session()->set('newgroup:public', $request->input('public'));
         return redirect()->route('register');
     }
 }