Funcionalidad de servicios por usuario (CRUD)

parent c378c7b0
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Jobs\SendSmsJob; use App\Jobs\SendSmsJob;
use App\Models\User;
use App\Models\Call; use App\Models\Call;
use App\Models\Counter; use App\Models\Counter;
use App\Models\Service; use App\Models\Service;
...@@ -15,6 +16,7 @@ use App\Repositories\TokenRepository; ...@@ -15,6 +16,7 @@ use App\Repositories\TokenRepository;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
class CallController extends Controller class CallController extends Controller
{ {
...@@ -30,7 +32,8 @@ class CallController extends Controller ...@@ -30,7 +32,8 @@ class CallController extends Controller
public function showCallPage(Request $request) public function showCallPage(Request $request)
{ {
return view('call.call', ['counters' => $this->counterRepository->getAllActiveCounters(), 'services' => $this->serviceRepository->getAllActiveServices(), 'date' => Carbon::now()->toDateString(), 'show_menu' => true, 'settings' => Setting::first()]);
return view('call.call', ['counters' => $this->counterRepository->getAllActiveCounters(), 'services' => $this->serviceRepository->getAllActiveServicesByUser(Auth::user()), 'date' => Carbon::now()->toDateString(), 'show_menu' => true, 'settings' => Setting::first()]);
} }
public function getAllServicesAndCounters() public function getAllServicesAndCounters()
......
...@@ -9,6 +9,8 @@ use App\Repositories\UserRepository; ...@@ -9,6 +9,8 @@ use App\Repositories\UserRepository;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Spatie\Permission\Models\Role; use Spatie\Permission\Models\Role;
use App\Models\Service;
use App\Models\Uservices;
// use Spatie\Permission\Models\Role; // use Spatie\Permission\Models\Role;
...@@ -46,7 +48,7 @@ class UserController extends Controller ...@@ -46,7 +48,7 @@ class UserController extends Controller
*/ */
public function create() public function create()
{ {
return view('user.create', ['roles' => Role::get()]); return view('user.create', ['roles' => Role::get(), 'activities' => Service::get()]);
} }
/** /**
...@@ -61,8 +63,10 @@ class UserController extends Controller ...@@ -61,8 +63,10 @@ class UserController extends Controller
'email' => 'required|email|unique:users', 'email' => 'required|email|unique:users',
'name' => 'required', 'name' => 'required',
'password' => 'required|min:5', 'password' => 'required|min:5',
'role' => 'exists:roles,id' 'role' => 'exists:roles,id',
'services' => 'exists: services,id'
]); ]);
DB::beginTransaction(); DB::beginTransaction();
try { try {
$users = $this->users->create($request->all()); $users = $this->users->create($request->all());
...@@ -95,9 +99,18 @@ class UserController extends Controller ...@@ -95,9 +99,18 @@ class UserController extends Controller
*/ */
public function edit(User $user) public function edit(User $user)
{ {
//Obtener id de la actividad asociada al usuario
$actividadAsociada = Uservices::where('user_id', $user->id)->first();
if(is_null($actividadAsociada)){
$actividad = 0;
}else{
$actividad = $actividadAsociada->services_id;
}
return view('user.edit', [ return view('user.edit', [
'user' => $user, 'user' => $user,
'roles' => Role::get() 'roles' => Role::get(),
'activities' => Service::get(),
'actividadAsociada' => $actividad
]); ]);
} }
...@@ -113,13 +126,17 @@ class UserController extends Controller ...@@ -113,13 +126,17 @@ class UserController extends Controller
$request->validate([ $request->validate([
'email' => 'required|email|unique:users,email,' . $user->id, 'email' => 'required|email|unique:users,email,' . $user->id,
'name' => 'required', 'name' => 'required',
'role' => 'required|exists:roles,id' 'role' => 'required|exists:roles,id',
'activity' => 'required|exists:services,id',
]); ]);
DB::beginTransaction(); DB::beginTransaction();
try { try {
$users = $this->users->update($request->all(), $user); $users = $this->users->update($request->all(), $user);
} catch (\Exception $e) { } catch (\Exception $e) {
DB::rollback(); DB::rollback();
//print_r($e->getMessage());
//die();
$request->session()->flash('error', 'Something Went Wrong'); $request->session()->flash('error', 'Something Went Wrong');
return redirect()->route('users.index'); return redirect()->route('users.index');
} }
......
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Uservices extends Model
{
use HasFactory;
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'user_id',
'services_id'
];
protected $primaryKey = 'use_id';
public $incrementing = true;
}
...@@ -4,6 +4,7 @@ namespace App\Repositories; ...@@ -4,6 +4,7 @@ namespace App\Repositories;
use App\Models\Service; use App\Models\Service;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\DB;
class ServiceRepository class ServiceRepository
{ {
...@@ -12,6 +13,17 @@ class ServiceRepository ...@@ -12,6 +13,17 @@ class ServiceRepository
return Service::get(); return Service::get();
} }
public function getAllActiveServicesByUser($user)
{
$services = DB::table('uservices')
->join('services', 'uservices.services_id', '=', 'services.id')
->select('services.*')
->where('uservices.user_id',$user->id)
->get();
return $services;
}
public function getAllActiveServices() public function getAllActiveServices()
{ {
return Service::where('status', true)->get(); return Service::where('status', true)->get();
......
...@@ -3,6 +3,8 @@ ...@@ -3,6 +3,8 @@
namespace App\Repositories; namespace App\Repositories;
use App\Models\User; use App\Models\User;
use App\Models\Uservices;
use App\Repositories\UserviceRepository;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
...@@ -19,6 +21,11 @@ class UserRepository ...@@ -19,6 +21,11 @@ class UserRepository
'password' => Hash::make($data['password']), 'password' => Hash::make($data['password']),
]); ]);
$user->assignRole($data['role']); $user->assignRole($data['role']);
$uservices = new UserviceRepository();
$uservices->create([
'user_id' => $user->id,
'services_id' => $data['activity']
]);
return $user; return $user;
} }
...@@ -26,6 +33,7 @@ class UserRepository ...@@ -26,6 +33,7 @@ class UserRepository
{ {
$user->name= $data['name']; $user->name= $data['name'];
$user->email= $data['email']; $user->email= $data['email'];
if(isset($data['password'])) if(isset($data['password']))
{ {
$user->password= Hash::make($data['password']); $user->password= Hash::make($data['password']);
...@@ -47,11 +55,21 @@ class UserRepository ...@@ -47,11 +55,21 @@ class UserRepository
$user->syncRoles($data['role']); $user->syncRoles($data['role']);
} }
} }
if(!$from_profile){
if($data['activity']){
$uservices = Uservices::where('user_id',$user->id)->first();
//Llamar a UservicesRepository
$uservicesrepository = new UserviceRepository();
$uservicesrepository->update($uservices,["user_id" => $user->id, "services_id" => $data["activity"]]);
}
}
return $user; return $user;
} }
public function delete($data,$user) public function delete($data,$user)
{ {
$user->delete(); $user->delete();
Uservices::where('user_id', $user->id)->delete();
if($user->image) if($user->image)
{ {
Storage::disk('public')->delete($user->image); Storage::disk('public')->delete($user->image);
......
<?php
namespace App\Repositories;
use App\Models\Uservices;
class UserviceRepository
{
public function create($data)
{
$uservice = Uservices::create([
'user_id' => $data['user_id'],
'services_id' => $data['services_id']
]);
return $uservice;
}
public function update($uservice,$data)
{
if(!is_null($uservice)){
$uservice->user_id = $data["user_id"];
$uservice->services_id = $data["services_id"];
$uservice->save();
}else{
$uservice = Uservices::create([
'user_id' => $data['user_id'],
'services_id' => $data['services_id']]);
}
return $uservice;
}
}
...@@ -101,7 +101,9 @@ return [ ...@@ -101,7 +101,9 @@ return [
'image' => 'Image', 'image' => 'Image',
'role' => 'Role', 'role' => 'Role',
'select role' => 'Select Role', 'select role' => 'Select Role',
'edit user' => 'Edit User' 'edit user' => 'Edit User',
'select activities' => 'Select Activity',
'activity' => 'Activiy'
], ],
'user_roles_page' => [ 'user_roles_page' => [
'user roles' => 'User Roles', 'user roles' => 'User Roles',
......
...@@ -100,7 +100,9 @@ return [ ...@@ -100,7 +100,9 @@ return [
'image' => 'Imagen', 'image' => 'Imagen',
'role' => 'Papel', 'role' => 'Papel',
'select role' => 'Seleccionar rol', 'select role' => 'Seleccionar rol',
'edit user' => 'editar usuario' 'edit user' => 'editar usuario',
'select activities' => 'Seleccionar Actividades',
'activity' => 'Actividad'
], ],
'user_roles_page' => [ 'user_roles_page' => [
'user roles' => 'Roles del usuario', 'user roles' => 'Roles del usuario',
......
...@@ -75,11 +75,11 @@ ...@@ -75,11 +75,11 @@
</div> </div>
<div class="input-field col-lg-4 s4" id="rut_tab"> <div class="input-field col-lg-4 s4" id="rut_tab">
<input id="rut" name="rut" type="text" value="" maxlength="12" oninput="formatearRut(this);" maxlength=13 data-error=".rut"> <input id="rut" name="rut" type="text" value="" maxlength="12" oninput="formatearRut(this);" maxlength=13 data-error=".rut" autofocus>
<label for="rut">{{__('messages.settings.rut')}}</label> <label for="rut">{{__('messages.settings.rut')}}</label>
<div class="rut"> <div class="rut">
<span><b>Ingrese su rut para poder solicitar su número de atención</b></span> <span><b>Ingrese su rut para poder solicitar su número de atención</b></span>
<div class="input-field numeric-pad" style="padding-left: 150px;"> <div class="input-field numeric-pad" style="padding-left: 150px">
<button onclick="escribirValor(1,event)">1</button> <button onclick="escribirValor(1,event)">1</button>
<button onclick="escribirValor(2,event)">2</button> <button onclick="escribirValor(2,event)">2</button>
<button onclick="escribirValor(3,event)">3</button> <button onclick="escribirValor(3,event)">3</button>
......
...@@ -76,6 +76,15 @@ ...@@ -76,6 +76,15 @@
</select> </select>
<label>{{__('messages.user_page.role')}}</label> <label>{{__('messages.user_page.role')}}</label>
</div> </div>
<div class="input-field col s6">
<select name="activity" id="activities_id">
<option value="" disabled selected>{{__('messages.user_page.select activities')}}</option>
@foreach ($activities as $activity)
<option value="{{$activity->id}}">{{$activity->name}} </option>
@endforeach
</select>
<label>{{__('messages.user_page.activity')}}</label>
</div>
</div> </div>
</div> </div>
<div class="input-field col s12"> <div class="input-field col s12">
...@@ -109,6 +118,9 @@ ...@@ -109,6 +118,9 @@
role: { role: {
required: true, required: true,
}, },
activity:{
required: true,
},
email: { email: {
required: true, required: true,
email: true, email: true,
......
...@@ -78,6 +78,15 @@ ...@@ -78,6 +78,15 @@
</select> </select>
<label>{{__('messages.user_page.role')}}</label> <label>{{__('messages.user_page.role')}}</label>
</div> </div>
<div class="input-field col s6">
<select name="activity" id="activities_id">
<option value="" disabled selected>{{__('messages.user_page.select activities')}}</option>
@foreach ($activities as $activity)
<option value="{{$activity->id}}" {{ $activity->id == $actividadAsociada ? 'selected' : '' }}>{{$activity->name}} </option>
@endforeach
</select>
<label>{{__('messages.user_page.activity')}}</label>
</div>
</div> </div>
<div class="input-field col s12"> <div class="input-field col s12">
<button class="btn waves-effect waves-light right submit" type="submit" name="action">{{__('messages.common.update')}} <button class="btn waves-effect waves-light right submit" type="submit" name="action">{{__('messages.common.update')}}
...@@ -110,6 +119,9 @@ ...@@ -110,6 +119,9 @@
role: { role: {
required: true, required: true,
}, },
activity: {
required: true,
},
email: { email: {
required: true, required: true,
email: true email: true
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment