Explorar o código

ajustes no endereco para ter informacao corretamente sobre todos os campos do endereco

Gustavo Zanatta hai 1 mes
pai
achega
c906ca347a

+ 2 - 0
app/Http/Requests/AddressRequest.php

@@ -17,6 +17,8 @@ class AddressRequest extends FormRequest
                 'regex:/^[0-9]{8}$/',
             ],
             'address' => 'sometimes|string',
+            'number' => 'nullable|string|max:20',
+            'district' => 'nullable|string|max:255',
             'has_complement' => 'sometimes|boolean',
             'complement' => 'nullable|string|max:255',
             'nickname' => 'nullable|string|max:255',

+ 8 - 3
app/Http/Resources/AddressResource.php

@@ -20,15 +20,20 @@ class AddressResource extends JsonResource
             'source_id' => $this->source_id,
             'zip_code' => $this->zip_code,
             'address' => $this->address,
+            'number' => $this->number,
+            'district' => $this->district,
             'has_complement' => $this->has_complement,
             'complement' => $this->complement,
             'nickname' => $this->nickname,
             'instructions' => $this->instructions,
             'city_id' => $this->city_id,
             'state_id' => $this->state_id,
-            'address_full' => "{$this->address}" .
-                ($this->complement ? " - {$this->complement}" : '') .
-                ($this->city ? " , {$this->city->name}/{$this->state?->code}" : ''), 
+            'address_full' => implode(', ', array_filter([
+                $this->address,
+                $this->number ? "nº {$this->number}" : null,
+                $this->district,
+                $this->city ? "{$this->city->name}/{$this->state?->code}" : null,
+            ])),
             'city' => $this->whenLoaded('city'),
             'state' => $this->whenLoaded('state'),
             'address_type' => $this->address_type,

+ 9 - 3
app/Http/Resources/CustomScheduleResource.php

@@ -37,13 +37,19 @@ class CustomScheduleResource extends JsonResource
                     'client_name' => $this->schedule->client?->user?->name,
                     'address_id' => $this->schedule->address_id,
                     'address' => $this->schedule->address ? [
-                        'street' => $this->schedule->address->street,
+                        'address' => $this->schedule->address->address,
                         'number' => $this->schedule->address->number,
+                        'district' => $this->schedule->address->district,
                         'complement' => $this->schedule->address->complement,
-                        'neighborhood' => $this->schedule->address->neighborhood,
+                        'zip_code' => $this->schedule->address->zip_code,
                         'city' => $this->schedule->address->city,
                         'state' => $this->schedule->address->state,
-                        'zipcode' => $this->schedule->address->zipcode,
+                        'address_full' => implode(', ', array_filter([
+                            $this->schedule->address->address,
+                            $this->schedule->address->number ? "nº {$this->schedule->address->number}" : null,
+                            $this->schedule->address->district,
+                            $this->schedule->address->city ? "{$this->schedule->address->city->name}/{$this->schedule->address->state?->code}" : null,
+                        ])),
                     ] : null,
                     'date' => $this->schedule->date?->format('d/m/Y'),
                     'period_type' => $this->schedule->period_type,

+ 6 - 5
app/Http/Resources/ScheduleResource.php

@@ -16,11 +16,12 @@ class ScheduleResource extends JsonResource
             'provider_id' => $this->provider_id,
             'provider_name' => $this->provider?->user?->name,
             'address_id' => $this->address_id,
-            'address_full' => $this->address ? 
-                "{$this->address->address}" . 
-                ($this->address->complement ? " - {$this->address->complement}" : '') .
-                " , {$this->address->city->name}/{$this->address->state->code}" 
-                : null,
+            'address_full' => $this->address ? implode(', ', array_filter([
+                $this->address->address,
+                $this->address->number ? "nº {$this->address->number}" : null,
+                $this->address->district,
+                $this->address->city ? "{$this->address->city->name}/{$this->address->state?->code}" : null,
+            ])) : null,
             'address' => new AddressResource($this->whenLoaded('address')),
             'date' => $this->date?->format('Y-m-d'),
             'period_type' => $this->period_type,

+ 2 - 0
app/Models/Address.php

@@ -15,6 +15,8 @@ class Address extends Model
         'source_id',
         'zip_code',
         'address',
+        'number',
+        'district',
         'has_complement',
         'complement',
         'nickname',

+ 26 - 12
app/Services/DashboardService.php

@@ -27,7 +27,7 @@ class DashboardService
 
     $summaryInfos = [
       'name' => $user->name,
-      'address' => Address::where('source', 'client')->where('source_id', $cliente->id)->first()->address ?? null,
+      'address' => Address::where('source', 'client')->where('source_id', $cliente->id)->with(['city', 'state'])->first(),
       'pending_services' => Schedule::where('client_id', $cliente->id)->where('status', 'pending')->count(),
     ];
 
@@ -35,9 +35,9 @@ class DashboardService
       ->whereIn('schedules.status', ['accepted', 'paid'])
       ->leftJoin('providers', 'providers.id', '=', 'schedules.provider_id')
       ->leftJoin('users as provider_user', 'provider_user.id', '=', 'providers.user_id')
