Ver código fonte

brigadiers moved to users

Alexander Musikhin 8 meses atrás
pai
commit
2445088530

+ 3 - 3
app/Http/Controllers/OrderController.php

@@ -3,12 +3,12 @@
 namespace App\Http\Controllers;
 
 use App\Http\Requests\Order\StoreOrderRequest;
-use App\Models\Brigadier;
 use App\Models\Dictionary\Area;
 use App\Models\Dictionary\District;
 use App\Models\ObjectType;
 use App\Models\Order;
 use App\Models\OrderStatus;
+use App\Models\Role;
 use App\Models\User;
 use Illuminate\Http\Request;
 
@@ -50,8 +50,8 @@ class OrderController extends Controller
         $this->data['areas'] = Area::query()->get()->pluck('name', 'id');
         $this->data['objectTypes'] = ObjectType::query()->get()->pluck('name', 'id');
         $this->data['orderStatuses'] =OrderStatus::query()->get()->pluck('name', 'id');
-        $this->data['brigadiers'] = Brigadier::query()->get()->pluck('name', 'id');
-        $this->data['users'] = User::query()->get()->pluck('name', 'id');
+        $this->data['brigadiers'] = User::query()->where('role', Role::BRIGADIER)->get()->pluck('name', 'id');
+        $this->data['users'] = User::query()->whereIn('role', [Role::MANAGER, Role::ADMIN])->get()->pluck('name', 'id');
     }
 
 

+ 7 - 0
app/Http/Controllers/ProductSKUController.php

@@ -3,6 +3,7 @@
 namespace App\Http\Controllers;
 
 use App\Helpers\DateHelper;
+use App\Http\Requests\ProductSKUStoreRequest;
 use App\Models\ProductSKU;
 use Illuminate\Http\Request;
 use Illuminate\Support\Str;
@@ -65,4 +66,10 @@ class ProductSKUController extends Controller
         $this->data['products_sku'] = $q->paginate()->withQueryString();
         return view('products_sku.index', $this->data);
     }
+
+    public function store(ProductSKUStoreRequest $request)
+    {
+        ProductSKU::query()->create($request->validated());
+        return redirect()->route('product_sku.index');
+    }
 }

+ 1 - 1
app/Http/Requests/Order/StoreOrderRequest.php

@@ -32,7 +32,7 @@ class StoreOrderRequest extends FormRequest
             'contract_number'   => 'nullable|string',
             'comment'           => 'nullable|string',
             'installation_date' => 'nullable|date',
-            'brigadier_id'      => 'nullable|exists:brigadiers,id',
+            'brigadier_id'      => 'nullable|exists:users,id',
             'order_status_id'   => 'required|exists:order_statuses,id',
             'tg_group_name'     => 'nullable|string',
             'tg_group_link'     => 'nullable|string',

+ 38 - 0
app/Http/Requests/ProductSKUStoreRequest.php

@@ -0,0 +1,38 @@
+<?php
+
+namespace App\Http\Requests;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class ProductSKUStoreRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     */
+    public function authorize(): bool
+    {
+        return auth()->check();
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array
+     */
+    public function rules(): array
+    {
+        return [
+            'product_id'            => 'required|exists:products,id',
+            'order_id'              => 'nullable|exists:orders,id',
+            'status'                => 'nullable|string',
+            'rfid'                  => 'nullable|string',
+            'factory_number'        => 'nullable|string',
+            'manufacturer_date'     => 'nullable|date',
+            'service_life'          => 'nullable|integer',
+            'certificate_number'    => 'nullable|string',
+            'certificate_date'      => 'nullable|date',
+            'certificate_issuer'    => 'nullable|string',
+            'certificate_type'      => 'nullable|string',
+        ];
+    }
+}

+ 0 - 10
app/Models/Brigadier.php

@@ -1,10 +0,0 @@
-<?php
-
-namespace App\Models;
-
-use Illuminate\Database\Eloquent\Model;
-
-class Brigadier extends Model
-{
-    protected $fillable = ['name'];
-}

+ 1 - 1
app/Models/Order.php

@@ -59,7 +59,7 @@ class Order extends Model
 
     public function brigadier(): BelongsTo
     {
-        return $this->belongsTo(Brigadier::class);
+        return $this->belongsTo(User::class, 'brigadier_id', 'id');
     }
 
     public function orderStatus(): BelongsTo

