Guest User

Untitled

a guest
Jun 21st, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.70 KB | None | 0 0
  1. {{-- Con este condicional abrimos el modal si hay un error de validacion en el backend --}}
  2. @if($errors->any())
  3. <script>
  4.  
  5. $('#createagent').modal('show');
  6.  
  7. </script>
  8. @endif
  9.  
  10. <?php
  11.  
  12. namespace AppHttpControllers;
  13.  
  14. use IlluminateHttpRequest;
  15. use AppAgent;
  16. use AppUser;
  17. use IlluminateSupportFacadesAuth;
  18.  
  19. class AgentController extends Controller
  20. {
  21. public function store(Request $request)
  22. {
  23.  
  24.  
  25. $this->validate($request, [
  26. 'name' => 'required',
  27. 'email' => 'required|email|unique:agents,email',
  28. 'password' => 'required|min:6'
  29.  
  30. ]);
  31.  
  32.  
  33.  
  34.  
  35. toastr()->success('Correctamente', 'Agente creado', [
  36. 'timeOut' => 2000,
  37. 'positionClass' => "toast-top-full-width",
  38. 'progressBar' => false,
  39. 'showDuration'=> 300,
  40. ]);
  41.  
  42. //De esta forma se inserta tambien el id del usuario al que pertenece el agente en la bd
  43. auth()->user()->agent()->create($request->all());
  44.  
  45. session_destroy();
  46. return redirect()->route('agent.list');
  47. }
  48.  
  49.  
  50.  
  51. public function show()
  52. {
  53.  
  54.  
  55. //Con esto obtenemos todos los agentes que pertenezcan a la agencia autenticada
  56. $agent = Auth::user()->agent()->get();
  57.  
  58. return view('AgentList', compact('agent'));
  59. }
  60.  
  61. public function update(Request $request, Agent $agent)
  62. {
  63. //Consultamos el email perteneciente al agente
  64. $email = $agent->email;
  65.  
  66. //Si el email que llega por request, es igual al de la base de datos
  67. if ($request->email == $email) {
  68. $request->request->remove('email');
  69. }
  70.  
  71. $this->validate($request, [
  72. 'email' => 'unique:agents'
  73. ]);
  74.  
  75. toastr()->info('Correctamente', 'Agente editado', [
  76. 'timeOut' => 2000,
  77. 'positionClass' => "toast-top-full-width",
  78. 'progressBar' => false,
  79. 'showDuration'=> 300,
  80. ]);
  81.  
  82. $agent->fill($request->all());
  83. $agent->save();
  84.  
  85.  
  86.  
  87.  
  88.  
  89. return redirect()->route('agent.list');
  90. }
  91.  
  92. public function destroy(Agent $agent)
  93. {
  94. toastr()->error('Correctamente', 'Agente eliminado', [
  95. 'timeOut' => 2000,
  96. 'positionClass' => "toast-top-full-width",
  97. 'progressBar' => false,
  98. 'showDuration'=> 300,
  99. ]);
  100.  
  101. $agent->delete();
  102.  
  103. return redirect()->route('agent.list');
  104. }
  105.  
  106. public function assign(Agent $agent)
  107. {
  108.  
  109. //Con esto obtenemos todos los clientes que pertenezcan a la agencia autenticada
  110. $client = Auth::user()->client()->get();
  111.  
  112. //Obtenemos los clientes que ya estan asignados al agente
  113. $clients = $agent->clients;
  114.  
  115. return view('AssignClients', compact('agent', 'client', 'clients'));
  116. }
  117.  
  118. public function saveclient(Request $request, Agent $agent)
  119. {
  120. toastr()->success('Correctamente', 'Cliente asignado correctamente', [
  121. 'timeOut' => 2000,
  122. 'positionClass' => "toast-top-full-width",
  123. 'progressBar' => false,
  124. 'showDuration'=> 300,
  125. ]);
  126.  
  127. //El metodo attach guarda los datos en la tabla pivote, pero permite la duplicidad de datos
  128. // $agent->clients()->attach($request->clients);
  129.  
  130. //El metodo syncWithoutDetaching evita la duplicidad de datos en la tabla pivote
  131. $agent->clients()->syncWithoutDetaching($request->clients);
  132.  
  133.  
  134.  
  135. return redirect()->route('assign.client', $agent);
  136. }
  137.  
  138. public function detachClient(Request $request, Agent $agent, $client)
  139. {
  140. toastr()->error('Correctamente', 'Cliente desvinculado', [
  141. 'timeOut' => 2000,
  142. 'positionClass' => "toast-top-full-width",
  143. 'progressBar' => false,
  144. 'showDuration'=> 300,
  145. ]);
  146.  
  147. $agent->clients()->detach($client);
  148.  
  149. return redirect()->route('assign.client', $agent);
  150. }
  151. }
  152.  
  153. @extends('layouts.app')
  154.  
  155. @section('content')
  156.  
  157.  
  158. <div class="container" style="text-align:right">
  159.  
  160. <button type="button" class="btn btn-success" data-toggle="modal" data-target="#createagent">
  161. Añadir agente
  162. </button>
  163.  
  164. </div>
  165. <br>
  166. <div class="container-fluid">
  167. <!-- Modal para agregar agente -->
  168. <form action="{{ route('agent.create') }}" method="POST">
  169. {{ csrf_field() }}
  170. <div class="modal fade" id="createagent" tabindex="-1" role="dialog" aria-labelledby="modalLabel" aria-hidden="true">
  171. <div class="modal-dialog" role="document">
  172. <div class="modal-content">
  173. <div class="modal-header">
  174. <h4 class="modal-title" id="modalLabel">Crear agente</h4>
  175. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  176. <span aria-hidden="true">&times;</span>
  177. </button>
  178. </div>
  179.  
  180. <div class="modal-content">
  181. <div class="container-fluid">
  182.  
  183.  
  184. <span class="input-group-text"><strong>Nombre del agente</strong></span>
  185. <input type="text" class="form-control" name="name" id="name" value="{{ old('name') }}" placeholder="Ingrese el nombre del agente" required><br> {{ $errors->first('name') }}
  186.  
  187. <span class="input-group-text"><strong>Correo del agente</strong></span>
  188. <input type="email" class="form-control" name="email" id="email" value="{{ old('email') }}" placeholder="Ingrese el correo del agente" required><br> {{ $errors->first('email') }}
  189.  
  190. <span class="input-group-text"><strong>Contraseña del agente</strong></span>
  191. <input type="password" class="form-control" name="password" id="password" placeholder="Ingrese la contraseña del agente" required><br> {{ $errors->first('password') }}
  192.  
  193.  
  194.  
  195. </div>
  196. </div>
  197.  
  198. <div class="modal-footer">
  199. <button type="submit" class="btn btn-primary">Crear</button>
  200. </div>
  201.  
  202.  
  203. </div>
  204.  
  205. </div>
  206. </div>
  207. </form>
  208. </div>
  209. <div class="container-fluid">
  210.  
  211.  
  212. <table class="table table-hover table-striped">
  213. <thead class="thead-dark">
  214. <tr>
  215.  
  216. <th scope="col">NOMBRE</th>
  217. <th scope="col">CORREO</th>
  218. <th scope="col">CONTRASEÑA</th>
  219. <th scope="col">ACCIONES</th>
  220.  
  221.  
  222.  
  223. </tr>
  224. </thead>
  225. <tbody>
  226. @foreach($agent as $agente)
  227. <tr>
  228.  
  229. <td>{{ $agente->name }}</td>
  230. <td>{{ $agente->email }}</td>
  231. <td>{{ $agente->password }}</td>
  232. <td>
  233. <a href="{{ route('assign.client',$agente->id) }}"> <button class="btn btn-success">Asignar clientes</button> </a>
  234.  
  235. <button type="button" data-id="{{ $agente->id }}" class="btn btn-primary" data-toggle="modal" data-target="#editar_{{$agente->id}}">
  236. <i class="fa fa-edit"></i>
  237. </button>
  238.  
  239. <!-- Modal para editar agente -->
  240. <div class="modal fade" id="editar_{{$agente->id}}" role="dialog" aria-labelledby="modalLabel" aria-hidden="true">
  241. <div class="modal-dialog" role="document">
  242. <form action="{{ route('agent.update',$agente->id) }}" method="POST">
  243. {{ csrf_field() }} {{ method_field('PUT') }}
  244. <div class="modal-content">
  245. <div class="modal-header">
  246. <h4 class="modal-title" id="modalLabel">Editar agente</h4>
  247. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  248. <span aria-hidden="true">&times;</span>
  249. </button>
  250. </div>
  251. <div class="modal-content">
  252. <div class="container-fluid">
  253.  
  254. <input type="text" name="id" value="{{ $agente->id }}" hidden>
  255.  
  256. <span class="input-group-text"><strong>Nombre del agente</strong></span>
  257. <input type="text" class="form-control" name="name" id="name" value="{{ $agente->name }}" placeholder="Ingrese el nombre del agente" required><br> {{ $errors->first('name') }}
  258.  
  259. <span class="input-group-text"><strong>Correo del agente</strong></span>
  260. <input type="email" class="form-control" name="email" id="email" value="{{ $agente->email }}" placeholder="Ingrese el correo del agente" required><br> {{ $errors->first('email') }}
  261.  
  262. <span class="input-group-text"><strong>Contraseña del agente</strong></span>
  263. <input type="password" class="form-control" name="password" id="password" value="{{ $agente->password }}" placeholder="Ingrese la contraseña del agente" required><br> {{ $errors->first('password') }}
  264.  
  265.  
  266.  
  267. </div>
  268. </div>
  269. <div class="modal-footer">
  270. <button type="submit" class="btn btn-primary">Editar</button>
  271.  
  272.  
  273. </div>
  274. </div>
  275. </form>
  276. </div>
  277. </div>
  278.  
  279. {{-- boton para eliminar --}}
  280. <form method="POST" action="{{ route('agent.destroy', $agente->id) }}" style="display:inline">
  281. {{ csrf_field() }} {{ method_field('DELETE') }}
  282. <button class="btn btn-xs btn-danger" onclick="return confirm('¿Estas seguro de querer eliminar este agente?')">
  283. <i class="fa fa-times"></i></button>
  284. </form>
  285. </td>
  286. </tr>
  287. @endforeach
  288. </tbody>
  289. </table>
  290. {{-- Con este condicional abrimos el modal si hay un error de validacion en el backend --}}
  291. @if($errors->any())
  292. <script>
  293.  
  294. $('#createagent').modal('show');
  295.  
  296. </script>
  297. @endif
  298.  
  299.  
  300. </div>
  301.  
  302.  
  303. @stop
Add Comment
Please, Sign In to add comment