public function updateProfilePicture()
 {
     $user = $this->model->where('id', '=', $_POST['user_id'])->first();
     $now = \Carbon\Carbon::instance($user->created_at);
     $types = array('_o.', '_s.', '_m.', '_l.');
     $sizes = array(100, 300, 600);
     $target_path = base_path() . '/public/imgs/';
     $file = \Input::file('image');
     $hashSeed = "user" . $user->id . $file->getClientOriginalName();
     while (1) {
         $file_name = \Func::getHashedValue($hashSeed);
         if (!\File::exists($target_path . \Func::getImgPath($file_name))) {
             break;
         }
         $hashSeed .= rand();
     }
     $target_path .= \Func::getImgPath($file_name) . '/';
     if (!\File::exists($target_path)) {
         \File::makeDirectory($target_path, 0775, true);
     }
     $file_ext = $file->getClientOriginalExtension();
     $original = $file_name . array_shift($types) . $file_ext;
     $file->move($target_path, $original);
     // Move the original one first
     foreach ($types as $key => $type) {
         $new_name = $file_name . $type . $file_ext;
         \File::copy($target_path . $original, $target_path . $new_name);
         \Image::make($target_path . $new_name)->resize($sizes[$key], null, function ($constraint) {
             $constraint->aspectRatio();
             $constraint->upsize();
         })->save($target_path . $new_name);
     }
     \File::delete($target_path . $original);
     $user->profile_img_path = $file_name . "." . $file_ext;
     $user->save();
     $this->common_func->storeActivityLogWithUser('update_user_profile_picture', $user->id, 'user', $_POST['user_id']);
     return $user;
 }
 public function storeAPI()
 {
     \DB::beginTransaction();
     try {
         // post save
         $post = $this->model->create(array('user_id' => $_POST['user_id'], 'content' => $_POST['captions']));
         if (!$post) {
             \DB::rollback();
             return;
         }
         $post_group = $this->post_group->where('post_groups.user_id', '=', $_POST['user_id'])->where('post_groups.name', '=', "Uncategorized")->first();
         $post->postGroups()->attach($post_group->id);
         $types = array('_o.', '_s.', '_m.', '_l.');
         $sizes = array(100, 300, 600);
         $target_path = base_path() . '/public/imgs/';
         $file = \Input::file('image');
         $hashSeed = "post" . $post->id . $file->getClientOriginalName();
         while (1) {
             $file_name = \Func::getHashedValue($hashSeed);
             if (!\File::exists($target_path . \Func::getImgPath($file_name))) {
                 break;
             }
             $hashSeed .= rand();
         }
         $target_path .= \Func::getImgPath($file_name) . '/';
         if (!\File::exists($target_path)) {
             \File::makeDirectory($target_path, 0775, true);
         }
         $file_ext = $file->getClientOriginalExtension();
         $original = $file_name . array_shift($types) . $file_ext;
         $file->move($target_path, $original);
         // Move the original one first
         foreach ($types as $key => $type) {
             $new_name = $file_name . $type . $file_ext;
             \File::copy($target_path . $original, $target_path . $new_name);
             \Image::make($target_path . $new_name)->resize($sizes[$key], null, function ($constraint) {
                 $constraint->aspectRatio();
                 $constraint->upsize();
             })->save($target_path . $new_name);
         }
         \File::delete($target_path . $original);
         $photo = $this->photo->create(array('post_id' => $post->id, 'sequence' => 1, 'img_path' => $file_name . '.' . $file_ext));
         if (!$photo) {
             \DB::rollback();
             return;
         }
         // hash tag save
         $temp = $_POST['captions'];
         preg_match_all('/#(\\w+)/', $temp, $matches);
         $hashtags = $matches[1];
         foreach ($hashtags as $hashtag) {
             $tag = $this->tag->firstOrCreate(['name' => $hashtag]);
             $post->Tags()->attach($tag->id);
         }
         $this->common_func->storeActivityLogWithUser('store_post', $post->id, 'post', $_POST['user_id']);
     } catch (ValidationException $e) {
         \DB::rollback();
     } catch (\Exception $e) {
         \DB::rollback();
         throw $e;
     }
     \DB::commit();
     return $post;
 }