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]); }
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' => 'Показания успешно сохранены.']); } }