diff --git a/app/Http/Controllers/RiceShrimpWeeklyPriceController.php b/app/Http/Controllers/RiceShrimpWeeklyPriceController.php index 2c4935e..e443c8e 100644 --- a/app/Http/Controllers/RiceShrimpWeeklyPriceController.php +++ b/app/Http/Controllers/RiceShrimpWeeklyPriceController.php @@ -11,6 +11,7 @@ use App\Services\OperationLogService; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\ResourceCollection; +use Peidikeji\Keywords\Models\Keywords; class RiceShrimpWeeklyPriceController extends Controller { @@ -22,7 +23,7 @@ class RiceShrimpWeeklyPriceController extends Controller */ public function index(Request $request): ResourceCollection { - $riceShrimpWeeklyPrices = RiceShrimpWeeklyPrice::with(['createdBy', 'updatedBy']) + $riceShrimpWeeklyPrices = RiceShrimpWeeklyPrice::with(['createdBy', 'updatedBy', 'weekObj']) ->filter($request->all()) ->latest('id') ->paginate(20); @@ -59,7 +60,7 @@ class RiceShrimpWeeklyPriceController extends Controller (new OperationLogService())->inLog(OperationType::Create, '', $riceShrimpWeeklyPrice, $request->input()); - return RiceShrimpWeeklyPriceResource::make($riceShrimpWeeklyPrice); + return RiceShrimpWeeklyPriceResource::make($riceShrimpWeeklyPrice->loadMissing(['weekObj'])); } /** @@ -92,7 +93,7 @@ class RiceShrimpWeeklyPriceController extends Controller (new OperationLogService())->inLog(OperationType::Update, '', $riceShrimpWeeklyPrice, $request->input()); return RiceShrimpWeeklyPriceResource::make( - $riceShrimpWeeklyPrice->loadMissing(['createdBy', 'updatedBy']) + $riceShrimpWeeklyPrice->loadMissing(['createdBy', 'updatedBy', 'weekObj']) ); } diff --git a/app/Http/Controllers/WeeksPerYearController.php b/app/Http/Controllers/WeeksPerYearController.php index 563530d..5a3baa6 100644 --- a/app/Http/Controllers/WeeksPerYearController.php +++ b/app/Http/Controllers/WeeksPerYearController.php @@ -10,6 +10,6 @@ class WeeksPerYearController extends Controller { public function __invoke(Request $request) { - return Keywords::select('name', 'key')->where('type_key', 'weeks-per-year')->get(); + return Keywords::select('name', 'id')->where('type_key', 'weeks-per-year')->get(); } } diff --git a/app/Http/Requestes/RiceShrimpWeeklyPriceStoreRequest.php b/app/Http/Requestes/RiceShrimpWeeklyPriceStoreRequest.php index aefff22..b0d8102 100644 --- a/app/Http/Requestes/RiceShrimpWeeklyPriceStoreRequest.php +++ b/app/Http/Requestes/RiceShrimpWeeklyPriceStoreRequest.php @@ -2,8 +2,11 @@ namespace App\Http\Requestes; +use App\Models\RiceShrimpWeeklyPrice; use App\Rules\Quarter; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Rule; +use Peidikeji\Keywords\Models\Keywords; class RiceShrimpWeeklyPriceStoreRequest extends FormRequest { @@ -16,7 +19,13 @@ class RiceShrimpWeeklyPriceStoreRequest extends FormRequest { return [ 'year' => ['required', 'int'], - 'week' => ['required', 'int'], + 'week' => [ + 'required', + 'int', + Rule::exists(Keywords::class, 'id')->where(function ($query) { + return $query->where('type_key', 'weeks-per-year'); + }), + ], 'price' => ['required', 'int'], ]; } diff --git a/app/Http/Requestes/RiceShrimpWeeklyPriceUpdateRequest.php b/app/Http/Requestes/RiceShrimpWeeklyPriceUpdateRequest.php index 1e19acc..cd9d790 100644 --- a/app/Http/Requestes/RiceShrimpWeeklyPriceUpdateRequest.php +++ b/app/Http/Requestes/RiceShrimpWeeklyPriceUpdateRequest.php @@ -3,6 +3,8 @@ namespace App\Http\Requestes; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Validation\Rule; +use Peidikeji\Keywords\Models\Keywords; class RiceShrimpWeeklyPriceUpdateRequest extends FormRequest { @@ -15,7 +17,13 @@ class RiceShrimpWeeklyPriceUpdateRequest extends FormRequest { return [ 'year' => ['filled', 'int'], - 'week' => ['filled', 'int'], + 'week' => [ + 'filled', + 'int', + Rule::exists(Keywords::class, 'id')->where(function ($query) { + return $query->where('type_key', 'weeks-per-year'); + }), + ], 'price' => ['filled', 'int'], ]; } diff --git a/app/Http/Resources/RiceShrimpWeeklyPriceResource.php b/app/Http/Resources/RiceShrimpWeeklyPriceResource.php index f395c5c..5c6b4f3 100644 --- a/app/Http/Resources/RiceShrimpWeeklyPriceResource.php +++ b/app/Http/Resources/RiceShrimpWeeklyPriceResource.php @@ -18,6 +18,7 @@ class RiceShrimpWeeklyPriceResource extends JsonResource 'id' => $this->id, 'year' => $this->year, 'week' => $this->week, + 'week_label' => $this->weekObj?->name, 'price' => $this->price, 'created_by' => AdminUserResource::make($this->whenLoaded('createdBy')), 'updated_by' => AdminUserResource::make($this->whenLoaded('updatedBy')), diff --git a/app/Models/RiceShrimpWeeklyPrice.php b/app/Models/RiceShrimpWeeklyPrice.php index 4095511..75174ae 100644 --- a/app/Models/RiceShrimpWeeklyPrice.php +++ b/app/Models/RiceShrimpWeeklyPrice.php @@ -5,6 +5,7 @@ namespace App\Models; use EloquentFilter\Filterable; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Peidikeji\Keywords\Models\Keywords; class RiceShrimpWeeklyPrice extends Model { @@ -14,6 +15,11 @@ class RiceShrimpWeeklyPrice extends Model 'year', 'week', 'price', 'created_by', 'updated_by', ]; + public function weekObj() + { + return $this->belongsTo(Keywords::class, 'week'); + } + public function createdBy() { return $this->belongsTo(AdminUser::class, 'created_by'); diff --git a/database/seeders/KeywordsTableSeeder.php b/database/seeders/KeywordsTableSeeder.php index 74e5037..60777f9 100644 --- a/database/seeders/KeywordsTableSeeder.php +++ b/database/seeders/KeywordsTableSeeder.php @@ -38,8 +38,8 @@ class KeywordsTableSeeder extends Seeder $list = []; for ($i=1; $i <= 12; $i++) { - for ($j=1; $j <= 4; $i++) { - $list[] = ['key' => ($i-1)*4+$j, 'name' => "{$i}月第{$j}周", 'value' => '']; + for ($j=1; $j <= 4; $j++) { + $list[] = ['key' => ($i-1)*4+$j, 'name' => "{$i}月第{$j}周", 'value' => null]; } }