_repository = $repository; } public function create(BannerForm $form): Banner { if ($form->image) { $filename = $form->image->baseName . '_' . (new Security())->generateRandomString(5) . '.' . $form->image->extension; $path = \Yii::getAlias(Banner::FILE_ORIGINAL_PATH); if (!file_exists($path)) { mkdir($path, 0777, true); } $form->image->saveAs($path . '/' . $filename); $form->image = $filename; } $banner = Banner::create( $form->title, $form->image, $form->url, $form->target, $form->start_at, $form->end_at, $form->include_urls, $form->exclude_urls, $form->active, $form->place_id ); $this->_repository->save($banner); return $banner; } public function edit($id, BannerForm $form): void { $banner = $this->_repository->get($id); if ($form->image) { $filename = $form->image->baseName . '_' . (new Security())->generateRandomString(5) . '.' . $form->image->extension; $path = \Yii::getAlias(Banner::FILE_ORIGINAL_PATH); $form->image->saveAs($path . '/' . $filename); $form->image = $filename; } else { $form->image = $banner->image; } $banner->edit( $form->title, $form->image, $form->url, $form->target, $form->start_at, $form->end_at, $form->include_urls, $form->exclude_urls, $form->active, $form->place_id ); $this->_repository->save($banner); } public function remove($id): void { $banner = $this->_repository->get($id); $this->_repository->remove($banner); } public function addView(Banner $banner) { $banner->views++; $this->_repository->save($banner); } public function addClick(Banner $banner) { $banner->clicks++; $this->_repository->save($banner); } }