/** * Update car from self list * @param $id * @return Response */ public function selfUpdate($id) { $user = Auth::user(); $car = $user->cars()->find($id); if (!$car) { return $this->respondNotFound('Car not found'); } if (Input::get('number') != $car->number) { $validator = Car::validate(Input::all()); if ($validator->fails()) { return $this->respondInsufficientPrivileges($validator->messages()->all()); } } $number = Input::get('number'); if ($number[2] == 'Z' && $number[3] == 'Z') { return $this->respondInsufficientPrivileges('Wrong number. There is no ZZ'); } $region = substr($number, 0, 2); if (is_numeric($number[0]) && (int) Input::get('vehicle_type') != 3) { switch ((int) $region) { case $region == 0: return $this->respondInsufficientPrivileges('Недопустимый код региона'); case $region >= 73 && $region <= 84: return $this->respondInsufficientPrivileges('Недопустимый код региона'); case $region >= 86 && $region <= 89: return $this->respondInsufficientPrivileges('Недопустимый код региона'); case $region >= 91 && $region <= 98: return $this->respondInsufficientPrivileges('Недопустимый код региона'); } } if (is_numeric($number[0]) && strlen($number) > 6) { $zerosCount = 3; // amount of zeros // check if all numbers are zeros $zeros = array_diff(array_slice(str_split($number), 4), array_fill(0, $zerosCount, 0)); if (empty($zeros)) { return $this->respondInsufficientPrivileges("Номер не может быть с {$zerosCount} нулями"); } } elseif (strlen($number) > 6) { $zerosCount = 6; $zeros = array_diff(array_slice(str_split($number), 1), array_fill(0, $zerosCount, 0)); if (empty($zeros)) { return $this->respondInsufficientPrivileges("Номер не может быть с {$zerosCount} нулями"); } } // if seria in number are in AA, PA, РМ, YP. Which is not allowed. if (Car::checkSeria($number)) { return $this->respondInsufficientPrivileges('Номера с сериями АА, РА, РМ и YP добавляются в профиль пользователя службой поддержки только при подтверждении факта владения или пользования данной машиной. Обратитесь в техподдержку.'); } $car->fill(Input::all()); if ($car->save()) { $imgs = Image::findMany(Input::get('img'))->map(function ($image) use($car) { if (!$car->images()->find($image->id)) { $car->images()->save($image); return $image->id; } if ($car->images()->find($image->id)) { return $image->id; } }); if (!$imgs->isEmpty()) { $car->images()->whereNotIn('id', $imgs->toArray())->delete(); } else { $car->images()->delete(); } return $this->respond($this->collectionTransformer->transformCar($car)); } return $this->respondServerError(); }