public function getValues()
 {
     $file = \App\MeterFile::where('active', 1)->first();
     if (!$file) {
         return 'Необходимо активировать базу.';
     }
     $a = DB::table('meter_values')->join('meters', 'meters.id', '=', 'meter_values.meter_id')->join('apartments', 'apartments.id', '=', 'meters.apartment_id')->select(DB::raw('DATE_FORMAT(meter_values.date, "%d.%m.%Y") as date'), DB::raw('count(apartments.ls) as cn'))->where('meter_values.file_id', $file->id)->groupBy(DB::raw('DATE_FORMAT(meter_values.date, "%d.%m.%Y")'), DB::raw('apartments.ls'))->get();
     dd($a);
 }
 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]);
 }
예제 #3
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' => 'Показания успешно сохранены.']);
     }
 }