public function index() { $apartments = Apartment::all(); $bookings = Booking::all(); foreach ($bookings as $booking) { $booking->apartmentName = Apartment::find($booking->apartment_id)->name; } return view('admin.index', compact('apartments', 'bookings')); }
/** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($id) { $apartment = Apartment::find($id); $apartment->amenities()->detach(); $apartment->delete(); Apartment::deleteDirectory($id); }
/** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { // $this->validate($request, ['startdate' => 'required|date', 'enddate' => 'required|date', 'monthly_rent' => 'required|numeric', 'pet_rent' => 'numeric', 'deposit' => 'numeric', 'pet_deposit' => 'numeric']); $input = $request->all(); $input['startdate'] = Carbon::parse($input['startdate']); $input['enddate'] = Carbon::parse($input['enddate']); $apartment = Apartment::find($input['apartment_id']); // Check for Date overlap on existing leases if (!$apartment->checkAvailability($input['startdate'], $input['enddate'])) { return back()->withInput()->with('error', 'These dates are not available!'); } $lease = Lease::create(['apartment_id' => $input['apartment_id'], 'startdate' => $input['startdate'], 'enddate' => $input['enddate'], 'monthly_rent' => $input['monthly_rent'], 'pet_rent' => $input['pet_rent']]); //Create Lease Details $start = $lease->startdate; $end = $lease->enddate; $inc = \DateInterval::createFromDateString('first day of next month'); $p = new \DatePeriod($start, $inc, $end); foreach ($p as $d) { // echo $p . " - " . $d . "<br>"; // dd($p); $d = Carbon::instance($d); $lease_detail = new LeaseDetail(); $lease_detail->month = $d->format('n'); $lease_detail->year = $d->format('Y'); // echo $end->month . " " . $end->year . " + " . $d->format('n') . " " . $d->format('Y'); //If the startdate has the same month and year as the current month, calculate a partial if ($start->month == $d->format('n') && $start->year == $d->format('Y')) { $multiplier = (date('t', strtotime($d->format('Y-m-d'))) - ($start->day - 1)) / date('t', strtotime($d->format('Y-m-d'))); $lease_detail->startdate = $start; $lease_detail->enddate = Carbon::parse('last day of ' . $d->format('F') . " " . $d->year); // echo "Remaining Days/Total Days in Month (" . date('t',strtotime($d->format('Y-m-d'))) . " - " . ($start->day-1) . "/" . date('t',strtotime($d->format('Y-m-d'))) . ") Mulitiplier: "; } elseif ($end->month == $d->format('n') && $end->year == $d->format('Y')) { $multiplier = $end->day / date('t', strtotime($d->format('Y-m-d'))); $lease_detail->startdate = Carbon::parse('first day of ' . $d->format('F') . " " . $d->year); $lease_detail->enddate = $end; // echo "# of Days in Last Month/Total Days in Month (" . ($end->day) . "/" . date('t',strtotime($d->format('Y-m-d'))) . ") Mulitiplier: "; } else { //echo '- Full Month'; $multiplier = 1.0; $lease_detail->startdate = Carbon::parse('first day of ' . $d->format('F') . " " . $d->year); $lease_detail->enddate = Carbon::parse('last day of ' . $d->format('F') . " " . $d->year); } // echo $multiplier . "<br>"; $lease_detail->multiplier = $multiplier; $lease_detail->monthly_rent = round($lease->monthly_rent * $multiplier, 2); $lease_detail->monthly_pet_rent = round($lease->pet_rent * $multiplier, 2); $lease->details()->save($lease_detail); } // Create Lease Deposits if (!empty($input['deposit'])) { $ld = new LeaseDeposit(); $ld->amount = $input['deposit']; $ld->deposit_type = 'Damage Deposit'; $lease->leaseDeposits()->save($ld); } if (!empty($input['pet_deposit'])) { $pd = new LeaseDeposit(); $pd->amount = $input['pet_deposit']; $pd->deposit_type = 'Pet Deposit'; $lease->leaseDeposits()->save($pd); } return redirect()->action('LeaseController@show', [$apartment->name, $lease->id]); }
public function save(Request $request) { if (!session()->has('can-save')) { return json_encode(['success' => false, 'errors' => ['Ошибка прав доступа на сохранение показаний, обратитесь Вашу Управляющую организацию.']]); } session()->flash('can-save', '1'); $file = \App\MeterFile::where('active', 1)->first(); if (!$file) { return json_encode(['success' => false, 'errors' => ['Данные на загружены, обратитесь Вашу Управляющую организацию.']]); } $sdata = $request->input('sdata', false); if (!$sdata) { return json_encode(['success' => false, 'errors' => ['Ошибка в данных, обратитесь Вашу Управляющую организацию.']]); } if (strpos($sdata, ":") === false) { return json_encode(['success' => false, 'errors' => ['Ошибка в данных, обратитесь Вашу Управляющую организацию.']]); } $apartment_id = explode(':', $sdata)[0]; $file_id = explode(':', $sdata)[1]; if ($file->id != $file_id) { return json_encode(['success' => false, 'errors' => ['Данные на загружены, обратитесь Вашу Управляющую организацию.']]); } $apartment = \App\Apartment::find($apartment_id); if (!$apartment) { return json_encode(['success' => false, 'errors' => ['Ошибка в данных, обратитесь Вашу Управляющую организацию.']]); } $ls = $apartment->ls; $meters = $request->input('meter'); $errors = []; $errorsFields = []; $saving = []; $people = $apartment->people <= 0 ? 1 : $apartment->people; foreach ($meters as $key => $value) { $meter = \App\Meter::where('id', $key)->where('apartment_id', $apartment->id)->first(); if (!$meter) { array_push($errors, 'ER03:' . $key . ' - системная ошибка, обратитесь Вашу Управляющую организацию и сообщите код ошибки.'); } if (empty($value)) { $new_value = \App\MeterValue::where('file_id', $file_id)->where('meter_id', $key)->first(); if ($new_value) { $new_value->date = \Carbon\Carbon::now(); $new_value->value = $value; array_push($saving, $new_value); } continue; } $val = floatval($value); if ($val < 0) { array_push($errors, 'Показания счетчика <b>' . $meter->service->name . '</b> не могут быть отрицательными.'); array_push($errorsFields, $meter->id); continue; } $norm = $meter->service->norm; if ($norm > 0) { if ($meter->last_value > $val) { array_push($errors, 'Показания счетчика <b>' . $meter->service->name . '</b> не могут быть меньше предыдущих.'); array_push($errorsFields, $meter->id); continue; } $mx = $meter->service->additional; $max_value = $meter->last_value + ($people * $norm + $norm * $mx); if ($val > $max_value) { array_push($errors, 'К сожалению, показания счетчика <b>' . $meter->service->name . '</b> не могут превышать установленный предел, максимальное значение составляет <b>' . round($max_value, 3) . '</b>. Пожалуйста установите значение меньше или передайте показания по телефону.'); array_push($errorsFields, $meter->id); continue; } $new_value = \App\MeterValue::where('file_id', $file_id)->where('meter_id', $key)->first(); if ($new_value) { $new_value->date = \Carbon\Carbon::now(); $new_value->value = $value; } else { $new_value = new \App\MeterValue(); $new_value->file_id = $file_id; $new_value->meter_id = $key; $new_value->ls = $apartment->ls; $new_value->meter_code = $meter->meter_id; $new_value->date = \Carbon\Carbon::now(); $new_value->value = $value; } array_push($saving, $new_value); } else { $new_value = \App\MeterValue::where('file_id', $file_id)->where('meter_id', $key)->first(); if ($new_value) { $new_value->date = \Carbon\Carbon::now(); $new_value->value = $value; } else { $new_value = new \App\MeterValue(); $new_value->file_id = $file_id; $new_value->meter_id = $key; $new_value->ls = $apartment->ls; $new_value->meter_code = $meter->meter_id; $new_value->date = \Carbon\Carbon::now(); $new_value->value = $value; } array_push($saving, $new_value); } } if (count($errors) > 0) { return json_encode(['success' => false, 'errors' => $errors, 'efields' => $errorsFields]); } else { if (count($saving) > 0) { foreach ($saving as $nv) { if ($nv->value == 0) { $nv->delete(); } else { $nv->save(); } } } else { return json_encode(['success' => true, 'empty' => true]); } return json_encode(['success' => true, 'message' => 'Показания успешно сохранены.']); } }