Edit File: HomeServices.php
<?php namespace App\Services\Store; use App\Models\Contact; use App\Models\Order; use App\Models\Product; use App\Models\Review; use App\Models\Store; use App\Models\StoreCommission; use App\Models\StoreTiming; use App\Models\User; use App\Traits\ApiTrait; use App\Traits\GeneralTrait; use App\Traits\Uploadable; use Auth; use Illuminate\Support\Facades\Cache; class HomeServices { use GeneralTrait, ApiTrait, Uploadable; public function statistics($user) { // $user = Auth::user(); $store = $user->store; $data['new_orders'] = Order::where('store_id', $store->id) ->where('status', 'open') ->where('store_status', 'pending') ->orderBy('created_at', 'desc') ->count(); $data['active_orders'] = Order::where('store_id', $store->id) ->whereIn('store_status', ['accepted', 'prepared']) ->orderBy('created_at', 'desc') ->count(); $data['finish_orders'] = Order::where('store_id', $store->id) ->where('status', 'finished') ->orwhere('store_id', $store->id) ->where('store_status', 'delivered') ->orderBy('created_at', 'desc') ->count(); $data['products'] = Product::where('store_id', $store->id) ->orderBy('created_at', 'desc') ->count(); return $data; } public function postContactUs(array $data) { $user = Auth::user(); $message = new Contact; $message->name = $data['name']; $message->email = $data['email']; $message->message = $data['message']; $message->user_id = $user->id; $message->save(); $msg = trans('stores_dashboard.success_msg'); return $msg; } public function getReviews() { $user = Auth::user(); $store = $user->store; $data['rate'] = $store->rating(); $data['reviews'] = Review::where('store_id', $store->id)->get(); return $data; } public function get_finance() { $commissions = StoreCommission::where('user_id', Auth::user()->id) ->orderBy('created_at', 'desc')->where('sent' , 'false')->get(); $orders = Order::whereIn('id', $commissions->pluck('order_id')->toArray())->get(); return ['commissions' => $commissions ,'orders' => $orders]; } public function get_branches(array $data) { $user = Auth::user(); $store = $user->store; $branches = Store::where('store_id', $store->id) ->paginate($this->paginateNum()); return $branches; } public function get_branch(array $data) { $user = Auth::user(); $store = $user->store; $branch = Store::find($data['branch_id']); return $branch; } public function post_branch(array $request) { // $request = $data['request']; $main_store = Store::where('user_id', Auth::user()->id)->first(); $insert_user = collect($request)->except('days', 'from', 'to', 'lat', 'long', 'address', 'store_id', 'password_confirmation'); $user = User::create($insert_user->toArray()); $inser_store = collect($request)->except('days', 'from', 'to', 'name', 'email', 'phone', 'password', 'password_confirmation', 'country_key', 'status', 'type'); $store = Store::create($inser_store->toArray() + ['store_id' => $main_store->id]); $store->user_id = $user->id; $store->name = [ 'ar' => $main_store->getTranslations('name')['ar'], 'en' => $main_store->getTranslations('name')['en'], ]; $store->update(); if ($store) { if ($request['days'] || isset($request['store_days'])) { if (isset($request['store_days']) && $request['store_days'] == 'on') { $timings = $main_store->timings; foreach ($timings as $time) { $timing = new StoreTiming(); $timing->day = $time['day']; $timing->from = $time['from']; $timing->to = $time['to']; $timing->store_id = $store->id; $timing->save(); } } if (isset($request['days']) && $request['days']) { foreach (json_decode($request['days']) as $day) { $timing = new StoreTiming(); $timing->day = $day->days; $timing->from = $day->from; $timing->to = $day->to; $timing->store_id = $store->id; $timing->save(); } } } // dd($store); $store = Store::find($store->id); $store->updateCacheWithProducts(); return $store; } } public function post_edit_branch(array $request) { // $request = $data['request']; $main_store = auth()->user()->store; $store = Store::find($request['branch_id']); $number = $this->convert2english($request['phone']); $request['phone'] = $this->phoneValidate($number); if(! $store) { $data['failMsg'] = trans('stores_dashboard.branch_unavailable'); return $data; } $user = auth('api')->user(); $store_user = $store->user; $request['store_id'] = $store->store_id; if ($request['phone'] != $store_user->phone) { $check = User::where('phone' , $request['phone'])->where('country_key' , $request['country_key'])->first(); if ($check) { if ($check != $store_user) { $data['failMsg'] = trans('auth.email_unique'); return $data; } } } if ($request['email'] != $store_user->email) { $check = User::where('email' , $request['email'])->first(); if ($check) { if ($check != $store_user) { $data['failMsg'] = trans('auth.email_unique'); return $data; } } } $insert_user = collect($request)->except('days', 'from', 'to', 'lat', 'long', 'address', 'store_id', 'user_id', 'branch_id'); $store_user->update($insert_user->toArray()); $insert_store = collect($request)->except('days', 'from', 'to', 'name', 'email', 'phone', 'country_key', 'branch_id'); $store->update($insert_store->toArray()); if ($store) { if (isset($request['days']) || isset($request['store_days'])) { $old_times = StoreTiming::where('store_id', $store->id)->delete(); if (isset($request['store_days']) && $request['store_days'] == 'on') { $timings = $main_store->timings; foreach ($timings as $time) { $timing = new StoreTiming(); $timing->day = $time['day']; $timing->from = $time['from']; $timing->to = $time['to']; $timing->store_id = $store->id; $timing->save(); } } if (isset($request['days']) && $request['days']) { foreach (json_decode($request['days']) as $day) { $timing = new StoreTiming(); $timing->day = $day->days; $timing->from = $day->from; $timing->to = $day->to; $timing->store_id = $store->id; $timing->save(); } } } } $store = Store::find($store->id); $main_store = Store::find($store->store_id); $main_store->updateCacheWithProducts(); return $store; } public function deleteBranch(array $request) { $branch = Store::find($request['branch_id']); $branch->delete(); if (Cache::has('store-' . $branch->id)) { Cache::forget('store-' . $branch->id); } } public function updateBranches(array $request) { $branches = Store::where('store_id' , $request['store_id'])->get(); foreach ($branches as $branch) { $branch->update(['name' => [ 'ar' => $request['name_ar'], 'en' => $request['name_en'], ] ]); } } }
Back to File Manager