/**
  * Display a listing of the resource.
  *
  * @return Response
  */
 public function index()
 {
     if (!Settings::item('page_map')) {
         abort(404);
     }
     $apartment = Apartment::active()->where('map_lat', '!=', '')->where('map_lng', '!=', '')->paginate(50);
     return view('map.index', ['apartments' => $apartment]);
 }
 public function run()
 {
     foreach (range(1, 32) as $index) {
         Apartment::create(['name' => 'CS' . $index, 'number' => $index, 'property_id' => 1]);
     }
     foreach (range(1, 60) as $index) {
         Apartment::create(['name' => 'SG' . $index, 'number' => $index, 'property_id' => 2]);
     }
     Apartment::create(['name' => '1807H1', 'number' => 1, 'property_id' => 3]);
 }
 /**
  * Update the specified resource in storage.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function update(Request $request, Apartment $apartment)
 {
     //
     $input = $request->all();
     //$apartment = Apartment::find($id);
     $apartment->fill($input);
     $apartment->save();
     return back();
 }
 /**
  * Uploads new apartment photos
  *
  *
  * @return Response
  */
 public function uploader()
 {
     $photos = Apartment::uploader();
     return view('admin.apartment._img_container', ['photos' => $photos['photos'], 'errors' => $photos['errors']]);
 }
 public function index()
 {
     $apartments = Apartment::all();
     return view('booking.index', compact('apartments'));
 }
 public function getAllAppartments()
 {
     $query = Apartment::with('images')->with('accessories')->get();
     return Response::json($query);
 }
 public function destroyApartment()
 {
     $input = Input::all();
     Apartment::destroy($input['id']);
     return Redirect::to('booking/admin');
 }
 /**
  * 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 getLookDetail($ls)
 {
     $file = \App\MeterFile::where('active', 1)->first();
     if (!$file) {
         return back()->withErrors('Необходимо активировать базу.');
     }
     $apartment = \App\Apartment::where('ls', $ls)->first();
     if (!$apartment) {
         abort(404);
     }
     $building = $apartment->building;
     $street = $building->street;
     $full_address = $street->prefix . '. ' . $street->name . ', д. ' . $building->number . ($building->housing ? '/' . $building->housing : '') . ' кв. ' . $apartment->number . ($apartment->part ? '/' . $apartment->part : '');
     $meters = \App\Meter::where('apartment_id', $apartment->id)->orderBy('service_id')->get();
     $meter_ids = [];
     foreach ($meters as $m) {
         array_push($meter_ids, $m->id);
     }
     $old_values = \App\MeterValue::where('file_id', $file->id)->whereIn('meter_id', $meter_ids)->get();
     $meter_values = [];
     foreach ($old_values as $ov) {
         $meter_values[$ov->meter_id] = $ov;
     }
     return view('admin.detail', ['address' => $full_address, 'apartment' => $apartment, 'meters' => $meters, 'meter_values' => $meter_values, 'file' => $file->id]);
 }
 public function apartament($apartament_id)
 {
     $apartament = \App\Apartment::where('active', '1')->where('id', $apartament_id)->firstOrFail();
     return view('apartment', ['apartament' => $apartament, 'page' => 'apartment']);
 }
 /**
  * Display a listing of the resource.
  *
  * @return Response
  */
 public function index()
 {
     $apartment = Apartment::active()->orderBy('id', 'DESC')->paginate(12);
     $slider_photos = Apartment::sliderPhotoArray();
     return view('index', ['apartments' => $apartment, 'slider_photos' => $slider_photos]);
 }
 public static function removePhotoFromApartments($photos, $id)
 {
     $apartment = Apartment::where('id', $id)->get(['photos'])->first();
     if ($apartment->photos) {
         if (!$photos) {
             $photos = [];
         }
         $removed = array_diff(json_decode($apartment->photos), $photos);
         foreach ($removed as $photo) {
             @unlink(self::$apartment_folder . '/' . $id . '/' . $photo);
             @unlink(self::$apartment_folder . '/' . $id . '/ico_' . $photo);
         }
     }
 }
 public function saveFeedback(Request $request)
 {
     if (!session()->has('can-save')) {
         return json_encode(['success' => false, 'errors' => ['Ошибка прав доступа на сохранение отзыва.']]);
     }
     session()->flash('can-save', '1');
     $validator = Validator::make($request->all(), ['owner' => 'required|exists:apartments,ls', 'feedtext' => 'required'], ['feedtext.required' => 'Заполните текст отзыва.']);
     if ($validator->fails()) {
         return json_encode(['success' => false, 'errors' => $validator->errors()->all()]);
     }
     $ls = $request->input('owner');
     $text = $request->input('feedtext');
     $apartment = \App\Apartment::where('ls', $ls)->first();
     $building = $apartment->building;
     $street = $building->street;
     $full_address = $street->prefix . '. ' . $street->name . ', д. ' . $building->number . ($building->housing ? '/' . $building->housing : '') . ' кв. ' . $apartment->number . ($apartment->part ? '/' . $apartment->part : '');
     $feed = new \App\Feedback();
     $feed->address = $full_address;
     $feed->ls = $ls;
     $feed->text = $text;
     $feed->save();
     return json_encode(['success' => true]);
 }