public function actionCreate() { $model = new Car(); $file = new File(); $model->create_at = date('Y-m-d'); if (isset($_POST['Car']) && isset($_POST['File'])) { $model->attributes = $_POST['Car']; $file->attributes = $_POST['File']; $model->validate(); if ($model->getErrors() == null) { $model->date_registration = Tools::dateToSave($model->date_registration); $file->file = CUploadedFile::getInstance($file, 'file'); if ($file->file != null) { $filename = time() . '.' . $file->file->getExtensionName(); $file->file->saveAs(Yii::app()->params['pathUpload'] . $filename); $model->pic = $filename; } else { $model->pic = 'noimage.jpg'; } $model->save(); $this->redirect(array('view', 'id' => $model->car_id)); } } $this->render('create', array('model' => $model, 'file' => $file)); }
/** * 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(); }