diff --git a/app/Console/Commands/CVInfo.php b/app/Console/Commands/CVInfo.php new file mode 100644 index 0000000..dcd6781 --- /dev/null +++ b/app/Console/Commands/CVInfo.php @@ -0,0 +1,42 @@ +argument('id')))) { + $this->error('CV not found!'); + return Command::FAILURE; + } + + $this->line('ID: '. $cv->id); + $this->line('Token: '. $cv->token); + $this->line('Company: '. $cv->recipient); + $this->line('Phone: '. $cv->formattedPhoneNumber .', '. $cv->PhoneNumber); + $this->line('Locations: '. implode(' / ', $cv->locations)); + $this->line('Views: '. $cv->views); + $this->line(''); + + $this->line('Showed list:'); + foreach ($cv->info()->orderByDesc('id')->get() as $cvInfo) { + $this->line('ID: '. $cvInfo->id); + $this->line('IP: '. $cvInfo->ip); + $this->line('Date: '. $cvInfo->created_at->format('d-m-Y H:i:s')); + $this->line(''); + } + + return Command::SUCCESS; + } +} diff --git a/app/Http/Controllers/Api/CVController.php b/app/Http/Controllers/Api/CVController.php index 1ca5a8c..4b67d56 100644 --- a/app/Http/Controllers/Api/CVController.php +++ b/app/Http/Controllers/Api/CVController.php @@ -13,6 +13,10 @@ class CVController extends Controller { public function show(CV $cv): JsonResource { + $cv->info() + ->create([ + 'ip' => $_SERVER['REMOTE_ADDR'], + ]); $cv->update(['views' => $cv->views+=1]); return new CVResource($cv); diff --git a/app/Models/CV.php b/app/Models/CV.php index 42a8504..ad6b984 100644 --- a/app/Models/CV.php +++ b/app/Models/CV.php @@ -7,6 +7,8 @@ namespace App\Models; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\HasMany; +use Illuminate\Database\Eloquent\Relations\HasOne; /** * @property int $id @@ -42,6 +44,11 @@ class CV extends Model ); } + public function info(): HasMany + { + return $this->hasMany(CVInfo::class, 'cv_id'); + } + public function getRouteKeyName(): string { return 'token'; diff --git a/app/Models/CVInfo.php b/app/Models/CVInfo.php new file mode 100644 index 0000000..e9a487d --- /dev/null +++ b/app/Models/CVInfo.php @@ -0,0 +1,23 @@ +belongsTo(CV::class, ownerKey: 'cv_id'); + } +} diff --git a/database/migrations/2023_06_16_115109_create_cv_infos_table.php b/database/migrations/2023_06_16_115109_create_cv_infos_table.php new file mode 100644 index 0000000..a050a56 --- /dev/null +++ b/database/migrations/2023_06_16_115109_create_cv_infos_table.php @@ -0,0 +1,35 @@ +id(); + $table->integer('cv_id')->index(); + $table->string('ip', 255); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('cv_infos'); + } +};