function create()
 {
     if (Session::has('user')) {
         $aLike = ['liked' => false, 'unliked' => false];
         $iLikeFromType = Input::get('like_from_type');
         $iToUserID = Input::get('to_user_id');
         $iUserID = Session::get('user')['id'];
         $iLikeFromID = Input::get('like_from_id');
         switch ($iLikeFromType) {
             case Like::LIKE_TYPE_USER:
                 $iFromWhereID = "user_id";
                 break;
             case Like::LIKE_TYPE_CHARACTER:
                 $iFromWhereID = "character_id";
                 break;
             case Like::LIKE_TYPE_FAMILY:
                 $iFromWhereID = "family_id";
                 break;
             case Like::LIKE_TYPE_SPECY:
                 $iFromWhereID = "specy_id";
                 break;
             case Like::LIKE_TYPE_PHOTO:
                 $iFromWhereID = "photo_id";
                 break;
             case Like::LIKE_TYPE_POST:
                 $iFromWhereID = "post_id";
                 break;
             case Like::LIKE_TYPE_MATE:
                 $iFromWhereID = "mate_id";
                 break;
             case Like::LIKE_TYPE_COMMENT:
                 $iFromWhereID = "comment_id";
         }
         //If no result on hasLiked, create like
         $oResultHasLike = self::hasLiked($iFromWhereID, $iToUserID, $iUserID, $iLikeFromType, $iLikeFromID);
         if (!$oResultHasLike) {
             $oResult = Like::create(['from_user_id' => $iUserID, 'to_user_id' => $iToUserID, 'like_type' => $iLikeFromType, $iFromWhereID => $iLikeFromID]);
             Update::create(['user_id' => $iUserID, 'update_type' => Update::UPDATE_TYPE_LIKE, 'like_id' => $oResult['id'], 'status' => Update::UPDATE_STATUS_ACTIVE]);
             if ($oResult) {
                 $aLike['liked'] = true;
                 return response()->json(['status' => true, 'message' => "Successfully liked", 'like' => json_encode($aLike)]);
             } else {
                 return response()->json(['status' => false, 'message' => "Something went wrong. Please try again later"]);
             }
         } else {
             $bResult = Like::where('id', $oResultHasLike['id'])->update(['status' => Like::LIKE_STATUS_DISLIKED_BY_USER]);
             Update::where('like_id', $oResultHasLike['id'])->update(['status' => Update::UPDATE_STATUS_DEACTIVATED_BY_USER]);
             if ($bResult) {
                 $aLike['unliked'] = true;
                 return response()->json(['status' => true, 'message' => "Successfully disliked", 'like' => json_encode($aLike)]);
             } else {
                 return response()->json(['status' => false, 'message' => "Something went wrong. Please try again later"]);
             }
         }
     }
 }
 public function accept()
 {
     $oMate = Mate::where('from_user_id', Input::get('from_user_id'))->where('status', Mate::MATE_STATUS_ADDED_BY_USER)->orWhere('status', Mate::MATE_STATUS_ADDED_BY_ADMIN)->first();
     $oMate->update(['status' => Mate::MATE_STATUS_ACCEPTED_BY_USER]);
     if ($oMate) {
         $aMate = $oMate->toArray();
         $aUpdate = Update::create(['user_id' => Session::get('user')['id'], 'update_type' => Update::UPDATE_TYPE_MATE, 'status' => Update::UPDATE_STATUS_ACTIVE]);
         $aNotification = Notification::create(['from_user_id' => $aMate['to_user_id'], 'to_user_id' => $aMate['from_user_id'], 'notification_type' => Notification::NOTIFICATION_TYPE_MATE_ACCEPTED_REQUEST_BY_USER, 'status' => Notification::NOTIFICATION_STATUS_ACTIVE, 'mate_id' => $aMate['id']]);
         if ($aUpdate) {
             return response()->json(['status' => true, 'message' => "Successfully accepted", 'mate' => json_encode($aMate)]);
         } else {
             return response()->json(['status' => false, 'message' => "Something went wrong. Please try again"]);
         }
     } else {
         return response()->json(['status' => false, 'message' => "Something went wrong. Please try again"]);
     }
 }
 function create(Request $request)
 {
     if (Session::has('user')) {
         //Check the type of comment type to determine what id is to be inserted [photo_id, character_id, family_id, specy_id, post_id, mate_id]
         $iFromType = Input::get('comment-from-type');
         $iFromWhereID = null;
         $iCommentPhotoID = 0;
         $aComment = [];
         switch ($iFromType) {
             case Comment::COMMENT_FROM_TYPE_USER:
                 $iFromWhereID = "user_id";
                 break;
             case Comment::COMMENT_FROM_TYPE_CHARACTER:
                 $iFromWhereID = "character_id";
                 break;
             case Comment::COMMENT_FROM_TYPE_FAMILY:
                 $iFromWhereID = "family_id";
                 break;
             case Comment::COMMENT_FROM_TYPE_SPECY:
                 $iFromWhereID = "specy_id";
                 break;
             case Comment::COMMENT_FROM_TYPE_PHOTO:
                 $iFromWhereID = "photo_id";
                 break;
             case Comment::COMMENT_FROM_TYPE_POST:
                 $iFromWhereID = "post_id";
                 break;
             case Comment::COMMENT_FROM_TYPE_MATE:
                 $iFromWhereID = "mate_id";
                 break;
         }
         $oComment = Comment::create(['from_user_id' => Session::get('user')['id'], 'to_user_id' => Input::get('comment-to-user-id'), 'comment_text' => Input::get('comment-text'), 'status' => Comment::COMMENT_STATUS_DEFAULT, 'comment_type' => $request->file('comment-photo') != null ? Comment::COMMENT_TYPE_PHOTO : Comment::COMMENT_TYPE_TEXT, 'comment_from_type' => Input::get('comment-from-type'), $iFromWhereID => Input::get('comment-from-id'), 'comment_photo_id' => $iCommentPhotoID]);
         //Check if there's a file
         if ($request->file('comment-photo') != null) {
             $sInputImageName = str_replace(' ', '_', Input::get('comment-to-user-id') . '_' . $request->file('comment-photo')->getClientOriginalName());
             $sImageName = rand(1, 1000000) . '_' . Session::get('user')['id'] . '_' . $sInputImageName;
             $request->file('comment-photo')->move(base_path() . '/public/' . Photo::PHOTO_LINK_COMMENT, $sImageName);
             $oPhoto = Photo::create(['user_id' => Session::get('user')['id'], 'photo_type' => Photo::PHOTO_TYPE_COMMENT, 'photo_link' => Photo::PHOTO_LINK_COMMENT . $sImageName, 'status' => Photo::PHOTO_STATUS_DEFAULT]);
             $iCommentPhotoID = $oPhoto->toArray()['id'];
             if ($oPhoto) {
                 Comment::where('id', $oComment->toArray()['id'])->update(['comment_photo_id' => $iCommentPhotoID]);
             }
         }
         if ($oComment) {
             $aComment = Comment::where('id', $oComment->toArray()['id'])->first()->toArray();
             $aNotification = Notification::create(['from_user_id' => Session::get('user')['id'], 'to_user_id' => Input::get('comment-to-user-id'), 'notification_type' => Notification::NOTIFICATION_TYPE_COMMENT, 'status' => Notification::NOTIFICATION_STATUS_ACTIVE, 'comment_id' => $aComment['id']]);
             Update::create(['user_id' => Session::get('user')['id'], 'update_type' => Update::UPDATE_TYPE_COMMENT, 'comment_id' => $aComment['id'], 'status' => Update::UPDATE_STATUS_ACTIVE]);
             //FOR DISPLAY
             $aComment['from_user'] = User::where('id', Session::get('user')['id'])->first()->toArray();
             $aComment['photo_comment'] = $aComment['comment_photo_id'] > 0 ? Photo::where('id', $aComment['comment_photo_id'])->first()->toArray() : [];
         }
         $view = view('users.comments.partials.partial-comment-owner')->with('aComment', $aComment);
         if ($aComment) {
             return response()->json(['status' => true, 'message' => "Successfully submitted comment", 'view' => (string) $view]);
         } else {
             return response()->json(['status' => false, 'message' => "Something went wrong. Please try again"]);
         }
     }
 }
 /**
  * Store a newly created resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @return \Illuminate\Http\Response
  */
 public function store(CreateCharacterRequest $request)
 {
     $sInputImageName = str_replace(' ', '_', Input::get('character_name') . '_' . $request->file('character_avatar')->getClientOriginalName());
     $sImageName = rand(1, 1000000) . '_' . Session::get('user')['id'] . '_' . $sInputImageName;
     /*$request->file('character_avatar')->move(base_path().'/public/avatars/characters/normal/', $sImageName);*/
     $request->file('character_avatar')->move(base_path() . '/public/' . Photo::PHOTO_LINK_AVATAR_CHARACTER_NORMAL, $sImageName);
     $filename = base_path() . '/public/' . Photo::PHOTO_LINK_AVATAR_CHARACTER_NORMAL . $sImageName;
     $jpeg_quality = 90;
     $targ_w = $targ_h = intval(150);
     switch ($request->file('character_avatar')->getClientOriginalExtension()) {
         case 'jpeg':
         case 'jpg':
             $source = imagecreatefromjpeg($filename);
             $img_r = imagecreatefromjpeg($filename);
             $dst_r = imagecreatetruecolor($targ_w, $targ_h);
             imagecopyresampled($dst_r, $img_r, 0, 0, Input::get('x'), Input::get('y'), $targ_w, $targ_h, Input::get('w'), Input::get('h'));
             //imagejpeg($dst_r, base_path().'/public/avatars/characters/mini/'. $sImageName, $jpeg_quality);
             header('Content-type: image/jpeg');
             imagejpeg($dst_r, base_path() . '/public/' . Photo::PHOTO_LINK_AVATAR_CHARACTER_MINI . $sImageName, $jpeg_quality);
             break;
         case 'png':
             $source = imagecreatefrompng($filename);
             $img_r = imagecreatefrompng($filename);
             $dst_r = imagecreatetruecolor($targ_w, $targ_h);
             imagecopyresampled($dst_r, $img_r, 0, 0, Input::get('x'), Input::get('y'), $targ_w, $targ_h, Input::get('w'), Input::get('h'));
             //imagejpeg($dst_r, base_path().'/public/avatars/characters/mini/'. $sImageName, $jpeg_quality);
             header('Content-type: image/jpeg');
             imagepng($dst_r, base_path() . '/public/' . Photo::PHOTO_LINK_AVATAR_CHARACTER_MINI . $sImageName, 9);
             break;
         case 'gif':
             $source = imagecreatefromgif($filename);
             $img_r = imagecreatefromgif($filename);
             $dst_r = imagecreatetruecolor($targ_w, $targ_h);
             imagecopyresampled($dst_r, $img_r, 0, 0, Input::get('x'), Input::get('y'), $targ_w, $targ_h, Input::get('w'), Input::get('h'));
             //imagejpeg($dst_r, base_path().'/public/avatars/characters/mini/'. $sImageName, $jpeg_quality);
             header('Content-type: image/jpeg');
             imagegif($dst_r, base_path() . '/public/' . Photo::PHOTO_LINK_AVATAR_CHARACTER_MINI . $sImageName, $jpeg_quality);
             break;
         default:
             $source = imagecreatefromjpeg($filename);
             break;
     }
     /*$proceed = imagecopyresized($thumb, $source, $request->get('x'), $request->get('y'), $request->get('x'), $request->get('y'), $request->get('w'), $request->get('h'), $width, $height);
       if(!$proceed){
           die("error");
       }*/
     $aPhoto = Photo::create(['user_id' => Session::get('user')['id'], 'photo_type' => Photo::PHOTO_TYPE_CHARACTER, 'photo_link' => Photo::PHOTO_LINK_AVATAR_CHARACTER_MINI . $sImageName, 'status' => Photo::PHOTO_STATUS_DEFAULT]);
     if ($request->all()) {
         $aCharacter = Character::create(['user_id' => Session::get('user')['id'], 'families_id' => Input::get('families_id'), 'character_name' => Input::get('character_name'), 'character_age' => Input::get('character_age'), 'character_avatar' => Photo::PHOTO_LINK_AVATAR_CHARACTER_NORMAL . $sImageName, 'character_avatar_mini' => Photo::PHOTO_LINK_AVATAR_CHARACTER_MINI . $sImageName, 'character_description' => Input::get('character_description'), 'photo_id' => $aPhoto['id']]);
         Update::create(['user_id' => Session::get('user')['id'], 'update_type' => Update::UPDATE_TYPE_CHARACTER, 'character_id' => $aCharacter['id'], 'status' => Update::UPDATE_STATUS_ACTIVE]);
         return redirect('user');
     }
 }