From 673f118c0ea40731ed2ecc9f9f1382a279755471 Mon Sep 17 00:00:00 2001 From: "create-issue-branch[bot]" <53036503+create-issue-branch[bot]@users.noreply.github.com> Date: Tue, 16 Jul 2024 12:35:32 +0000 Subject: [PATCH 1/6] Create draft PR for #498 [skip ci] From 74401ea4327f0bdc111cbb76ae8cd2d34d049c73 Mon Sep 17 00:00:00 2001 From: rebeccadjim Date: Fri, 19 Jul 2024 10:38:49 +0200 Subject: [PATCH 2/6] feat(Links): creation of relation from refugee to event --- src/app/Http/Controllers/LinkController.php | 31 +++++++++++++-- src/app/Models/Event.php | 16 ++++++++ src/app/Models/Link.php | 23 +++++++++-- src/app/Models/Place.php | 16 ++++++++ src/resources/views/links/create.blade.php | 4 +- src/resources/views/links/index.blade.php | 43 ++++++++++++++------- 6 files changed, 112 insertions(+), 21 deletions(-) diff --git a/src/app/Http/Controllers/LinkController.php b/src/app/Http/Controllers/LinkController.php index 0738a208f..7a69c7375 100644 --- a/src/app/Http/Controllers/LinkController.php +++ b/src/app/Http/Controllers/LinkController.php @@ -13,6 +13,8 @@ use App\Models\ListRelation; use App\Models\ListRelationType; use App\Models\Refugee; +use App\Models\Event; +use App\Models\Place; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Support\Facades\Auth; @@ -89,11 +91,29 @@ public function update(UpdateLinkRequest $request,Link $link) { * @return Response */ public function index() { - $links = Link::whereRelation('RefugeeFrom.crew', + $links_refugee_to_refugee = Link::whereRelation('RefugeeFrom.crew', 'crews.id', Auth::user()->crew->id)->whereRelation('RefugeeTo.crew', 'crews.id', Auth::user()->crew->id)->get(); + $links_refugee_to_event = Link::whereRelation('RefugeeFrom.crew', + 'crews.id', + Auth::user()->crew->id)->whereRelation('EventTo.crew', + 'crews.id', + Auth::user()->crew->id)->get(); + $links_event_to_refugee = Link::whereRelation('EventFrom.crew', + 'crews.id', + Auth::user()->crew->id)->whereRelation('RefugeeTo.crew', + 'crews.id', + Auth::user()->crew->id)->get(); + $links_event_to_event = Link::whereRelation('EventFrom.crew', + 'crews.id', + Auth::user()->crew->id)->whereRelation('EventTo.crew', + 'crews.id', + Auth::user()->crew->id)->get(); + + // merge all links + $links = $links_refugee_to_refugee->merge($links_refugee_to_event)->merge($links_event_to_refugee)->merge($links_event_to_event); return view("links.index", compact('links')); } @@ -172,8 +192,11 @@ public function store(StoreLinkRequest $request) { * @return Response */ public function create($origin = null, - Refugee $refugee = null) { + Refugee $refugee = null, Event $event = null, Place $place = null) { $lists["refugees"] = Refugee::getAllBestDescriptiveValues(); + $lists["events"] = Event::getAllEventsNames(); + $lists["places"] = Place::getAllPlacesNames(); + $lists["all"] = $lists["refugees"] + $lists["events"] + $lists["places"]; $lists["relations"] = array_column(ListRelation::all()->toArray(), ListControl::where('name', "ListRelation")->first()->displayed_value, @@ -181,7 +204,9 @@ public function create($origin = null, return view("links.create", compact("lists", 'origin', - 'refugee')); + 'refugee', + 'event', + 'place')); } /** diff --git a/src/app/Models/Event.php b/src/app/Models/Event.php index 66b01d0c2..3eb92d6f5 100644 --- a/src/app/Models/Event.php +++ b/src/app/Models/Event.php @@ -61,4 +61,20 @@ public function persons() } return $persons_in_event; } + + public static function getAllEventsNames(){ + $events = Event::all(); + $events_name = []; + foreach ($events as $event){ + $events_name[$event->id] = $event->name; + } + return $events_name; + } + public function crew() { + return $this->hasOneThrough(Crew::class, + ApiLog::class, + "id", "id", + "api_log", + "crew_id"); + } } diff --git a/src/app/Models/Link.php b/src/app/Models/Link.php index 4e4ed4c07..3b9b31177 100644 --- a/src/app/Models/Link.php +++ b/src/app/Models/Link.php @@ -122,6 +122,25 @@ public function refugeeTo() { "to"); } + public function eventFrom() { + return $this->belongsTo(Event::class, + "from"); + } + public function eventTo() { + return $this->belongsTo(Event::class, + "to"); + } + + public function placeFrom() { + return $this->belongsTo(Place::class, + "from"); + } + + public function placeTo() { + return $this->belongsTo(Place::class, + "to"); + } + /** * @return BelongsTo */ @@ -137,8 +156,6 @@ public function crew() { "crew_id"); } - - /** * Get from Id * @return mixed @@ -182,5 +199,5 @@ public function setRelationAttribute($value) { public function getDateAttribute() { return Carbon::parse($this->attributes['date']); } - + } diff --git a/src/app/Models/Place.php b/src/app/Models/Place.php index bff174ba6..b8c35033e 100644 --- a/src/app/Models/Place.php +++ b/src/app/Models/Place.php @@ -45,4 +45,20 @@ class Place extends Model * @var array */ protected $dates = ['deleted_at']; + + public static function getAllPlacesNames() { + $places = self::all(); + $places_names = []; + foreach ($places as $place) { + $places_names[$place->id] = $place->name; + } + return $places_names; + } + public function crew() { + return $this->hasOneThrough(Crew::class, + ApiLog::class, + "id", "id", + "api_log", + "crew_id"); + } } diff --git a/src/resources/views/links/create.blade.php b/src/resources/views/links/create.blade.php index e599fdfb5..1da679866 100644 --- a/src/resources/views/links/create.blade.php +++ b/src/resources/views/links/create.blade.php @@ -28,7 +28,7 @@ class="bg-gray-200 hover:bg-gray-300 text-black font-bold py-2 px-4 rounded">{{ 'type' => 'select-dropdown', 'title' => __('links/create.item_1'), 'placeHolder' => __('links/create.select_item_1'), - 'associated_list' => $lists["refugees"], + 'associated_list' => $lists["all"], 'previous' => old($form_elem, $selected_value = (!empty($refugee) && !empty($origin) && $origin == "from") ? $refugee->id : $form_elem), ]) @@ -81,7 +81,7 @@ class="bg-gray-200 hover:bg-gray-300 text-black font-bold py-2 px-4 rounded">{{ 'type' => 'select-dropdown', 'title' => __('links/create.item_2'), 'placeHolder' => __('links/create.select_item_2'), - 'associated_list' => $lists["refugees"], + 'associated_list' => $lists["all"], 'previous' => old($form_elem, (!empty($refugee) && !empty($origin) && $origin == "to") ? $refugee->id : $form_elem ), ]) diff --git a/src/resources/views/links/index.blade.php b/src/resources/views/links/index.blade.php index e4cc2df0d..4d2084e0b 100644 --- a/src/resources/views/links/index.blade.php +++ b/src/resources/views/links/index.blade.php @@ -48,19 +48,36 @@ class="bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded"> @foreach($links as $link) - - - {{ $link->refugeeFrom->best_descriptive_value }} - - {{ $link->relation->displayed_value_content }} - - {{ $link->refugeeTo->best_descriptive_value }} - - {{ $link->date->format('d/m/Y') }} - @can('update', $link) - {{ __('common.edit') }} - @endcan - + @if (($link->refugeeFrom) && ($link->refugeeTo)) + + + {{ $link->refugeeFrom->best_descriptive_value }} + + {{ $link->relation->displayed_value_content }} + + {{ $link->refugeeTo->best_descriptive_value }} + + {{ $link->date->format('d/m/Y') }} + @can('update', $link) + {{ __('common.edit') }} + @endcan + + @endif + @if (($link->refugeeFrom) && ($link->EventTo)) + + + {{ $link->refugeeFrom->best_descriptive_value }} + + {{ $link->relation->displayed_value_content }} + + {{ $link->EventTo->name }} + + {{ $link->date->format('d/m/Y') }} + @can('update', $link) + {{ __('common.edit') }} + @endcan + + @endif @endforeach From 05fca0c986db0235011336ccf38e34065d43d52b Mon Sep 17 00:00:00 2001 From: rebeccadjim Date: Fri, 26 Jul 2024 10:14:39 -0300 Subject: [PATCH 3/6] feat(Links):all links are now functioning and viewable --- src/app/Http/Controllers/EventController.php | 1 + src/app/Http/Controllers/LinkController.php | 48 ++++++++++---------- src/app/Http/Controllers/PlaceController.php | 3 ++ src/app/Models/Link.php | 7 +++ src/app/Models/Place.php | 7 ++- src/resources/views/links/create.blade.php | 2 +- src/resources/views/links/index.blade.php | 48 ++++++++++++-------- 7 files changed, 71 insertions(+), 45 deletions(-) diff --git a/src/app/Http/Controllers/EventController.php b/src/app/Http/Controllers/EventController.php index 32bc9dbf1..cf30ebdc3 100644 --- a/src/app/Http/Controllers/EventController.php +++ b/src/app/Http/Controllers/EventController.php @@ -71,6 +71,7 @@ public function store(StoreEventRequest $request) */ public function show(Event $event) { + dd($event); return view("event.show", compact("event")); } diff --git a/src/app/Http/Controllers/LinkController.php b/src/app/Http/Controllers/LinkController.php index 7a69c7375..7ed56385c 100644 --- a/src/app/Http/Controllers/LinkController.php +++ b/src/app/Http/Controllers/LinkController.php @@ -56,7 +56,7 @@ public static function handleApiRequest(StoreLinkApiRequest $request) { $link = Link::firstOrCreate($link, ["api_log" => $log->id]); } - array_push($responseArray, $link->id); + array_push ($responseArray, $link->id); } return response(json_encode($responseArray), 201, @@ -90,32 +90,32 @@ public function update(UpdateLinkRequest $request,Link $link) { * * @return Response */ + public function index() { - $links_refugee_to_refugee = Link::whereRelation('RefugeeFrom.crew', - 'crews.id', - Auth::user()->crew->id)->whereRelation('RefugeeTo.crew', - 'crews.id', - Auth::user()->crew->id)->get(); - $links_refugee_to_event = Link::whereRelation('RefugeeFrom.crew', - 'crews.id', - Auth::user()->crew->id)->whereRelation('EventTo.crew', - 'crews.id', - Auth::user()->crew->id)->get(); - $links_event_to_refugee = Link::whereRelation('EventFrom.crew', - 'crews.id', - Auth::user()->crew->id)->whereRelation('RefugeeTo.crew', - 'crews.id', - Auth::user()->crew->id)->get(); - $links_event_to_event = Link::whereRelation('EventFrom.crew', - 'crews.id', - Auth::user()->crew->id)->whereRelation('EventTo.crew', - 'crews.id', - Auth::user()->crew->id)->get(); + + $links_refugee_to_refugee = Link::createLinks('RefugeeFrom', 'RefugeeTo'); + $links_refugee_to_event = Link::createLinks('RefugeeFrom', 'EventTo'); + $links_refugee_to_place = Link::createLinks('RefugeeFrom', 'PlaceTo'); + $links_event_to_refugee = Link::createLinks('EventFrom', 'RefugeeTo'); + $links_event_to_event = Link::createLinks('EventFrom', 'EventTo'); + $links_event_to_place = Link::createLinks('EventFrom', 'PlaceTo'); + $links_place_to_place = Link::createLinks('PlaceFrom', 'PlaceTo'); + $links_place_to_refugee = Link::createLinks('PlaceFrom', 'RefugeeTo'); + $links_place_to_event = Link::createLinks('PlaceFrom', 'EventTo'); + // merge all links - $links = $links_refugee_to_refugee->merge($links_refugee_to_event)->merge($links_event_to_refugee)->merge($links_event_to_event); - return view("links.index", - compact('links')); + $links = $links_refugee_to_refugee + ->merge($links_refugee_to_event) + ->merge($links_refugee_to_place) + ->merge($links_event_to_refugee) + ->merge($links_event_to_event) + ->merge($links_event_to_place) + ->merge($links_place_to_place) + ->merge($links_place_to_refugee) + ->merge($links_place_to_event); + + return view("links.index", compact('links')); } /** diff --git a/src/app/Http/Controllers/PlaceController.php b/src/app/Http/Controllers/PlaceController.php index 35866ad75..30e98ad9f 100644 --- a/src/app/Http/Controllers/PlaceController.php +++ b/src/app/Http/Controllers/PlaceController.php @@ -7,6 +7,7 @@ use App\Models\Place; use \App\Http\Livewire\Forms\Coordinates; use \App\Http\Livewire\Forms\Area; +use App\Models\ApiLog; class PlaceController extends Controller { @@ -37,7 +38,9 @@ public function create() public function store(StorePlaceRequest $request) { + $log = ApiLog::createFromRequest($request, 'Place'); $place = $request->validated(); + $place['api_log'] = $log->id; $place['coordinates'] = Coordinates::encode($place['coordinates']); $place['area'] = Area::encode($place['area']); $place = Place::create($place); diff --git a/src/app/Models/Link.php b/src/app/Models/Link.php index 3b9b31177..46cf6fc62 100644 --- a/src/app/Models/Link.php +++ b/src/app/Models/Link.php @@ -9,6 +9,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\Pivot; use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Support\Facades\Auth; class Link extends Pivot @@ -141,6 +142,12 @@ public function placeTo() { "to"); } + public static function createLinks($relationFrom, $relationTo) { + return self::whereRelation("$relationFrom.crew", 'crews.id', Auth::user()->crew->id) + ->whereRelation("$relationTo.crew", 'crews.id', Auth::user()->crew->id) + ->get(); + } + /** * @return BelongsTo */ diff --git a/src/app/Models/Place.php b/src/app/Models/Place.php index b8c35033e..226606ea7 100644 --- a/src/app/Models/Place.php +++ b/src/app/Models/Place.php @@ -37,7 +37,7 @@ class Place extends Model * * @var array */ - protected $fillable = ['name', 'coordinates', 'description', 'area']; + protected $fillable = ['name', 'coordinates', 'description', 'area', 'api_log']; /** * The attributes that should be mutated to dates. @@ -46,6 +46,11 @@ class Place extends Model */ protected $dates = ['deleted_at']; + public function api_log() + { + return $this->hasOne(ApiLog::class, 'id', 'apiLog_id'); + } + public static function getAllPlacesNames() { $places = self::all(); $places_names = []; diff --git a/src/resources/views/links/create.blade.php b/src/resources/views/links/create.blade.php index 1da679866..918c2c5f0 100644 --- a/src/resources/views/links/create.blade.php +++ b/src/resources/views/links/create.blade.php @@ -43,6 +43,7 @@ class="bg-gray-200 hover:bg-gray-300 text-black font-bold py-2 px-4 rounded">{{
+ @php($form_elem = "relation_id") @@ -113,7 +114,6 @@ class="bg-gray-200 hover:bg-gray-300 text-black font-bold py-2 px-4 rounded">{{ ])
-
@if($event->coordinates) -
-
-
-
- @map([ - 'lat' => json_decode($event->coordinates, true)['lat'], - 'lng' => json_decode($event->coordinates, true)['long'], - 'zoom' => 2, - 'markers' => [ - [ - 'lat' => json_decode($event->coordinates, true)['lat'], - 'lng' => json_decode($event->coordinates, true)['long'], - 'title' => $event->name, - ], - ] - ]) - @mapscripts +
+
+
+
+ @include('map.leaflet', [ + 'initialMarkers' => [ + ['lat' => json_decode($event->coordinates, true)['lat'], 'lng' => json_decode($event->coordinates, true)['long']] + ], + 'initialArea' => [json_decode($event->area, true)['polygons'] + ]]) +
-
@endif + @can("viewMenu", Link::class) +
+
+
+

