public function getSavedValuesAttribute() { $val = \App\MeterValue::where('file_id', $this->id)->count(); return $val > 0 ? $val : null; }
public function postSaveDetail(Request $request) { if ($request->input('pk', false)) { $value = \App\MeterValue::find($request->input('pk')); } else { $value = new \App\MeterValue(); $value->file_id = $request->input('file_id'); $value->meter_id = $request->input('meter_id'); } if ($request->input('value') == '') { $value->delete(); return response('Очищен', 200); } $nv = str_replace(",", ".", (string) $request->input('value')); $value->date = \Carbon\Carbon::now(); $value->value = $nv; $value->save(); return response('', 200); }
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' => 'Показания успешно сохранены.']); } }