+ 4 - 1
app/Models/Role.php

@@ -7,13 +7,16 @@ class Role
     const ADMIN     = 'admin';
     const MANAGER   = 'manager';
 
+    const BRIGADIER = 'brigadier';
     const VALID_ROLES = [
         self::ADMIN,
         self::MANAGER,
+        self::BRIGADIER,
     ];
 
     const NAMES = [
         self::ADMIN     => 'Админ',
-        self::MANAGER   => 'Менеджер'
+        self::MANAGER   => 'Менеджер',
+        self::BRIGADIER => 'Бригадир',
     ];
 }

+ 0 - 28
database/migrations/2025_03_04_153327_create_brigadiers_table.php

@@ -1,28 +0,0 @@
-<?php
-
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\Schema;
-
-return new class extends Migration
-{
-    /**
-     * Run the migrations.
-     */
-    public function up(): void
-    {
-        Schema::create('brigadiers', function (Blueprint $table) {
-            $table->id();
-            $table->string('name')->unique();
-            $table->timestamps();
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     */
-    public function down(): void
-    {
-        Schema::dropIfExists('brigadiers');
-    }
-};

+ 1 - 1
database/migrations/2025_03_24_153700_create_orders_table.php

@@ -22,7 +22,7 @@ return new class extends Migration
             $table->string('contract_number')->nullable();                                      // номер дог-ра
             $table->text('comment')->nullable();                                                // комментарий
             $table->date('installation_date')->nullable();                                      // дата монтажа
-            $table->foreignId('brigadier_id')->constrained('brigadiers')->restrictOnDelete(); // бригадир
+            $table->foreignId('brigadier_id')->constrained('users')->restrictOnDelete(); // бригадир
             $table->foreignId('order_status_id')->constrained('order_statuses')->restrictOnDelete(); // статус объекта
             $table->string('tg_group_name')->nullable();
             $table->string('tg_group_link')->nullable();

+ 16 - 9
database/seeders/BrigadierSeeder.php

@@ -2,8 +2,8 @@
 
 namespace Database\Seeders;
 
-use App\Models\Brigadier;
-use Illuminate\Database\Console\Seeds\WithoutModelEvents;
+use App\Models\Role;
+use App\Models\User;
 use Illuminate\Database\Seeder;
 
 class BrigadierSeeder extends Seeder
@@ -13,12 +13,19 @@ class BrigadierSeeder extends Seeder
      */
     public function run(): void
     {
-        Brigadier::updateOrCreate(['id' => 1], ['name' => 'Не выбран']);
-        if(Brigadier::query()->get()->count() == 1) {
-            Brigadier::updateOrCreate(['name' => 'Ленин']);
-            Brigadier::updateOrCreate(['name' => 'Сталин']);
-            Brigadier::updateOrCreate(['name' => 'Брежнев']);
-            Brigadier::updateOrCreate(['name' => 'Хрущёв']);
-        }
+        User::query()->updateOrCreate(['email' => 'br1@admin.com'],
+            [
+                'name' => 'Ленин',
+                'role' => Role::BRIGADIER,
+                'password' => bcrypt('123456'),
+            ]
+        );
+        User::query()->updateOrCreate(['email' => 'br2@admin.com'],
+            [
+                'name' => 'Сталин',
+                'role' => Role::BRIGADIER,
+                'password' => bcrypt('123456'),
+            ]
+        );
     }
 }

+ 1 - 1
resources/sass/app.scss

@@ -29,7 +29,7 @@
 }
 
 .table-buttons {
-  position: absolute;
+  position: fixed;
   right: 0;
   opacity: 0.5;
   z-index: 999;

+ 1 - 1
routes/web.php

@@ -52,7 +52,7 @@ Route::middleware('auth:web')->group(function () {
     // Склад - Заказы МАФ
     Route::get('product_sku', [ProductSKUController::class, 'index'])->name('product_sku.index');
     Route::get('product_sku/{product_sku}', [ProductSKUController::class, 'show'])->name('product_sku.show');
-
+    Route::post('product_sku/store', [ProductSKUController::class, 'store'])->name('product_sku.store');
 
     // ajax search products
     Route::get('product/search', [ProductController::class, 'search'])->name('product.search');