예제 #1
0
 /**
  * Creates a new Series model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionCreate()
 {
     $model = new Series();
     if ($model->load(Yii::$app->request->post()) && $model->save()) {
         return $this->redirect(['view', 'id' => $model->id]);
     } else {
         return $this->render('create', ['model' => $model]);
     }
 }
 /**
  * Store a newly created series in storage.
  *
  * @return Response
  */
 public function store()
 {
     $currentUser = $this->getUser();
     Validator::extend('valid_uuid', function ($attribute, $value, $parameters) {
         if (preg_match("/^(\\{)?[a-f\\d]{8}(-[a-f\\d]{4}){4}[a-f\\d]{8}(?(1)\\})\$/i", $value)) {
             return true;
         } else {
             return false;
         }
     });
     Validator::extend('series_exists', function ($attribute, $value, $parameters) use($currentUser) {
         if (Series::find($value)) {
             return false;
         } else {
             return true;
         }
     });
     $messages = ['id.valid_uuid' => 'The :attribute field is not a valid ID.', 'comic_id.valid_uuid' => 'The :attribute field is not a valid ID.', 'id.series_exists' => 'The :attribute field is not a valid ID.'];
     $validator = Validator::make($data = $this->request->all(), ['id' => 'required|valid_uuid|series_exists', 'comic_id' => 'required|valid_uuid', 'series_title' => 'required', 'series_start_year' => 'date_format:Y'], $messages);
     if ($validator->fails()) {
         $pretty_errors = array_map(function ($item) {
             return ['title' => 'Missing Required Field', 'detail' => $item, 'status' => 400, 'code' => ''];
         }, $validator->errors()->all());
         return $this->respondBadRequest($pretty_errors);
     }
     $comic = $currentUser->comics()->find($data['comic_id']);
     if ($comic) {
         $old_series_id = $comic->series_id;
         $series = new Series();
         $series->id = $data['id'];
         $series->user_id = $currentUser->id;
         $series->series_title = $data['series_title'];
         $series->series_start_year = !empty($data['series_start_year']) ? $data['series_start_year'] : date('Y');
         $series->series_publisher = !empty($data['series_publisher']) ? $data['series_publisher'] : "Unknown";
         $series->save();
         $comic->series_id = $series->id;
         $comic->save();
         $seriesCount = Series::find($old_series_id)->comics()->get()->count();
         if ($seriesCount == 0) {
             Series::find($old_series_id)->delete();
         }
         return $this->respondCreated(['series' => [$series]]);
     }
     return $this->respondBadRequest([['title' => 'Invalid Comic ID', 'detail' => 'Invalid Comic ID', 'status' => 400, 'code' => '']]);
 }