namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Models\User; use Illuminate\Support\Facades\Hash; class MemberController extends Controller { // મેમ્બર લિસ્ટ અને ફોર્મ વ્યુ public function index() { $members = User::where('role', 'member')->get(); return view('admin.members.index', compact('members')); } // મેમ્બર સેવ કરવા માટે public function store(Request $request) { $request->validate([ 'name' => 'required|string|max:255', 'mobile' => 'required|string|unique:users,mobile', 'password' => 'required|string|min:6', 'guarantor_name' => 'required|string|max:255', 'guarantor_mobile' => 'required|string', ]); User::create([ 'name' => $request->name, 'mobile' => $request->mobile, 'password' => Hash::make($request->password), 'role' => 'member', 'guarantor_name' => $request->guarantor_name, 'guarantor_mobile' => $request->guarantor_mobile, 'remark' => $request->remark, 'status' => 1 ]); return redirect()->back()->with('success', 'મેમ્બર સફળતાપૂર્વક ઉમેરાઈ ગયા છે.'); } public function destroy($id) { User::findOrFail($id)->delete(); return redirect()->back()->with('success', 'મેમ્બર ડીલીટ થઈ ગયા છે.'); } } namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Models\Loan; use App\Models\Transaction; use App\Models\CibilScore; class LoanController extends Controller { // લોન આપવી (ઉચક વ્યાજ સાથે) public function store(Request $request) { $request->validate([ 'user_id' => 'required|exists:users,id', 'principal_amount' => 'required|numeric', 'flat_interest' => 'required|numeric', 'duration_days' => 'required|integer', 'penalty_amount' => 'required|numeric', ]); $totalPayable = $request->principal_amount + $request->flat_interest; $loan = Loan::create([ 'user_id' => $request->user_id, 'principal_amount' => $request->principal_amount, 'flat_interest' => $request->flat_interest, 'total_payable' => $totalPayable, 'duration_days' => $request->duration_days, 'penalty_amount' => $request->penalty_amount, 'remark' => $request->remark, 'status' => 'active' ]); // શરૂઆતનો સિબિલ સ્કોર એન્ટ્રી કરો (દિવસ ૧) CibilScore::create([ 'user_id' => $request->user_id, 'loan_id' => $loan->id, 'day_number' => 1, 'score' => 600, // બેઝ સ્કોર 'updated_date' => now() ]); return redirect()->back()->with('success', '૧૦૦ દિવસની લોન સફળતાપૂર્વક મંજૂર થઈ.'); } } namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\Loan; use Carbon\Carbon; class ReportController extends Controller { public function alertPage() { // એવા લોન ધારકો શોધો જેમને છેલ્લા ૫ કે તેથી વધુ દિવસથી કોઈ ટ્રાન્ઝેક્શન નથી કર્યું $activeLoans = Loan::with('user', 'transactions')->where('status', 'active')->get(); $defaulters = []; foreach($activeLoans as $loan) { $lastTransaction = $loan->transactions()->latest('payment_date')->first(); $lastDate = $lastTransaction ? Carbon::parse($lastTransaction->payment_date) : Carbon::parse($loan->created_at); // જો છેલ્લા વ્યવહારને ૫ કે તેથી વધુ દિવસ થઈ ગયા હોય if($lastDate->diffInDays(now()) >= 5) { $defaulters[] = [ 'loan' => $loan, 'days_pending' => $lastDate->diffInDays(now()), 'mobile' => $loan->user->mobile, 'name' => $loan->user->name ]; } } return view('admin.alerts', compact('defaulters')); } } namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Models\User; class ReportController extends Controller { public function searchMember(Request $request) { $query = $request->input('q'); // નામ કે નંબર $member = User::with(['loans.transactions', 'loans.cibilScores']) ->where('role', 'member') ->where(function($subQuery) use ($query) { $subQuery->where('name', 'LIKE', "%{$query}%") ->orWhere('mobile', 'LIKE', "%{$query}%"); })->first(); if (!$member) { return response()->json(['status' => 'error', 'message' => 'મેમ્બર મળ્યો નથી.'], 404); } // ટોટલ હિસાબ કાઉન્ટ કરો $activeLoan = $member->loans->where('status', 'active')->first(); $totalPaid = $activeLoan ? $activeLoan->transactions->sum('amount') : 0; $totalRemaining = $activeLoan ? ($activeLoan->total_payable - $totalPaid) : 0; return response()->json([ 'status' => 'success', 'member' => $member, 'active_loan' => $activeLoan, 'total_paid' => $totalPaid, 'total_remaining' => $totalRemaining ]); } } namespace App\Http\Controllers\Admin; use App\Models\CibilScore; use Carbon\Carbon; class CibilService { public static function updateScoreOnPayment($user_id, $loan_id, $is_on_time) { $lastScoreRecord = CibilScore::where('user_id', $user_id) ->where('loan_id', $loan_id) ->latest('id') ->first(); $currentScore = $lastScoreRecord ? $lastScoreRecord->score : 600; // જો સમયસર હપ્તો ભરાય તો સ્કોર +૫ વધશે, મોડો પડે તો -૧૦ ઘટશે $newScore = $is_on_time ? min(900, $currentScore + 5) : max(300, $currentScore - 10); CibilScore::create([ 'user_id' => $user_id, 'loan_id' => $loan_id, 'day_number' => $lastScoreRecord ? $lastScoreRecord->day_number + 1 : 1, 'score' => $newScore, 'updated_date' => Carbon::now(), ]); } } namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Models\User; use Illuminate\Support\Facades\Hash; class MemberController extends Controller { public function index() { $members = User::where('role', 'member')->get(); return view('admin.members.index', compact('members')); } public function store(Request $request) { $request->validate([ 'name' => 'required|string|max:255', 'mobile' => 'required|string|unique:users,mobile', 'password' => 'required|string|min:6', 'guarantor_name' => 'required|string', 'guarantor_mobile' => 'required|string', ]); User::create([ 'name' => $request->name, 'mobile' => $request->mobile, 'password' => Hash::make($request->password), 'role' => 'member', 'guarantor_name' => $request->guarantor_name, 'guarantor_mobile' => $request->guarantor_mobile, 'remark' => $request->remark, 'status' => 1 ]); return redirect()->back()->with('success', 'મેમ્બર સફળતાપૂર્વક ઉમેરાઈ ગયા છે.'); } public function destroy($id) { User::findOrFail($id)->delete(); return redirect()->back()->with('success', 'મેમ્બર ડીલીટ થઈ ગયા છે.'); } }