/**
  * Store loan information to database
  *
  * @param Request $request
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function store(Request $request)
 {
     // Validation rules
     $validator = Validator::make($request->all(), ['amount' => 'required', 'end_date' => 'required', 'name' => 'required', 'iban' => 'required', 'phone' => 'required']);
     // If validation fails, provide errors
     if ($validator->fails()) {
         return response()->json(['success' => 0, 'messages' => $validator->errors()->all()]);
     }
     // Risk assessment
     // 1. 3 loans from single ip per 24 hours
     // 2. Max amout between 00:00 and 06:00
     $loans = Loan::where('ip', '=', $request->ip())->where('start_date', '>=', Carbon::now()->subDay())->get();
     if ($loans) {
         // If there are any loans at all.
         $currentTime = new \DateTime('now');
         $start = new \DateTime('today midnight');
         $end = new \DateTime('today midnight + 6 hours');
         $loanLimitPerDay = $loans->count() >= 3;
         $amountOnTime = (int) $request->get('amount') === 500 && $currentTime > $start && $currentTime < $end;
         if ($loanLimitPerDay || $amountOnTime) {
             return response()->json(['error' => $loanLimitPerDay . '||' . $amountOnTime]);
         }
     }
     // Loan record
     $loan = Loan::create(['amount' => $request->get('amount'), 'start_date' => date('Y-m-d H:i:s'), 'name' => $request->get('name'), 'phone' => $request->get('phone'), 'iban' => $request->get('iban'), 'ip' => $request->ip()]);
     // Loan history record
     $loanHistory = $loan->historyRecords()->create(['end_date' => $request->get('end_date'), 'status' => 'Waiting', 'created_at' => date('Y-m-d H:i:s')]);
     return response()->json(['id' => $loan->id, 'history_record_id' => $loanHistory->id]);
 }