Файловый менеджер - Редактировать - /home/clickysoft/public_html/somni.clickysoft.net/app/Repositories/PropertyRepository.php
Назад
<?php namespace App\Repositories; use App\Interfaces\PropertyRepositoryInterface; use App\Models\Property; use App\Models\Country; use App\Models\City; use App\Models\State; use App\Models\User; use App\Models\PropertyUnitTenant; use App\Models\Unit; use App\Models\TransactionDetail; use App\Models\Transaction; use App\Models\Event; use App\Models\RentPayment; use Illuminate\Support\Facades\DB; use App\Repositories\SubscriptionRepository; class PropertyRepository implements PropertyRepositoryInterface { public function getPropertyById($property_id){ $property = Property::whereId($property_id)->first(); return $property; } public function getCititesByStates($state_id){ $cities = City::where('state_id',$state_id)->get(); return $cities; } public function getStatesByCountry($country_id){ $cities = State::where('country_id',$country_id)->get(); return $cities; } public function getPropertyWithUnitsById($id){ $property = Property::with('propertyUnits')->where('id',$id)->first(); return $property; } public function getUsersActivePropertyCount($user_id){ $count = Property::Complete()->where('user_id',$user_id)->count(); return $count; } public function getUsersActiveProperty($user_id){ $property = Property::Complete()->where('user_id',$user_id)->get(); return $property; } public function getUsersActiveUnitsCount($user_id){ $user = User::whereId($user_id)->first(); // $unit_count = $user->properties()->withCount('propertyUnits')->get(); $unit_count = $user->properties->flatMap->propertyUnits->count(); return $unit_count; } public function checkUnitReturnTenant($unit_id){ $tenant = PropertyUnitTenant::where('unit_id',$unit_id)->where('status','active')->where('end_date')->first(); return $tenant; } public function getUnitsByPropertyId($property_id){ return Unit::select('id','number','slug')->where('property_id',$property_id)->orderBy('id')->get(); } public function getTotalUnitsCount($user){ $totalUnitCount = $user->properties->flatMap->propertyUnits->count(); return $totalUnitCount; } public function createUnit($request,$flag){ DB::beginTransaction(); $subscriptionObj = new SubscriptionRepository(); $user = auth()->user(); $package = $subscriptionObj->getActivePackageOfUser($user->id); $unit['number'] = $request->number; $unit['slug'] = str_slug($request->number); $unit['lease_term'] = $request->lease_term; $unit['rent_due_date'] = $request->rent_due_date; $unit['monthly_rent'] = $request->monthly_rent; $unit['no_of_bathroom'] = $request->no_of_bathrooms; $unit['no_of_bedrooms'] = $request->no_of_bedrooms; $unit['property_id'] = $request->property_id; $unit['is_complete'] = 1; if(isset($request->unit_size)){ $unit['unit_size'] = $request->unit_size; } if(isset($request->security_deposit)){ $unit['security_deposit'] = $request->security_deposit; } if(isset($request->available_date)){ $unit['available_date'] = $request->available_date; } if(isset($request->description)){ $unit['description'] = $request->description; } if(isset($request->layout_type)){ $unit['layout_type'] = $request->layout_type; } $new_unit = Unit::create($unit); // dd('ander 2' ,$new_unit); if(isset($request->amenities) && !empty($request->amenities)){ $new_unit->amenities()->sync($request->amenities); } if($flag == 2 || $flag == '2'){ $amount_to_pay = $package->extra_unit_charges; if($request->payment_through != 'card'){ $amount_to_pay += 0.7; } if($request->payment_through == 'card'){ $amount_to_pay += (config('constants.payment.card_percentage') / 100) * $amount_to_pay; } $payload = $user->charge((int)($amount_to_pay * 100), $request->paymentMethodId,[ 'description' => 'New Unit', ]); $transaction_new['payer_id'] = $user->id; $transaction_new['payee_id'] = null; $transaction_new['amount'] = $amount_to_pay; $transaction_new['status'] = 'paid'; $main_transaction = Transaction::create($transaction_new); $transaction_other_payment['transaction_id'] = $main_transaction->id; $transaction_other_payment['unit_id'] = $new_unit->id; $transaction_other_payment['amount'] = config('constants.payment.card_percentage'); $transaction_other_payment['note'] = 'Transaction Charges'; $transaction_other_payment['payload'] = json_encode($payload); $transaction_other_payment['rent_payment_id'] = null; $transaction_other_payment['payment_month'] = now()->month; $transaction_other_payment['payment_year'] = now()->year; $transaction_other_payment['payment_type'] = 'other_payment'; $transaction_other_payment['created_at'] = now(); $trans = TransactionDetail::create($transaction_other_payment); $transaction_new_unit['transaction_id'] = $main_transaction->id; $transaction_new_unit['unit_id'] = $new_unit->id; $transaction_new_unit['amount'] = $package->extra_unit_charges; $transaction_new_unit['note'] = 'New Unit Charges'; $transaction_new_unit['payload'] = json_encode($payload); $transaction_new_unit['rent_payment_id'] = null; $transaction_new_unit['payment_month'] = now()->month; $transaction_new_unit['payment_year'] = now()->year; $transaction_new_unit['payment_type'] = 'other_payment'; $transaction_new_unit['created_at'] = now(); $trans = TransactionDetail::create($transaction_new_unit); } DB::commit(); return $new_unit; } public function getStats(){ $user_id = auth()->user()->id; $user = auth()->user(); $stat = User::find($user_id) ->properties() ->select( \DB::raw('COUNT(units.id) as total_units'), \DB::raw('COUNT(property_unit_tenant.tenant_user_id) as occupied_units'), \DB::raw('(COUNT(property_unit_tenant.tenant_user_id) / COUNT(units.id)) * 100 as overall_occupancy_percentage') ) ->leftJoin('units', 'properties.id', '=', 'units.property_id') ->leftJoin('property_unit_tenant', 'units.id', '=', 'property_unit_tenant.unit_id') ->first(); $all_units_id = $user->properties->flatMap->propertyUnits->pluck('id')->toArray(); $occupiedUnits = PropertyUnitTenant::whereIn('unit_id', $all_units_id)->pluck('id')->toArray(); $over_due_rent = RentPayment::whereIn('unit_id', $occupiedUnits) ->where('amount_due', '>', 0) ->sum('amount_due'); $maintenance = Event::where('landlord_id',$user_id)->where('type','maintenance')->count(); $total_earning = Transaction::where('payee_id',$user_id)->where('status','paid')->sum('amount'); $gross_rent = $user->properties->flatMap->propertyUnits->sum('monthly_rent'); $response['occupancy_percentage'] = number_format($stat->overall_occupancy_percentage,2); $response['total_units'] = $stat->total_units; $response['maintenance_count'] = $maintenance; $response['total_earning'] = number_format($total_earning,2); $response['gross_rent'] = number_format($gross_rent,2); $response['over_due_rent'] = number_format($over_due_rent,2); return $response; } public function topProperty(){ $propertyWithMostOccupants = Property::withCount('propertyTenant as occupants') ->where('user_id',auth()->user()->id) ->orderByDesc('occupants') ->first(); return $propertyWithMostOccupants; } public function checkIfUnitIsDeletable($unit_id){ $unit = Unit::find($unit_id); $associated = PropertyUnitTenant::where('unit_id',$unit_id)->where('end_date', null)->first(); $event_association = Event::where('unit_id',$unit_id)->where('is_archive', 0)->first(); if($associated || $event_association){ return false; } return true; // TRUE means good to go (Delete) // False means not to delete (Do Not Delete) } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.29 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка