WorkTeamController.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405
  1. <?php
  2. /*
  3. Nombre del programador: Cordourier Rojas Mathew
  4. Ultima fecha de modificación: [ 03 / Marzo / 2023 ]
  5. Descripción: Controlador del submodulo Equipos de Trabajo. Perteneciente al Módulo 13 - Gestion del Personal de Mantenimiento
  6. */
  7. namespace App\Http\Controllers;
  8. use Illuminate\Http\Request;
  9. use Carbon\Carbon;
  10. use Illuminate\Support\Facades\DB;
  11. use Illuminate\Support\Facades\Validator;
  12. use Throwable;
  13. class WorkTeamController extends Controller
  14. {
  15. private $response_controller;
  16. private $encrypt_controller;
  17. public function __construct()
  18. {
  19. $this->response_controller = new ResponseController();
  20. $this->encrypt_controller = new EncryptionController();
  21. }
  22. // Metodo para la consulta de equipos de trabajo
  23. public function getConsultOfWorkteams($line_number)
  24. {
  25. try {
  26. $workteams = DB::table('S002V01TEQMA')
  27. ->select(
  28. 'EQMA_IDEQ as WORKTEAM_ID',
  29. 'EQMA_NOMB as NAME',
  30. 'EQMA_ESPE as SPECIALITY',
  31. 'EQMA_ESTA as STATUS'
  32. )
  33. ->where('EQMA_ESTA', '=', 'Activo')
  34. ->where('EQMA_NULI', '=', $line_number)
  35. ->get();
  36. // Verifica si el objeto esta vacio
  37. if (!isset($workteams[0]) && empty($workteams[0])) {
  38. return $this->response_controller
  39. ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG001: No se encontraron datos', $workteams, 500);
  40. }
  41. return $this->response_controller->makeResponse(FALSE, 'Consulta exitosa', $workteams, 200);
  42. } catch (Throwable $th) {
  43. return $this->response_controller
  44. ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG002: Error inesperado', strtoupper($th->getMessage()), 500);
  45. }
  46. }
  47. // Metodo para la consulta de un equipo de trabajo por medio de su id
  48. public function getWorkteamById($id_workteam, $line_number)
  49. {
  50. try {
  51. $workteams = DB::table('S002V01TEQMA')
  52. ->select(
  53. 'EQMA_IDEQ as WORKTEAM_ID',
  54. 'EQMA_NOMB as NAME',
  55. 'EQMA_ESPE as SPECIALITY',
  56. 'EQMA_ESTA as STATUS'
  57. )
  58. ->where('EQMA_IDEQ', '=', $id_workteam)
  59. ->where('EQMA_NULI', '=', $line_number)
  60. ->first();
  61. // Verifica si el objeto esta vacio
  62. if (!isset($workteams) && empty($workteams)) {
  63. return $this->response_controller
  64. ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG001: No se encontró al equipo de trabajo', $workteams, 500);
  65. }
  66. return $this->response_controller->makeResponse(FALSE, 'Consulta exitosa', $workteams, 200);
  67. } catch (Throwable $th) {
  68. return $this->response_controller
  69. ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG002: Error inesperado', strtoupper($th->getMessage()), 500);
  70. }
  71. }
  72. // Metodo para obtener los detalles de un equipo de trabajo por el id
  73. public function getDetailsOfWorkteamById($id_workteam, $line_number)
  74. {
  75. try {
  76. $workteam = DB::table("S002V01TEQMA")
  77. ->select(
  78. 'EQMA_IDEQ as WORKTEAM_ID',
  79. 'EQMA_NOMB as NAME',
  80. 'EQMA_ESPE as SPECIALITY',
  81. "EQMA_FERE as REGISTER_DATE",
  82. "EQMA_USRE as REGISTERED_BY",
  83. "EQMA_FEMO as UPDATE_DATE",
  84. "EQMA_USMO as UPDATED_BY"
  85. )
  86. ->where("EQMA_IDEQ", '=', $id_workteam)
  87. ->where("EQMA_NULI", '=', '01')
  88. ->first();
  89. // Verifica si el objeto esta vacio
  90. if (!isset($workteam) && empty($workteam)) {
  91. return $this->response_controller
  92. ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG001: No se encontró al equipo de trabajo', [], 500);
  93. }
  94. $users = DB::table("S002V01TUSUA_P")
  95. ->select("USUA_IDUS as ID", DB::raw('CONCAT(USUA_NOMB, " " , USUA_APPA, " ", USUA_APMA) AS NAME'))
  96. ->where('USUA_NULI', '=', $line_number)
  97. ->get();
  98. // Verifica si el objeto esta vacio
  99. if (!isset($users[0]) && empty($users[0])) {
  100. return $this->response_controller
  101. ->makeResponse(TRUE, 'ERR_USUARIO_REG002: No se encontraron datos', [], 500);
  102. }
  103. foreach ($users as $user) {
  104. // Inserta el nombre del usuario que lo registro y actualizó si hubo alguno.
  105. if ($workteam->REGISTERED_BY == $user->ID) {
  106. $workteam->REGISTERED_BY = $user->NAME;
  107. }
  108. if ($workteam->UPDATED_BY == $user->ID) {
  109. $workteam->UPDATED_BY = $user->NAME;
  110. }
  111. }
  112. // Inserta la fecha de registro y actualización si hubo alguna.
  113. $workteam->REGISTER_DATE = Carbon::create($workteam->REGISTER_DATE)->format("d-m-Y h:i:s A");
  114. if ($workteam->UPDATE_DATE != null) {
  115. $workteam->UPDATE_DATE = Carbon::create($workteam->UPDATE_DATE)->format("d-m-Y h:i:s A");
  116. } else {
  117. $workteam->UPDATE_DATE = "-";
  118. }
  119. if ($workteam->UPDATED_BY == null) {
  120. $workteam->UPDATED_BY = "-";
  121. }
  122. return $this->response_controller->makeResponse(FALSE, 'Consulta exitosa', $workteam, 200);
  123. } catch (Throwable $th) {
  124. return $this->response_controller
  125. ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG003: Error inesperado', strtoupper($th->getMessage()), 500);
  126. }
  127. }
  128. // Metodo para la eliminación lógica de un equipo de trabajo
  129. public function updateToInactiveStatus(Request $request, $id_workteam)
  130. {
  131. try {
  132. $validator = Validator::make($request->all(), [
  133. "UPDATED_BY_USER" => ['required', 'digits:10']
  134. ]);
  135. if ($validator->fails()) {
  136. return $this->response_controller->makeResponse(
  137. TRUE,
  138. 'ERR_EQUIPO_TRABAJO_REG001: Uno o más errores encontrados',
  139. $this->response_controller->makeErrors($validator->errors()->messages()),
  140. 400
  141. );
  142. }
  143. $workteam = DB::table('S002V01TEQMA')
  144. ->select("EQMA_IDEQ")
  145. ->where("EQMA_IDEQ", '=', $id_workteam)
  146. ->first();
  147. // Verifica si el objeto esta vacio
  148. if (!isset($workteam) && empty($workteam)) {
  149. return $this->response_controller
  150. ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG002: No se encontró al equipo de trabajo', [], 500);
  151. }
  152. $workteam_has_employees = DB::table("S002V01TPEEM")
  153. ->select(DB::raw("COUNT(PEEM_IDEM) as MEMBERS_QUANTITY"))
  154. ->where("PEEM_IDEM", '=', $id_workteam)
  155. ->where("PEEM_ESTA", '=', 'Activo')
  156. ->where('PEEM_NULI', '=', $request->LINE_NUMBER)
  157. ->first();
  158. // Verifica que el equipo no tenga empleados activos
  159. if ($workteam_has_employees->MEMBERS_QUANTITY > 0) {
  160. return $this->response_controller
  161. ->makeResponse(TRUE, 'ERR_EQUIPO_PERSONAL_REG003: El equipo de trabajo tiene miembros activos', $workteam_has_employees, 500);
  162. }
  163. $user_register = DB::table('S002V01TUSUA_P')
  164. ->select('USUA_IDUS as ID_USER')
  165. ->where('USUA_IDUS', '=', $request->UPDATED_BY_USER)
  166. ->where('USUA_NULI', '=', $request->LINE_NUMBER)
  167. ->first();
  168. // Verifica si el objeto esta vacio
  169. if (!isset($user_register) && empty($user_register)) {
  170. return $this->response_controller
  171. ->makeResponse(TRUE, "ERR_EQUIPO_TRABAJO_REG004: Tu usuario no es válido para eliminar equipos de trabajo", [], 500);
  172. }
  173. $UPDATE_DATE = Carbon::now()->timezone('America/Mexico_City')->toDateTimeString();
  174. $delete_workteam = DB::table('S002V01TEQMA')
  175. ->where("EQMA_IDEQ", '=', $id_workteam)
  176. ->where('EQMA_NULI', '=', $request->LINE_NUMBER)
  177. ->update([
  178. "EQMA_ESTA" => "Inactivo",
  179. "EQMA_USMO" => trim($request->UPDATED_BY_USER),
  180. "EQMA_FEMO" => $UPDATE_DATE,
  181. "EQMA_FEAR" => DB::raw('CURRENT_TIMESTAMP')
  182. ]);
  183. if (!$delete_workteam) {
  184. return $this->response_controller
  185. ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG005: Algo salió mal, error eliminando al equipo de trabajo', [], 500);
  186. }
  187. return $this->response_controller
  188. ->makeResponse(FALSE, 'Eliminación exitosa');
  189. } catch (Throwable $th) {
  190. return $this->response_controller
  191. ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG006: Error inesperado', strtoupper($th->getMessage()), 500);
  192. }
  193. }
  194. // Metodo para guardar un equipo de trabajo
  195. public function storeWorkteam(Request $request)
  196. {
  197. try {
  198. $REGISTER_DATE = Carbon::now()->timezone('America/Mexico_City')->toDateTimeString();
  199. $validator = Validator::make($request->all(), [
  200. "NAME" => ['required', 'max:100'],
  201. "SPECIALITY" => ['required', 'max:100'],
  202. "REGISTERED_BY_USER" => ['required', 'digits:10'],
  203. "LINE_NUMBER" => ['required', 'digits:1']
  204. ]);
  205. if ($validator->fails()) {
  206. return $this->response_controller->makeResponse(
  207. TRUE,
  208. 'ERR_EQUIPO_TRABAJO_REG001: Uno o más errores encontrados',
  209. $this->response_controller->makeErrors($validator->errors()->messages()),
  210. 400
  211. );
  212. }
  213. $search_workteam_name = DB::table('S002V01TEQMA')
  214. ->select("EQMA_NOMB")
  215. ->where("EQMA_NOMB", '=', $request->NAME)
  216. // ->where('EQMA_NULI', '=', '01')
  217. ->first();
  218. // Verifica si el objeto tiene algo
  219. if (isset($search_workteam_name) && !empty($search_workteam_name)) {
  220. return $this->response_controller
  221. ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG002: El nombre ya fue tomado', [], 500);
  222. }
  223. $user_register = DB::table('S002V01TUSUA_P')
  224. ->select('USUA_IDUS as ID_USER')
  225. ->where('USUA_IDUS', '=', $request->REGISTERED_BY_USER)
  226. // ->where('USUA_NULI', '=', '01')
  227. ->first();
  228. // Verifica si el objeto esta vacio
  229. if (!isset($user_register) && empty($user_register)) {
  230. return $this->response_controller
  231. ->makeResponse(TRUE, "ERR_USUARIO_REG003: Tu usuario no es válido para registrar equipos de trabajo", [], 500);
  232. }
  233. $insert_workteam = DB::table('S002V01TEQMA')
  234. ->insert([
  235. "EQMA_NOMB" => $request->NAME,
  236. "EQMA_ESPE" => $request->SPECIALITY,
  237. "EQMA_NULI" => $request->LINE_NUMBER,
  238. "EQMA_ESTA" => "Activo",
  239. "EQMA_USRE" => $request->REGISTERED_BY_USER,
  240. "EQMA_FERE" => $REGISTER_DATE,
  241. "EQMA_FEAR" => DB::raw('CURRENT_TIMESTAMP')
  242. ]);
  243. if (!$insert_workteam) {
  244. return $this->response_controller
  245. ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG004: Algo salió mal, error registrando al equipo de trabajo', [], 500);
  246. }
  247. return $this->response_controller
  248. ->makeResponse(FALSE, 'CREACIÓN EXITOSA');
  249. } catch (Throwable $th) {
  250. return $this->response_controller
  251. ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG005: Error inesperado', strtoupper($th->getMessage()), 500);
  252. }
  253. }
  254. // Metodo para actualizar un equipo de trabajo
  255. public function updateWorkteam(Request $request, $id_workteam)
  256. {
  257. try {
  258. $UPDATE_DATE = Carbon::now()->timezone('America/Mexico_City')->toDateTimeString();
  259. $validator = Validator::make($request->all(), [
  260. "NAME" => ['required', 'max:100'],
  261. "SPECIALITY" => ['required', 'max:100'],
  262. "UPDATED_BY_USER" => ['required', 'digits:10'],
  263. "LINE_NUMBER" => ['required', 'digits:1']
  264. ]);
  265. if ($validator->fails()) {
  266. return $this->response_controller->makeResponse(
  267. TRUE,
  268. 'ERR_EQUIPO_TRABAJO_REG001: Uno o más errores encontrados',
  269. $this->response_controller->makeErrors($validator->errors()->messages()),
  270. 400
  271. );
  272. }
  273. $search_workteam = DB::table('S002V01TEQMA')
  274. ->select("EQMA_IDEQ")
  275. ->where("EQMA_IDEQ", '=', $id_workteam)
  276. ->where('EQMA_NULI', '=', $request->LINE_NUMBER)
  277. ->first();
  278. // Verifica si el objeto esta vacio
  279. if (!isset($search_workteam) && empty($search_workteam)) {
  280. return $this->response_controller
  281. ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG002: No se encontró al equipo de trabajo', [], 500);
  282. }
  283. $search_workteam_name = DB::table('S002V01TEQMA')
  284. ->select("EQMA_NOMB")
  285. ->where("EQMA_NOMB", '=', $request->NAME)
  286. ->where("EQMA_IDEQ", '<>', $id_workteam)
  287. ->where('EQMA_NULI', '=', $request->LINE_NUMBER)
  288. ->first();
  289. // Verifica si el objeto tiene algo
  290. if (isset($search_workteam_name) && !empty($search_workteam_name)) {
  291. return $this->response_controller
  292. ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG003: El nombre ya fue tomado', [], 500);
  293. }
  294. $user_register = DB::table('S002V01TUSUA_P')
  295. ->select('USUA_IDUS as ID_USER')
  296. ->where('USUA_IDUS', '=', $request->UPDATED_BY_USER)
  297. ->where('USUA_NULI', '=', $request->LINE_NUMBER)
  298. ->first();
  299. // Verifica si el objeto esta vacio
  300. if (!isset($user_register) && empty($user_register)) {
  301. return $this->response_controller
  302. ->makeResponse(TRUE, "ERR_USUARIO_REG004: Tu usuario no es válido para actualizar equipos de trabajo", [], 500);
  303. }
  304. $update_workteam = DB::table('S002V01TEQMA')
  305. ->where("EQMA_IDEQ", '=', $id_workteam)
  306. ->where('EQMA_NULI', '=', $request->LINE_NUMBER)
  307. ->update([
  308. "EQMA_NOMB" => $request->NAME,
  309. "EQMA_ESPE" => $request->SPECIALITY,
  310. "EQMA_ESTA" => "Activo",
  311. "EQMA_USMO" => $request->UPDATED_BY_USER,
  312. "EQMA_FEMO" => $UPDATE_DATE,
  313. "EQMA_FEAR" => DB::raw('CURRENT_TIMESTAMP')
  314. ]);
  315. if (!$update_workteam) {
  316. return $this->response_controller
  317. ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG005: Algo salió mal, error actualizando al equipo de trabajo', [], 500);
  318. }
  319. return $this->response_controller
  320. ->makeResponse(FALSE, 'Actualización exitosa');
  321. } catch (Throwable $th) {
  322. return $this->response_controller
  323. ->makeResponse(TRUE, 'ERR_EQUIPO_TRABAJO_REG006: Error inesperado', strtoupper($th->getMessage()), 500);
  324. }
  325. }
  326. }
  327. /*
  328. try{
  329. } catch (Throwable $th) {
  330. return $this->response_controller
  331. ->makeResponse(TRUE, 'ERR_INTERVEN_REG002: UNEXPECTED ERROR', strtoupper($th->getMessage()), 500);
  332. }
  333. */
  334. /*
  335. DATOS OBLIGATORIOS
  336. $REGISTER_DATE = Carbon::now()->timezone('America/Mexico_City')->toDateTimeString();
  337. $UPDATE_DATE = Carbon::now()->timezone('America/Mexico_City')->toDateTimeString();
  338. "_ESTA" => $request->STATUS,
  339. "_USRE" => $request->REGISTER_USER,
  340. "_USMO" => $request->MODIFIED_USER,
  341. "_FERE" => $REGISTER_DATE,
  342. "_FEMO" => $UPDATE_DATE,
  343. "_FEAR" => DB::raw('CURRENT_TIMESTAMP')
  344. */