+ {{ __('event/show.relation') }} +

+
+ + + + + + + + + + @if($event->relations) + @foreach($event->relations as $sided_relations) + @foreach($sided_relations as $link) + + + + + + + @endforeach + @endforeach + @endif + @if(Link::$quickAdd) + @can('create', Link::class) + + + + + + + + + + + + + + + + + + + @endcan + @endif +
{{ __('event/show.item_relation') }}
+ {{ __('event/show.from') }} + + {{ __('event/show.relation') }} + + {{ __('event/show.to') }} +
+ pivot->from)}}"> + @if($link->pivot->refugeeFrom) + {{$link->pivot->refugeeFrom->best_descriptive_value }} + @elseif($link->pivot->eventFrom) + {{$link->pivot->eventFrom->name}} + @elseif($link->pivot->placeFrom) + {{$link->pivot->placeFrom->name}} + @endif + + + {{ $link->name }} + {{$link->detail}} + + pivot->to)}}"> + @if($link->pivot->refugeeTo) + {{$link->pivot->refugeeTo->best_descriptive_value }} + @elseif($link->pivot->eventTo) + {{$link->pivot->eventTo->name}} + @elseif($link->pivot->placeTo) + {{$link->pivot->placeTo->name}} + @endif + + + pivot->id)}}"> + {{ __('event/show.edit') }} + +
+ id) }}"> + {{ $event->name }} + + + 'from', 'event' => $event]) }}" + class="bg-green-200 hover:bg-green-300 + text-black font-bold py-2 px-4 rounded"> + {{ __('event/show.add_to') }} + +
+ 'to', 'event' => $event]) }}" + class="bg-green-200 hover:bg-green-300 text-black + font-bold py-2 px-4 rounded"> + {{ __('event/show.add_from') }} + + + id) }}"> + {{ $event->name }} + +
+
+
+
+
+ @endcan
+ @can("viewMenu", Link::class) +
+
+
+

+ {{ __('place/show.relation') }} +

+
+ + + + + + + + + + @if($place->relations) + @foreach($place->relations as $sided_relations) + @foreach($sided_relations as $link) + + + + + + + @endforeach + @endforeach + @endif + @if(Link::$quickAdd) + @can('create', Link::class) + + + + + + + + + + + + + + + + + + @endcan + @endif +
{{ __('place/show.item_relation') }}
+ {{ __('place/show.from') }} + + {{ __('place/show.relation') }} + + {{ __('place/show.to') }} +
+ pivot->from)}}"> + @if($link->pivot->refugeeFrom) + {{$link->pivot->refugeeFrom->best_descriptive_value }} + @elseif($link->pivot->eventFrom) + {{$link->pivot->eventFrom->name}} + @elseif($link->pivot->placeFrom) + {{$link->pivot->placeFrom->name}} + @endif + + + {{ $link->name }} + {{$link->detail}} + + pivot->to)}}"> + @if($link->pivot->refugeeTo) + {{$link->pivot->refugeeTo->best_descriptive_value }} + @elseif($link->pivot->eventTo) + {{$link->pivot->eventTo->name}} + @elseif($link->pivot->placeTo) + {{$link->pivot->placeTo->name}} + @endif + + + pivot->id)}}"> + {{ __('place/show.edit') }} + +
+ id) }}"> + {{ $place->name }} + + + 'from', 'place' => $place]) }}" + class="bg-green-200 hover:bg-green-300 + text-black font-bold py-2 px-4 rounded"> + {{ __('place/show.add_to') }} + +
+ 'to', 'place' => $place]) }}" + class="bg-green-200 hover:bg-green-300 text-black + font-bold py-2 px-4 rounded"> + {{ __('place/show.add_from') }} + + + id) }}"> + {{ $place->name }} + +
+
+
+
+
+ @endcan