mirror of
https://github.com/robonen/metr.git
synced 2026-03-20 02:44:42 +00:00
Offer relations controller
This commit is contained in:
@@ -8,6 +8,5 @@ enum OrderTypesEnum: string
|
|||||||
|
|
||||||
case HOUSE = 'House';
|
case HOUSE = 'House';
|
||||||
case FLAT = 'Flat';
|
case FLAT = 'Flat';
|
||||||
case GUEST_HOUSE = 'Guest';
|
case Land = 'Land';
|
||||||
case HOTEL = 'Hotel';
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Filters;
|
namespace App\Filters;
|
||||||
|
|
||||||
|
use App\Enums\OrderTypesEnum;
|
||||||
use App\Enums\RoomTypesEnum;
|
use App\Enums\RoomTypesEnum;
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
|
|
||||||
@@ -13,7 +14,7 @@ class OfferFilter extends QueryFilter
|
|||||||
*/
|
*/
|
||||||
protected function type(string $type): Builder
|
protected function type(string $type): Builder
|
||||||
{
|
{
|
||||||
if (RoomTypesEnum::tryFrom($type) !== null)
|
if (OrderTypesEnum::tryFrom($type) !== null)
|
||||||
return $this->builder->where('type', $type);
|
return $this->builder->where('type', $type);
|
||||||
|
|
||||||
return $this->builder;
|
return $this->builder;
|
||||||
@@ -23,10 +24,10 @@ class OfferFilter extends QueryFilter
|
|||||||
* @param int $rooms
|
* @param int $rooms
|
||||||
* @return \Illuminate\Database\Eloquent\Builder
|
* @return \Illuminate\Database\Eloquent\Builder
|
||||||
*/
|
*/
|
||||||
protected function rooms(int $rooms): Builder
|
protected function rooms(string $type): Builder
|
||||||
{
|
{
|
||||||
if ($rooms >= 1)
|
if (RoomTypesEnum::tryFrom($type) !== null)
|
||||||
return $this->builder->where('rooms', '>=', $rooms);
|
return $this->builder->where('rooms', $type);
|
||||||
|
|
||||||
return $this->builder;
|
return $this->builder;
|
||||||
}
|
}
|
||||||
@@ -54,4 +55,28 @@ class OfferFilter extends QueryFilter
|
|||||||
|
|
||||||
return $this->builder;
|
return $this->builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $space
|
||||||
|
* @return \Illuminate\Database\Eloquent\Builder
|
||||||
|
*/
|
||||||
|
protected function startSpace(int $space): Builder
|
||||||
|
{
|
||||||
|
if ($space >= 0)
|
||||||
|
return $this->builder->where('space', '>=', $space);
|
||||||
|
|
||||||
|
return $this->builder;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param int $space
|
||||||
|
* @return \Illuminate\Database\Eloquent\Builder
|
||||||
|
*/
|
||||||
|
protected function endSpace(int $space): Builder
|
||||||
|
{
|
||||||
|
if ($space >= 0)
|
||||||
|
return $this->builder->where('space', '<=', $space);
|
||||||
|
|
||||||
|
return $this->builder;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ class OfferController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function show(int $id): OfferResource
|
public function show(int $id): OfferResource
|
||||||
{
|
{
|
||||||
return new OfferResource(Offer::with('images')->findOrFail($id));
|
return new OfferResource(Offer::with(['images', 'user'])->findOrFail($id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -71,8 +71,18 @@ class OfferController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function update(UpdateOfferRequest $request, int $id): void
|
public function update(UpdateOfferRequest $request, int $id): void
|
||||||
{
|
{
|
||||||
$offer = Offer::findOrFail($id);
|
$data = $request->validated();
|
||||||
$offer->update($request->validated());
|
$images = $data['images'];
|
||||||
|
|
||||||
|
$offer = auth()->user()->offers()->findOrFail($id);
|
||||||
|
$offer->update($data);
|
||||||
|
|
||||||
|
foreach ($images as $image)
|
||||||
|
{
|
||||||
|
$offer_photo = OfferPhoto::findOrFail($image['id']);
|
||||||
|
$offer_photo->offer_id = $offer->id;
|
||||||
|
$offer_photo->save();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ namespace App\Models;
|
|||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
|
||||||
class Feedback extends Model
|
class Feedback extends Model
|
||||||
{
|
{
|
||||||
@@ -28,4 +29,14 @@ class Feedback extends Model
|
|||||||
protected $casts = [
|
protected $casts = [
|
||||||
'rating' => 'integer',
|
'rating' => 'integer',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||||
|
*/
|
||||||
|
// public function user(): BelongsTo
|
||||||
|
// {
|
||||||
|
// return $this
|
||||||
|
// ->belongsTo(User::class)
|
||||||
|
// ->select('first_name');
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ use App\Enums\RoomTypesEnum;
|
|||||||
use App\Filters\Filterable;
|
use App\Filters\Filterable;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
|
|
||||||
class Offer extends Model
|
class Offer extends Model
|
||||||
@@ -51,4 +52,15 @@ class Offer extends Model
|
|||||||
{
|
{
|
||||||
return $this->hasMany(OfferPhoto::class);
|
return $this->hasMany(OfferPhoto::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||||
|
*/
|
||||||
|
public function user(): BelongsTo
|
||||||
|
{
|
||||||
|
return $this
|
||||||
|
->belongsTo(User::class)
|
||||||
|
->select('id','first_name', 'last_name', 'middle_name', 'phone', 'photo')
|
||||||
|
->with('feedback');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||||
use Illuminate\Notifications\Notifiable;
|
use Illuminate\Notifications\Notifiable;
|
||||||
use Laravel\Sanctum\HasApiTokens;
|
use Laravel\Sanctum\HasApiTokens;
|
||||||
@@ -35,12 +36,12 @@ class User extends Authenticatable
|
|||||||
'password',
|
'password',
|
||||||
];
|
];
|
||||||
|
|
||||||
public function feedback()
|
public function feedback(): HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany(Feedback::class);
|
return $this->hasMany(Feedback::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function offers()
|
public function offers(): HasMany
|
||||||
{
|
{
|
||||||
return $this->hasMany(Offer::class);
|
return $this->hasMany(Offer::class);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user