Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Models;
- use Illuminate\Support\Facades\Log;
- use DB;
- use Illuminate\Database\Eloquent\Model;
- use Illuminate\Auth\Authenticatable;
- use Illuminate\Auth\Passwords\CanResetPassword;
- use Illuminate\Foundation\Auth\Access\Authorizable;
- use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
- use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
- use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
- use SammyK\LaravelFacebookSdk\SyncableGraphNodeTrait as SyncableGraphNodeTrait;
- use Auth;
- use App\Models\FavoritePost;
- use App\Models\FavoriteUser;
- class User extends Model implements AuthenticatableContract,
- AuthorizableContract,
- CanResetPasswordContract
- {
- use Authenticatable, Authorizable, CanResetPassword, SyncableGraphNodeTrait;
- protected $table = 'user';
- protected $hidden = ['password', 'salt', 'token', 'remember_token'];
- protected $fillable = ['first_name', 'last_name', 'email', 'phone', 'video', 'is_teacher', 'updated_at'];
- public function posts() {
- return $this->hasMany('App\Models\Post');
- }
- /* public function fav(){
- return $this->hasMany('App\Models\FavoriteUser');
- }*/
- public function considerPosts() {
- return $this->belongsToMany('App\Models\Post', 'consider')->withTimestamps();
- }
- // public function favouritedPosts() {
- //return $this->belongsToMany('App\Models\Post', 'favorite_posts');
- // $posts = FavoritePost::where(['favorited_by_user_id'=>Auth::user()->id])->get();
- // return $posts;
- //}
- //public function favouritedUsers() {
- // return $this->belongsToMany('App\Models\User', 'favorite_users', 'user_id', 'favorited_by_user_id');
- // $users = FavoritePost::where(['favorited_by_user_id'=>Auth::user()->id])->get();
- //return $users;
- //}
- public function usermeta(){
- return $this->hasMany('App\Models\UserMeta');
- }
- public function vouchers() {
- return $this->hasMany('App\Models\Voucher');
- }
- public function getMetaAttribute(){
- $data = array();
- if(!empty($this->usermeta)){
- foreach($this->usermeta as $meta){
- $data[$meta->key] = $meta->value;
- }
- }
- return $data;
- }
- public function getisFavoriteAttribute()
- {
- $is_favorite = FavoriteUser::where(['favorited_by_user_id'=>Auth::user()->id,'user_id'=>$this->id])->first();
- $favorite = ( ($is_favorite) ? true : false);
- return $favorite;
- }
- public function getAvailabilityAttribute(){
- $data = array();
- if(isset($this->meta['availability']))
- $data = explode('|',$this->meta['availability']);
- return $data;
- }
- public static function getSaltByEmail($email){
- return self::where('email', $email)->value('salt');
- }
- public static function noteUserLogin($user) {
- // $user->last_login_at = new \DateTime();
- $user->save();
- }
- public static function _save($request, $id = false){
- Log::debug("INIT");
- if ($id) {
- Log::debug("FIRSTBRANCH");
- $user = self::find($id);
- } else {
- Log::debug("SECONDBRANCH");
- $user = new User();
- }
- if ($request->email) {
- $user->email = $request->email;
- }
- $user->first_name = ucwords(strtolower($request->first_name));
- $user->last_name = ucwords(strtolower($request->last_name));
- if ($request->password) {
- $user->salt = uniqid(rand(), true);
- $user->password = bcrypt($request->password . $user->salt);
- }
- $user->save();
- if(!$id)
- $user->token = User::generateToken($user);
- return $user;
- }
- public static function _save_teacher($request, $email = false){
- if(Auth::check()){
- $user = Auth::user();
- }else
- {
- $user = new User();
- $user->email = $request->email;
- }
- $user->first_name = ucwords(strtolower($request->first_name));
- $user->last_name = ucwords(strtolower($request->last_name));
- $user->phone = $request->phone;
- $user->video = $request->video;
- $user->is_teacher = 1;
- if ($request->password) {
- $user->salt = uniqid(rand(), true);
- $user->password = bcrypt($request->password . $user->salt);
- }
- return $user->save();
- }
- public static function getUserbyEmail($email){
- return self::where('email',$email)->first();
- }
- /**
- * @param $password
- * @param $user
- */
- public static function changePass($password, $user){
- $user->salt = uniqid(rand(), true);
- $user->password = bcrypt($password.$user->salt);
- $user->token = NULL;
- $user->save();
- }
- public static function checkToken($token){
- return self::where('token', $token)->first();
- }
- public static function generateToken($user){
- $user->token = md5(microtime(true));
- $user->save();
- return $user->token;
- }
- public static function getUsersExceptAdmin($admin){
- $users = User::where('id', '!=', $admin)->where('status',1)->get();
- return $users;
- }
- public function renderLocation()
- {
- if (!empty($this->city)) {
- $location = (empty($this->country)) ?
- $this->city :
- $this->city.', '.$this->country;
- }
- elseif (!empty($this->country)) {
- $location = $this->country;
- }
- else {
- $location = '';
- }
- return $location;
- }
- public function getFullName()
- {
- if (!empty($this->first_name)) {
- $fullname = (empty($this->last_name)) ?
- $this->first_name :
- $this->first_name.' '.$this->last_name;
- }
- elseif (!empty($this->last_name)) {
- $fullname = $this->last_name;
- }
- else {
- $fullname = '';
- }
- return $fullname;
- }
- public function getImage()
- {
- return (!empty($this->image) && file_exists($this->image)) ? $this->image : 'images/avatar.png';
- }
- public function getNameAttribute(){
- return $this->first_name . ' ' . $this->last_name;
- }
- public function getRatingsAttribute(){
- $orders_for_post = array();
- $post_rating = 0;
- $post_reviews = 0;
- if(count($this->posts)){
- foreach($this->posts as $post){
- $ratings = 0;
- $order_count = 0;
- if(count($post->orders)){
- foreach ($post->orders as $order){
- if($order->order_rating->rated){
- $user_who_reviewed = DB::table('orders')->select('user_id')->where('id',$order->order_rating->order_review->order_id)->first()->user_id;
- $name_of_user_who_reviewed = DB::table('user')->select('first_name','last_name')->where('id',$user_who_reviewed)->first();
- $name_of_user_who_reviewed = $name_of_user_who_reviewed->first_name.' '.$name_of_user_who_reviewed->last_name;
- array_push($orders_for_post, array('review'=>$order->order_rating->order_review->public_review,'reviewer'=>$name_of_user_who_reviewed)) ;//rated order
- $ratings += $order->order_rating->rating;
- $order_count ++;
- $post_reviews += 1;
- }
- }
- if($order_count)
- $ratings = $ratings/$order_count ;
- }
- $post_rating += $ratings;
- }
- }
- return (object)['rating'=>$post_rating,'count'=>$post_reviews,'orders_for_post'=>$orders_for_post];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement