diff --git a/app/Http/Livewire/Collaborators/Associates/Edit.php b/app/Http/Livewire/Collaborators/Associates/Edit.php new file mode 100644 index 0000000..f3f895e --- /dev/null +++ b/app/Http/Livewire/Collaborators/Associates/Edit.php @@ -0,0 +1,103 @@ +associate = $associate; + $this->name = $associate->name; + $this->birthday = $associate->birthday->format('d/m/Y'); + $this->document = $associate->document; + $this->address = $associate->address; + $this->profile = $associate->profile; + $this->email = $associate->email; + $this->discussion = $associate->discussion; + $this->contribution = $associate->contribution; + } + + public function save() + { + $this->validate([ + 'address.city' => ['required', 'string'], + 'address.complement' => ['nullable', 'string'], + 'address.country' => ['required', 'string'], + 'address.neighbourhood' => ['required', 'string'], + 'address.number' => ['required', 'string'], + 'address.postcode' => ['required', 'string'], + 'address.state' => ['required', 'string'], + 'address.street' => ['required', 'string'], + 'birthday' => ['required', 'date_format:d/m/Y'], + 'contribution' => ['required', 'numeric'], + 'discussion' => ['required', 'string', 'in:all,daily,occasional'], + 'document.number' => ['required', 'string'], + 'document.type' => ['required', 'string', 'in:cpf,identity,passport'], + 'email' => ['required', 'email', Rule::unique('associates')->ignore($this->associate->id)], + 'name' => ['required'], + 'profile.bike_activities' => ['nullable', 'string'], + 'profile.bike_use' => ['nullable', 'string'], + 'profile.comments' => ['nullable', 'string'], + 'profile.expectation' => ['nullable', 'string'], + 'profile.gender' => ['required', 'string', 'in:male,female,other'], + 'profile.occupation' => ['required', 'string'], + 'profile.org_participation' => ['nullable', 'string'], + 'profile.phone' => ['required', 'string'], + 'profile.scholarity' => ['required', 'string', 'in:primary-school,high-school,bachelor,master,phd'], + 'profile.secondary_emails' => ['nullable', 'string'], + 'profile.social' => ['nullable', 'string'], + 'profile.ucb_comments' => ['nullable', 'string'], + 'profile.website' => ['nullable', 'string'], + ]); + + $this->associate->update([ + 'address' => $this->address, + 'birthday' => Carbon::createFromFormat('d/m/Y', $this->birthday), + 'contribution' => $this->contribution, + 'discussion' => $this->discussion, + 'document' => $this->document, + 'email' => $this->email, + 'name' => $this->name, + 'profile' => $this->profile, + ]); + + session()->flash('notify-saved'); + } + + public function render() + { + return view('livewire.collaborators.associates.edit'); + } +} diff --git a/resources/lang/pt-BR.json b/resources/lang/pt-BR.json index 7131c2b..138f48b 100644 --- a/resources/lang/pt-BR.json +++ b/resources/lang/pt-BR.json @@ -1,5 +1,7 @@ { "Search:": "Buscar:", "Show": "Mostrar", - "entries": "registros" + "entries": "registros", + "Save": "Salvar", + "Saved": "Salvo" } diff --git a/resources/lang/pt-BR/associates.php b/resources/lang/pt-BR/associates.php index a461557..a58a2fa 100644 --- a/resources/lang/pt-BR/associates.php +++ b/resources/lang/pt-BR/associates.php @@ -2,6 +2,9 @@ return [ 'model' => 'Associados', + 'index' => 'Índice', + 'show' => 'Dados do associado', + 'edit' => 'Editar associado', 'attributes' => [ 'category' => 'Categoria', 'nature' => 'Natureza', diff --git a/resources/svg/breadcrumb-separator.svg b/resources/svg/breadcrumb-separator.svg new file mode 100644 index 0000000..998f18e --- /dev/null +++ b/resources/svg/breadcrumb-separator.svg @@ -0,0 +1 @@ + diff --git a/resources/views/livewire/associates/auth/register/individual.blade.php b/resources/views/livewire/associates/auth/register/individual.blade.php index ff77bea..45c8e1f 100644 --- a/resources/views/livewire/associates/auth/register/individual.blade.php +++ b/resources/views/livewire/associates/auth/register/individual.blade.php @@ -18,250 +18,7 @@
-
- -
- -

- Informações pessoais -

- -

- Conte-nos um pouco sobre você. -

- -
- -
-
- - - - - - - - - - - - - - - -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - -
-
- -
- -
- -
- -

- Dados de contato -

- -

- Endereço e meios de comunicação digitais. -

- -
- -
-
- -
- - - - @foreach (\App\Country::all() as $country) - - @endforeach - - - - @if ($address['country'] === 'BR') - - - - @else - - - - @endif - -
- - - - - -
- - - - - - - - - - - - - -
- -
- - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
-
- -
- -
- -
- -

- Dados de contato -

- -

- Endereço e meios de comunicação digitais. -

- -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Outro - - - - - - - -
-
- -
+ @include('livewire.associates.partials.forms.individual')
@@ -296,7 +53,6 @@
-
diff --git a/resources/views/livewire/associates/partials/forms/individual.blade.php b/resources/views/livewire/associates/partials/forms/individual.blade.php new file mode 100644 index 0000000..0352719 --- /dev/null +++ b/resources/views/livewire/associates/partials/forms/individual.blade.php @@ -0,0 +1,245 @@ +
+ +
+ +

+ Informações pessoais +

+ +

+ Conte-nos um pouco sobre você. +

+ +
+ +
+
+ + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +

+ Dados de contato +

+ +

+ Endereço e meios de comunicação digitais. +

+ +
+ +
+
+ +
+ + + + @foreach (\App\Country::all() as $country) + + @endforeach + + + + @if ($address['country'] === 'BR') + + + + @else + + + + @endif + +
+ + + + + +
+ + + + + + + + + + + + + +
+ +
+ + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ +
+ +
+ +

+ Dados de contato +

+ +

+ Endereço e meios de comunicação digitais. +

+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Outro + + + + + + + +
+
+ +
+ diff --git a/resources/views/livewire/collaborators/associates/edit.blade.php b/resources/views/livewire/collaborators/associates/edit.blade.php new file mode 100644 index 0000000..f56d7d6 --- /dev/null +++ b/resources/views/livewire/collaborators/associates/edit.blade.php @@ -0,0 +1,52 @@ +
+ + + +
+ + @include('livewire.associates.partials.forms.individual') + +
+ + @if (session()->has('notify-saved')) + + {{ __('Saved') }} + + @endif + + + + + +
+ +
+ +
diff --git a/resources/views/livewire/collaborators/associates/index.blade.php b/resources/views/livewire/collaborators/associates/index.blade.php index 2d3a995..bf9ace3 100644 --- a/resources/views/livewire/collaborators/associates/index.blade.php +++ b/resources/views/livewire/collaborators/associates/index.blade.php @@ -1,10 +1,22 @@ -
- -

- {{ __('associates.model') }} -

- -
+
+ + + +
- -
- {{ $associates->links() }} -
-
diff --git a/resources/views/livewire/collaborators/associates/show.blade.php b/resources/views/livewire/collaborators/associates/show.blade.php index ab215f8..9f3a13b 100644 --- a/resources/views/livewire/collaborators/associates/show.blade.php +++ b/resources/views/livewire/collaborators/associates/show.blade.php @@ -1,5 +1,28 @@ -
-
+
+ + + +
diff --git a/routes/web.php b/routes/web.php index 422e327..306d665 100644 --- a/routes/web.php +++ b/routes/web.php @@ -47,6 +47,10 @@ Route::prefix('admin')->name('collaborators.')->group(function () { Route::livewire('associates/{associate}', 'collaborators.associates.show') ->layout('layouts.collaborators') ->name('associates.show'); + + Route::livewire('associates/{associate}/edit', 'collaborators.associates.edit') + ->layout('layouts.collaborators') + ->name('associates.edit'); }); }); diff --git a/tests/Feature/Collaborators/Associates/EditTest.php b/tests/Feature/Collaborators/Associates/EditTest.php new file mode 100644 index 0000000..15b0a32 --- /dev/null +++ b/tests/Feature/Collaborators/Associates/EditTest.php @@ -0,0 +1,28 @@ +create(); + $this->be($collaborator, 'collaborators'); + + $associate = factory(Associate::class)->create(); + + $this->get(route('collaborators.associates.edit', compact('associate'))) + ->assertSuccessful() + ->assertSeeLivewire('collaborators.associates.edit'); + } +}