-      ->leftJoin('addresses', function ($join) {
-        $join->on('addresses.source_id', '=', 'providers.id')
-          ->where('addresses.source', 'provider');
+      ->leftJoin('addresses as provider_address', function ($join) {
+        $join->on('provider_address.source_id', '=', 'providers.id')
+          ->where('provider_address.source', 'provider');
       })
       ->where('schedules.date', '>=', now()->toDateString())
       ->select(
@@ -49,7 +49,8 @@ class DashboardService
         'schedules.total_amount',
         'schedules.period_type',
         'schedules.schedule_type',
-        'addresses.address_type',
+        'provider_address.district',
+        'provider_address.address_type',
       )
       ->orderBy('schedules.date', 'asc')
       ->get();
@@ -58,9 +59,9 @@ class DashboardService
       ->where('schedules.status', 'finished')
       ->leftJoin('providers', 'providers.id', '=', 'schedules.provider_id')
       ->leftJoin('users as provider_user', 'provider_user.id', '=', 'providers.user_id')
-      ->leftJoin('addresses', function ($join) {
-        $join->on('addresses.source_id', '=', 'providers.id')
-          ->where('addresses.source', 'provider');
+      ->leftJoin('addresses as provider_address', function ($join) {
+        $join->on('provider_address.source_id', '=', 'providers.id')
+          ->where('provider_address.source', 'provider');
       })
       ->select(
         'schedules.id',
@@ -124,7 +125,7 @@ class DashboardService
 
     $summaryInfos = [
       'name' => $user->name,
-      'address' => Address::where('source', 'provider')->where('source_id', $provider->id)->first()->address ?? null,
+      'address' => Address::where('source', 'provider')->where('source_id', $provider->id)->with(['city', 'state'])->first(),
       'pending_services' => Schedule::where('provider_id', $provider->id)->where('status', 'pending')->count(),
     ];
 
@@ -144,8 +145,11 @@ class DashboardService
       ->where('schedules.status', 'pending')
       ->leftJoin('clients', 'clients.id', '=', 'schedules.client_id')
       ->leftJoin('users as client_user', 'client_user.id', '=', 'clients.user_id')
+      ->leftJoin('addresses as client_address', function ($join) {
+        $join->on('client_address.source_id', '=', 'clients.id')
+          ->where('client_address.source', 'client');
+      })
       ->select(
-        // bairro
         'schedules.id',
         'client_user.name as client_name',
         'clients.average_rating',
@@ -156,6 +160,7 @@ class DashboardService
         'schedules.total_amount',
         'schedules.period_type',
         'schedules.schedule_type',
+        'client_address.district',
       )
       ->orderBy('schedules.date', 'asc')
       ->get();
@@ -165,6 +170,10 @@ class DashboardService
       ->leftJoin('clients', 'clients.id', '=', 'schedules.client_id')
       ->leftJoin('users as client_user', 'client_user.id', '=', 'clients.user_id')
       ->leftJoin('custom_schedules', 'custom_schedules.schedule_id', '=', 'schedules.id')
+      ->leftJoin('addresses as client_address', function ($join) {
+        $join->on('client_address.source_id', '=', 'clients.id')
+          ->where('client_address.source', 'client');
+      })
       ->select(
         'schedules.id',
         'client_user.name as client_name',
@@ -174,8 +183,8 @@ class DashboardService
         'schedules.total_amount',
         'schedules.period_type',
         'schedules.schedule_type',
-        'custom_schedules.offers_meal'
-        // bairro
+        'custom_schedules.offers_meal',
+        'client_address.district',
       )
       ->orderBy('schedules.date', 'asc')
       ->get();
@@ -184,6 +193,10 @@ class DashboardService
       ->where('schedules.status', 'pending')
       ->leftJoin('clients', 'clients.id', '=', 'schedules.client_id')
       ->leftJoin('users as client_user', 'client_user.id', '=', 'clients.user_id')
+      ->leftJoin('addresses as client_address', function ($join) {
+        $join->on('client_address.source_id', '=', 'clients.id')
+          ->where('client_address.source', 'client');
+      })
       ->select(
         'schedules.id',
         'client_user.name as client_name',
@@ -193,6 +206,7 @@ class DashboardService
         'schedules.end_time',
         'schedules.period_type',
         'schedules.schedule_type',
+        'client_address.district',
       )
       ->orderBy('schedules.date', 'asc')
       ->get();

+ 26 - 0
database/migrations/2026_03_26_120828_alter_address_add_fields.php

@@ -0,0 +1,26 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+  public function up(): void
+  {
+    Schema::table('addresses', function (Blueprint $table) {
+      //
+        $table->string('number')->nullable();
+        $table->string('district')->nullable();
+    });
+  }
+
+  public function down(): void
+  {
+    Schema::table('addresses', function (Blueprint $table) {
+      //
+      $table->dropColumn('number');
+      $table->dropColumn('district');
+    });
+  }
+};

+ 2 - 0
database/seeders/UserTypePermissionSeeder.php

@@ -63,6 +63,7 @@ class UserTypePermissionSeeder extends Seeder
             ['scope' => 'dashboard', 'bits' => 1],
             ['scope' => 'config.user', 'bits' => 5],
             ['scope' => 'config.address', 'bits' => 271],
+            ['scope' => 'config.city', 'bits' => 1],
           ];
           $this->seedUserTypePermissions($providerPermissions, UserTypeEnum::PROVIDER->value);
           break;
@@ -72,6 +73,7 @@ class UserTypePermissionSeeder extends Seeder
             ['scope' => 'dashboard', 'bits' => 1],
             ['scope' => 'config.user', 'bits' => 5],
             ['scope' => 'config.address', 'bits' => 271],
+            ['scope' => 'config.city', 'bits' => 1],
           ];
           $this->seedUserTypePermissions($clientPermissions, UserTypeEnum::CLIENT->value);
           break;