コード例 #1
0
ファイル: AdminController.php プロジェクト: Juizyboy/DankTank
 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'));
 }
コード例 #2
0
 /**
  * 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);
 }
コード例 #3
0
 /**
  * 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]);
 }
コード例 #4
0
 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> не могут превышать установленный предел, максимальное значение составляет&nbsp;<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' => 'Показания успешно сохранены.']);
     }
 }