You are on page 1of 7

1 <?

php
2
3 namespace App\Http\Controllers;
4
5 use App\Model\Derivar\Derivar;
6
7 use App\Model\Memorandum\Memorandum;
8 use App\Model\HojaRuta\HojaRuta;
9 use App\Model\Generico\Generico;
10 use App\Model\Contrato\Contrato;
11 use Illuminate\Http\Request;
12 use App\Model\Email\Email;
13 use Illuminate\Support\Facades\Auth;
14
15 use App\Model\TipoInstruccion\TipoInstruccion; //jng
16
17 class DerivarController extends Controller
18 {
19 /**
20 * Display a listing of the resource.
21 *
22 * @return \Illuminate\Http\Response
23 */
24 public function index()
25 {
26 //
27 }
28
29 /**
30 * Show the form for creating a new resource.
31 *
32 * @return \Illuminate\Http\Response
33 */
34 public function create(Request $request){
35
36 $tipo = \Crypt::decrypt($request->route('tipo'));
37 $numero = \Crypt::decrypt($request->route('numero'));
38 $periodo = \Crypt::decrypt($request->route('periodo'));
39
40 switch ($tipo)
41 {
42 case '1':
43 $documento = Memorandum::where([
44 'm_id' => $numero
45 , 'm_periodo' => $periodo
46 , 'm_activo' => true
47 ])->firstOrFail();
48 $vista = 'derivar.crear_memorandum';
49 break;
50 case '2':
51 $documento = HojaRuta::where([
52 'hr_id' => $numero
53 , 'hr_periodo' => $periodo
54 , 'hr_activo' => true
55 ])->firstOrFail();
56 $vista = 'derivar.crear_hojaruta';
57 break;
58 case '3':
59 $generico = new Generico();
60 $documento = $generico->where([
61 'ge_id' => $numero
62 , 'ge_periodo' => $periodo
63 , 'ge_activo' => true
64 ])->firstOrFail();
65 $vista = 'derivar.crear_generico';
66 break;
67 case '4':
68 $contrato = new Contrato();
69 $documento = $contrato->where([
70 'c_id' => $numero
71 , 'c_periodo' => $periodo
72 , 'c_activo' => true
73 ])->firstOrFail();
74 $vista = 'derivar.crear_contrato';
75 break;
76 default:
77 if (Auth::check()) {
78 abort(404);
79 }else{
80 abort(403);
81 }
82 break;
83 }
84 $documento->inicializador();
85 if (Auth::user()->derivar &&
!empty($documento->getPermiso()->getPermisoDocumento())) {
86 $usuarios = \App\User::where('unidad', Auth::user()->unidad)
87 ->where('activo', true)->get(['id', 'name', 'email']);
88 $instrucciones =
$documento->getMovimiento()->getArregloIdNombreInstrucciones();
89 return view($vista, compact('usuarios', 'documento', 'instrucciones'));
90 }else{
91 if (Auth::check()) {
92 abort(403);
93 }else{
94 abort(401);
95 }
96 }
97 }
98 //jng
99
100 public function usuarioDestino()
101 {
102 $usuariosArray [''] = 'Seleccion';
103
104 $usr = \App\User::where('unidad', Auth::user()->unidad)
105 ->where('activo', true)->get(['id', 'name', 'email']);
106 dump($usuarios);
107
108 foreach ($usr as $usu) {
109 $usuariosArray[$usu->id] = $usu->name;
110 }
111 return $usuariosArray;
112 }
113
114
115 public function derivarMasiva(Request $request)
116 {
117 dump('function derivarMasiva');
118 $val = ($request->arreglo);
119 dump($val);
120
121 foreach($request->arreglo as $key => $value)
122 {
123 $numero = $request->arreglo[$key]['numero'];
124 $periodo = $request->arreglo[$key]['periodo'];
125 $tipo = $request->arreglo[$key]['tipo'];
126 $instruccion = $request->arreglo[$key]['instruccion'];
127 $usuario = $request->arreglo[$key]['usuario'];
128 //$documento->getMovimiento()->setInstruccion(\Crypt::decrypt($instruccion));
129
130 dump($usuario);
131
132 switch ($tipo)
133 {
134 case '4':
135 $contrato = new Contrato();
136 $documento = $contrato->where([
137 'c_id' => $numero
138 , 'c_periodo' => $periodo
139 , 'c_activo' => true
140 ])->firstOrFail();
141
142 //$usuarios = \App\User::where('unidad', Auth::user()->unidad);
143
144 $vista = 'derivar.crear_contrato_masivo';
145 break;
146 default:
147 if (Auth::check()) {
148 abort(404);
149 }else{
150 abort(403);
151 }
152 break;
153 }
154
155 //$documento->inicializador(true);
156 //$usuarios = \App\User::where('unidad', Auth::user()->unidad)
157 //->where('activo', true)->get(['id', 'name', 'email']);
158 //$instrucciones = TipoInstruccion::where('ti_activo', true)
159 // ->get(['ti_id', 'ti_nombre'])
160 // ->toArray();
161
162 $documento->inicializador(true);
163 $acceso = $documento->getPermiso()->getPermisoDocumento();
164 $uM = $documento->getMovimiento()->getUltimoMovimiento();
165 //tiene permisos para acceder a tramite y se puede bloquear y
tramite existe
166
167 if (!empty($acceso))
168 {
169 //si tiene permisos
170 //el usuario actual es responsable o supervidor de la unidad y
la unidad destino es igual a la unidad del usuario actual
171 $usuario_destino = \App\User::find($usuario);
172
173 if ((($uM->m_usuario_responsable == Auth::id() &&
$uM->m_unidad_responsable == Auth::user()->unidad) ||
174 (in_array('s', $acceso) && Auth::user()->supervisor &&
$usuario_destino->unidad == Auth::user()->unidad)) &&
175 ($usuario_destino->unidad == Auth::user()->unidad))
176 {
177 //si la unidad del destino es igual a la unidad del usuario
actual
178
$documento->getPermiso()->setPermisoUsuario($usuario_destino)
;
179 //obtengo los permisos de archivos a los que tengo acceso
como usuario
180 $archivos =
$documento->getPermisoArchivo()->getArrayIdsArchivosPermitido
s();
181
182 foreach ($archivos as $key => $value)
183 {
184 $documento->getPermisoArchivo()->setNumeroArchivo($value);
185
$documento->getPermisoArchivo()->setPermisoUsuario($usuari
o_destino);
186 }
187
//$documento->getMovimiento()->setDetalle($request->input('m_
detalle'));
188
//$documento->getMovimiento()->setInstruccion(\Crypt::decrypt
($request->input('instruccion')));
189
$documento->getMovimiento()->setInstruccion(\Crypt::decrypt($
instruccion));
190
$documento->getMovimiento()->setUsuario($usuario_destino->id)
;
191 $documento->getMovimiento()->derivar();
192
193 return redirect()->route('home'
194 )->with('success', 'Trámite Contrato Derivado');
195
196 }
197 }else
198 {
199 //no tiene permisos para acceder a documento o trámite
200 if (Auth::check()) {
201 abort(401);
202 }else{
203 abort(403);
204 }
205 }
206
207 }
208 // dd('');
209 return ('vuelvo');
210 }
211 /**
212 * Store a newly created resource in storage.
213 *
214 * @param \Illuminate\Http\Request $request
215 * @return \Illuminate\Http\Response
216 */
217 public function store(Request $request)
218 {
219 $tipo = \Crypt::decrypt($request->route('tipo'));
220 $numero = \Crypt::decrypt($request->route('numero'));
221 $periodo = \Crypt::decrypt($request->route('periodo'));
222 switch ($tipo)
223 {
224 case '1':
225 $documento = Memorandum::where([
226 'm_id' => $numero
227 , 'm_periodo' => $periodo
228 , 'm_activo' => true
229 ])->firstOrFail();
230 $vista = 'derivar.crear_memorandum';
231 break;
232 case '2':
233 $documento = HojaRuta::where([
234 'hr_id' => $numero
235 , 'hr_periodo' => $periodo
236 , 'hr_activo' => true
237 ])->firstOrFail();
238 $vista = 'derivar.crear_hojaruta';
239 break;
240 case '3':
241 $generico = new Generico();
242 $documento = $generico->where([
243 'ge_id' => $numero
244 , 'ge_periodo' => $periodo
245 , 'ge_activo' => true
246 ])->firstOrFail();
247 $vista = 'derivar.crear_generico';
248 break;
249 case '4':
250 $contrato = new Contrato();
251 $documento = $contrato->where([
252 'c_id' => $numero
253 , 'c_periodo' => $periodo
254 , 'c_activo' => true
255 ])->firstOrFail();
256 $vista = 'derivar.crear_contrato';
257 break;
258 default:
259 if (Auth::check()) {
260 abort(404);
261 }else{
262 abort(403);
263 }
264 break;
265 }
266 $documento->inicializador(true);
267 $acceso = $documento->getPermiso()->getPermisoDocumento();
268 $uM = $documento->getMovimiento()->getUltimoMovimiento();
269 //tiene permisos para acceder a tramite y se puede bloquear y tramite existe
270 if (!empty($acceso))
271 {
272 //si tiene permisos
273 //el usuario actual es responsable o supervidor de la unidad y la unidad
destino es igual a la unidad del usuario actual
274 $usuario_destino =
\App\User::find($request->input('t_usuario_destinatario'));
275 if ((($uM->m_usuario_responsable == Auth::id() && $uM->m_unidad_responsable
== Auth::user()->unidad) ||
276 (in_array('s', $acceso) && Auth::user()->supervisor &&
$usuario_destino->unidad == Auth::user()->unidad)) &&
277 ($usuario_destino->unidad == Auth::user()->unidad))
278 {
279 //si la unidad del destino es igual a la unidad del usuario actual
280 $documento->getPermiso()->setPermisoUsuario($usuario_destino);
281 //obtengo los permisos de archivos a los que tengo acceso como usuario
282 $archivos =
$documento->getPermisoArchivo()->getArrayIdsArchivosPermitidos();
283 foreach ($archivos as $key => $value)
284 {
285 $documento->getPermisoArchivo()->setNumeroArchivo($value);
286 $documento->getPermisoArchivo()->setPermisoUsuario($usuario_destino);
287 }
288 $documento->getMovimiento()->setDetalle($request->input('m_detalle'));
289
$documento->getMovimiento()->setInstruccion(\Crypt::decrypt($request->inp
ut('instruccion')));
290 $documento->getMovimiento()->setUsuario($usuario_destino->id);
291 $documento->getMovimiento()->derivar();
292
293 if ($request->input('mail'))
294 {
295 $email = new Email();
296 $email->setDestinatario($usuario_destino->email);
297 $documento->setAttribute('nom_usuario_origen', Auth::user()->name);
298 $email->setDocumento($documento);
299 switch ($tipo)
300 {
301 case '1':
302 $email->derivarMemorandum();
303 break;
304 case '2':
305 $email->derivarCompra();
306 break;
307 case '3':
308 $email->derivarGenerico();
309 break;
310 case '4':
311 $email->derivarContrato();
312 break;
313 default:
314 break;
315 }
316 }
317
318 switch ($tipo)
319 {
320 case '1':
321 return redirect()->route('home'
322 )->with('success', 'Memorandum Derivado');
323 break;
324 case '2':
325 return redirect()->route('home'
326 )->with('success', 'Compra Derivada');
327 break;
328 case '3':
329 return redirect()->route('home'
330 )->with('success', 'Trámite Generico Derivado');
331 break;
332 case '4':
333 return redirect()->route('home'
334 )->with('success', 'Trámite Contrato Derivado');
335 break;
336 default:
337 return redirect()->route('home'
338 )->with('success', 'Derivado.');
339 break;
340 }
341 }
342 else
343 {
344 switch ($tipo)
345 {
346 case '1':
347 return redirect()->route('memorandum.show',
348 [
349 'numero' => $request->route('numero'),
350 'periodo' => $request->route('periodo')
351 ]
352 )->with('success', 'No puede Derivar el Memorandum.');
353 break;
354 case '2':
355 return redirect()->route('hojaruta.show',
356 [
357 'numero' => $request->route('numero'),
358 'periodo' => $request->route('periodo')
359 ]
360 )->with('success', 'No puede Derivar la Compra.');
361 break;
362 case '3':
363 return redirect()->route('generico.show',
364 [
365 'numero' => $request->route('numero'),
366 'periodo' => $request->route('periodo')
367 ]
368 )->with('success', 'No puede Derivar el Trámite Generico.');
369 break;
370 case '3':
371 return redirect()->route('contrato.show',
372 [
373 'numero' => $request->route('numero'),
374 'periodo' => $request->route('periodo')
375 ]
376 )->with('success', 'No puede Derivar el Trámite Contrato.');
377 break;
378 default:
379 return redirect()->route('home'
380 )->with('success', 'No puede Derivar.');
381 break;
382 }
383 }
384 }
385 else
386 {
387 //no tiene permisos para acceder a documento o trámite
388 if (Auth::check()) {
389 abort(401);
390 }else{
391 abort(403);
392 }
393 }
394 }
395
396 /**
397 * Display the specified resource.
398 *
399 * @param \App\Model\Derivar\Derivar $derivar
400 * @return \Illuminate\Http\Response
401 */
402 public function show(Derivar $derivar)
403 {
404 //
405 }
406
407 /**
408 * Show the form for editing the specified resource.
409 *
410 * @param \App\Model\Derivar\Derivar $derivar
411 * @return \Illuminate\Http\Response
412 */
413 public function edit(Derivar $derivar)
414 {
415 //
416 }
417
418 /**
419 * Update the specified resource in storage.
420 *
421 * @param \Illuminate\Http\Request $request
422 * @param \App\Model\Derivar\Derivar $derivar
423 * @return \Illuminate\Http\Response
424 */
425 public function update(Request $request, Derivar $derivar)
426 {
427 //
428 }
429
430 /**
431 * Remove the specified resource from storage.
432 *
433 * @param \App\Model\Derivar\Derivar $derivar
434 * @return \Illuminate\Http\Response
435 */
436 public function destroy(Derivar $derivar)
437 {
438 //
439 }
440 }

You might also like