responseController = new ResponseController(); $this->encController = new EncryptionController(); $this->resourcesController = new ResourcesController(); $this->documentManagementController = new DocumentManagementController(); $this->functionsController = new FunctionsController(); } // Función para obtener las familias y las subfamilias activas public function getFamiliesAndSubfamilies ($user, $line) { try { $arrFamilias = DB::table('S002V01TFAMI') ->where('FAMI_ESTA', '=', 'Activo') ->where('FAMI_NULI', '=', $line) ->get([ 'FAMI_COFA AS ID_FAMILIA', 'FAMI_NOFA AS FAMILIA', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_ARTITLE_GETFAMILYS000: No se pudo realizar la consulta de las familias en la base.", $th->getMessage(), 500 ); } try { $arrSubfamilias = DB::table('S002V01TSUBF') ->where('SUBF_ESTA', '=', 'Activo') ->where('SUBF_NULI', '=', $line) ->get([ 'SUBF_COSU AS ID_SUBFAMILIA', 'SUBF_NOSU AS SUBFAMILIA', 'SUBF_COFA AS ID_FAMILIA', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_ARTITLE_GETFAMILYS001: No se pudo realizar la consulta de las subfamilias en la base.", $th->getMessage(), 500 ); } try { foreach ($arrFamilias as $keyFamilias => $familias) { $familias->SUBFAMILIAS = array(); foreach ($arrSubfamilias as $keySubfamilias => $subfamilias) { if ($familias->ID_FAMILIA == $subfamilias->ID_FAMILIA) { $familias->SUBFAMILIAS[] = array( "ID_SUBFAMILIA" => $subfamilias->ID_SUBFAMILIA, "SUBFAMILIA" => $subfamilias->SUBFAMILIA, ); } } } } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_ARTITLE_GETFAMILYS002: Ocurrió un error al generar la respuesta de la consulta.", $th->getMessage(), 500 ); } return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrFamilias); } public function registerFamily(Request $request){ $valitador = Validator::make($request->all(), [ 'FAMILIA' => 'required|string|max:50', 'LINE' => 'required|integer', 'USER' => 'required|string' ]); if ($valitador->fails()) { return $this->responseController->makeResponse( true, "ERR_FAMILY_REG000: Se encontraron uno o más errores.", $this->responseController->makeErrors($valitador->errors()->messages()), 401 ); } DB::beginTransaction(); $responseData = $request->all(); $arrResponseCheckUser = $this->resourcesController->checkUserEnc($responseData['USER'], $responseData['LINE']); if ($arrResponseCheckUser['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401); } $usuario = $arrResponseCheckUser['response']; $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $validateInsert = DB::table('S002V01TFAMI')->insert([ "FAMI_NOFA" => trim($responseData['FAMILIA']), "FAMI_USRE" => $usuario, "FAMI_NULI" => $responseData['LINE'], "FAMI_FERE" => $currentDate, "FAMI_FEAR" => DB::raw('CURRENT_TIMESTAMP') ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error al ingresar los registros.", $th->getMessage(), 401); } if (!$validateInsert) { DB::rollBack(); return $this->responseController->makeResponse(true, "No se pudo ingresar los datos a la base de datos.", [], 401); } DB::commit(); return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso"); } public function getUnits($user, $line) { try { $arrFamilias = DB::table('S002V01TUNID') ->where('UNID_NULI', '=', $line) ->get([ 'UNID_IDUN AS ID_UNIDAD', 'UNID_NOMB AS UNIDAD', 'UNID_ESTA AS ESTADO', 'UNID_USRE AS USUARIO_REGISTRA', 'UNID_FERE AS FECHA_REGISTRA', 'UNID_USMO AS USUARIO_MODIFICA', 'UNID_FEMO AS FECHA_MODIFICA', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_ARTITLE_GETUNITS000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500 ); } return $this->responseController->makeResponse(false, "ÉXITO: Consulta exitosa", $arrFamilias); } public function getUnitsActives($user, $line) { $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line); if ($arrResponseCheckUser['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, 'ERR_UNITS_GETACTIVES000:'.$arrResponseCheckUser['msg'], [], 401); } try { $arrFamilias = DB::table('S002V01TUNID') ->where('UNID_NULI', '=', $line) ->where('UNID_ESTA', '=', 'Activo') ->get([ 'UNID_IDUN AS ID_UNIDAD', 'UNID_NOMB AS UNIDAD', 'UNID_USRE AS USUARIO_REGISTRA', 'UNID_FERE AS FECHA_REGISTRA', 'UNID_USMO AS USUARIO_MODIFICA', 'UNID_FEMO AS FECHA_MODIFICA', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_UNITS_GETACTIVES001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500 ); } return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrFamilias); } public function registerUnit(Request $request){ $valitador = Validator::make($request->all(), [ 'UNIDAD' => 'required|string|max:50', 'LINE' => 'required|integer', 'USER' => 'required|string' ]); if ($valitador->fails()) { return $this->responseController->makeResponse( true, "ERR_UNITS_REG000: Se encontraron uno o más errores.", $this->responseController->makeErrors($valitador->errors()->messages()), 401 ); } DB::beginTransaction(); $responseData = $request->all(); $arrResponseCheckUser = $this->resourcesController->checkUserEnc($responseData['USER'], $responseData['LINE']); if ($arrResponseCheckUser['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, 'ERR_UNITS_REG001:'.$arrResponseCheckUser['msg'], [], 401); } $usuario = $arrResponseCheckUser['response']; $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $validateInsert = DB::table('S002V01TUNID')->insert([ "UNID_NOMB" => trim($responseData['UNIDAD']), "UNID_USRE" => $usuario, "UNID_NULI" => $responseData['LINE'], "UNID_FERE" => $currentDate, "UNID_FEAR" => DB::raw('CURRENT_TIMESTAMP') ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_UNITS_REG002: Ocurrió un error al ingresar los registros.", $th->getMessage(), 401 ); } if (!$validateInsert) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_UNITS_REG003: No se pudo ingresar los datos a la base de datos.", [], 401 ); } DB::commit(); return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso"); } public function registerSubfamily(Request $request){ $valitador = Validator::make($request->all(), [ 'ID_FAMILIA' => 'required|integer', 'SUBFAMILIA' => 'required|string|max:50', 'LINE' => 'required|integer', 'USER' => 'required|string' ]); if ($valitador->fails()) { return $this->responseController->makeResponse( true, "ERR_SUBFAMILY_REG000: Se encontraron uno o más errores.", $this->responseController->makeErrors($valitador->errors()->messages()), 401 ); } DB::beginTransaction(); $responseData = $request->all(); try { $validateExists = DB::table('S002V01TFAMI') ->where('FAMI_COFA', '=', trim($responseData['ID_FAMILIA'])) ->where('FAMI_ESTA', '=', 'Activo') ->where('FAMI_NULI', '=', $responseData['LINE']) ->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SUBFAMILY_REG001: Ocurrió al verificar la Familia.", $th->getMessage(), 401 ); } if (!$validateExists) { return $this->responseController->makeResponse( true, "ERR_SUBFAMILY_REG002: La Familia seleccionada no existe.", [], 401 ); } $arrResponseCheckUser = $this->resourcesController->checkUserEnc($responseData['USER'], $responseData['LINE']); if ($arrResponseCheckUser['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, 'ERR_SUBFAMILY_REG003:'.$arrResponseCheckUser['msg'], [], 401); } $user = $arrResponseCheckUser['response']; $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $validateInsert = DB::table('S002V01TSUBF')->insert([ "SUBF_COFA" => $responseData['ID_FAMILIA'], "SUBF_NOSU" => $responseData['SUBFAMILIA'], "SUBF_USRE" => $user, "SUBF_NULI" => $responseData['LINE'], "SUBF_FERE" => $currentDate, "SUBF_FEAR" => DB::raw('CURRENT_TIMESTAMP') ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SUBFAMILY_REG004: Ocurrió un error al ingresar los registros.", $th->getMessage(), 401 ); } if (!$validateInsert) { DB::rollBack(); return $this->responseController->makeResponse( true, "ERR_SUBFAMILY_REG005: No se pudo ingresar los datos a la base de datos.", [], 401 ); } DB::commit(); return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso"); } public function getArtitles($user, $line) { $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line); if ($arrResponseCheckUser['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, 'ERR_ARTITLE_GET000:'.$arrResponseCheckUser['msg'], [], 401); } try { $getArtitle = DB::table('S002V01TARTI') ->where("ARTI_NULI", "=", $line) ->where("FAMI_NULI", "=", $line) ->where("SUBF_NULI", "=", $line) ->where("DEAR_NULI", "=", $line) ->where("PROV_NULI", "=", $line) ->where("UNID_NULI", "=", $line) ->where("ARTI_ESTA", "=", "Activo") ->where("FAMI_ESTA", "=", "Activo") ->where("SUBF_ESTA", "=", "Activo") ->where("DEAR_ESTA", "=", "Activo") ->where("PROV_ESTA", "=", "Activo") ->where("UNID_ESTA", "=", "Activo") ->join("S002V01TFAMI", "ARTI_COFA", "=", "FAMI_COFA") ->join("S002V01TSUBF", "ARTI_COSU", "=", "SUBF_COSU") ->join("S002V01TDEAR", "ARTI_IDAR", "=", "DEAR_IDAR") ->join("S002V01TPROV", "DEAR_NUPR", "=", "PROV_NUPR") ->join("S002V01TUNID", "DEAR_IDUN", "=", "UNID_IDUN") ->get([ "DEAR_IDDE AS ID_DESC_ARTI", "ARTI_IDAR AS ID_ARTICULO", "ARTI_NOMB AS MODELO", "FAMI_COFA AS ID_FAMILIA", "FAMI_NOFA AS FAMILIA", "SUBF_COSU AS ID_SUBFAMILIA", "SUBF_NOSU AS SUBFAMILIA", "DEAR_DESC AS DESCRIPCION", "DEAR_CARA AS CARACTERISTICAS", "DEAR_COWE AS COMPRA_WEB", "DEAR_IDUN AS TIPO_UNIDAD", "DEAR_IMAG AS URL_IMAGEN", "PROV_NUPR AS ID_PROVEEDOR", "PROV_NOCO AS PROVEEDOR", ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_ARTITLE_GET001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500 ); } try { foreach ($getArtitle as $artitle) { $arrImagen = json_decode($artitle->URL_IMAGEN); $arrUrlImage = array(); foreach ($arrImagen as $key => $imagen) { $responseDocument = $this->documentManagementController->privateGetPublicDocumentURL($imagen, $user, $line); if ($responseDocument['error']) { return $this->responseController->makeResponse(true, "ERR_ARTITLE_GET002: Ocurrió un error al obtener la URL de la imágen.", [], 500); } $arrUrlImage[] = $responseDocument['response']['public_uri']; } $artitle->URL_IMAGEN = $arrUrlImage; } } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_ARTITLE_GET003: Ocurrió un error al obtener las imangenes de los artículos.", $th->getMessage(), 500 ); } $getArtitle = json_decode(json_encode($getArtitle), true); return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $getArtitle); } public function getArtitlesByProvider($artitle, $provider, $user, $line) { $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line); if ($arrResponseCheckUser['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, 'ERR_ARTITLE_GETBYPROVIDER000:'.$arrResponseCheckUser['msg'], [], 401); } try { $idArtitle = $this->encController->decrypt($artitle); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_ARTITLE_GETBYPROVIDER001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500 ); } try { $idProvider = $this->encController->decrypt($provider); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_ARTITLE_GETBYPROVIDER002: No se pudo realizar la consulta a la base.", $th->getMessage(), 500 ); } try { $objArtitle = (array) DB::table('S002V01TDEAR') ->where("ARTI_NULI", "=", $line) ->where("DEAR_IDDE", "=", $idArtitle) ->where("DEAR_NUPR", "=", $idProvider) ->join("S002V01TARTI", "ARTI_IDAR", "=", "DEAR_IDAR") ->join("S002V01TFAMI", "ARTI_COFA", "=", "FAMI_COFA") ->join("S002V01TSUBF", "ARTI_COSU", "=", "SUBF_COSU") ->join("S002V01TPROV", "DEAR_NUPR", "=", "PROV_NUPR") ->join("S002V01TUNID", "DEAR_IDUN", "=", "UNID_IDUN") ->first([ "DEAR_IDDE AS ID_DESC_ARTI", "ARTI_IDAR AS ID_ARTICULO", "ARTI_NOMB AS MODELO", "FAMI_COFA AS ID_FAMILIA", "FAMI_NOFA AS FAMILIA", "SUBF_COSU AS ID_SUBFAMILIA", "SUBF_NOSU AS SUBFAMILIA", "DEAR_DESC AS DESCRIPCION", "DEAR_CARA AS CARACTERISTICAS", "DEAR_COWE AS COMPRA_WEB", "UNID_IDUN AS ID_UNIDAD", "UNID_NOMB AS UNIDAD", "DEAR_IMAG AS URL_IMAGEN", "PROV_NUPR AS ID_PROVEEDOR", "PROV_NOCO AS PROVEEDOR", ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_ARTITLE_GETBYPROVIDER003: No se pudo realizar la consulta a la base.", $th->getMessage(), 500 ); } if ( empty($objArtitle) ) { return $this->responseController->makeResponse(true, "ERR_ARTITLE_GETBYPROVIDER004: No se encontró el resultado deseado.", [], 500); } try { $objArtitle['URL_IMAGEN'] = json_decode($objArtitle['URL_IMAGEN']); $arrUrlImage = array(); foreach ($objArtitle['URL_IMAGEN'] as $key => $encImage) { $responseDocument = $this->documentManagementController->privateGetPublicDocumentURL($encImage, $user, $line); if ($responseDocument['error']) { return $this->responseController->makeResponse(true, "ERR_ARTITLE_GETBYPROVIDER005: Ocurrió un error al obtener la URL de la imágen.", [], 500); } $arrUrlImage[] = $responseDocument['response']['public_uri']; } $objArtitle['URL_IMAGEN'] = $arrUrlImage; } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_ARTITLE_GETBYPROVIDER006: Ocurrió un error al obtner las imagenes de los artículos", $th->getMessage(), 500 ); } try { $arrInformation = DB::table('S002V01TINAR') ->where('INAR_ESTA', '=', 'Activo') ->where('INAR_NULI', '=', $line) ->where('INAR_IDDE', '=', $objArtitle['ID_DESC_ARTI']) ->join('S002V01TCAMO', 'CAMO_COMO', '=', 'INAR_COMO') ->get([ 'INAR_IDIN AS NUMERO_INFORMACION', 'INAR_CODI AS CODIGO', 'INAR_MODE AS MODELO', 'CAMO_COMO AS MONEDA', 'CAMO_DESC AS MONEDA_DESCRIPCION', 'INAR_PREC AS PRECIO', 'INAR_MOMI AS MONTO_MINIMO', 'INAR_CARA AS CARACTERISTICAS', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_ARTITLE_GETBYPROVIDER007: No se pudo realizar la consulta a la base.", $th->getMessage(), 500 ); } $objArtitle['INFO_PRODUCTO'] = json_encode($arrInformation); return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $objArtitle); } public function getArticleById($idArticle, $user, $line) { $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line); if ($arrResponseCheckUser['error']) { return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401); } $idArticle = $this->encController->decrypt($idArticle); if (is_null($idArticle)) { return $this->responseController->makeResponse(true, 'El identificador del artículo no está encriptado correctamente.', [], 401); } try { $article = DB::table('S002V01TARTI') ->where([ ['ARTI_NULI', '=', $line], ['ARTI_IDAR', '=', $idArticle], ['ARTI_ESTA', '=', 'Activo'], ]) ->first([ 'ARTI_IDAR AS ID_ARTICULO', 'ARTI_COFA AS FAMILIA', 'ARTI_COSU AS SUBFAMILIA', 'ARTI_CODI AS CODIGO', 'ARTI_NOMB AS ARTICULO', 'ARTI_ESTA AS ESTADO', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el contenido del artículo #{$idArticle}.", $th->getMessage(), 500); } if (is_null($article) || empty((array)$article)) { return $this->responseController->makeResponse(true, "No existen datos del artículo #{$idArticle}.", [], 500); } try { $arrDescription = DB::table('S002V01TDEAR') ->where([ ['DEAR_NULI', '=', $line], ['DEAR_IDAR', '=', $idArticle], ['DEAR_ESTA', '=', 'Activo'], ]) ->join('S002V01TPROV', 'PROV_NUPR', '=', 'DEAR_NUPR') ->join('S002V01TUNID', 'UNID_IDUN', '=', 'DEAR_IDUN') ->get([ 'DEAR_IDDE AS ID_DESCRIPCION', 'PROV_NUPR AS NUMERO_PROVEEDOR', 'PROV_NOCO AS PROVEEDOR', 'UNID_IDUN AS ID_UNIDAD', 'UNID_NOMB AS UNIDAD', 'DEAR_DESC AS DESCRIPCION', 'DEAR_CARA AS CARACTERISTICAS', 'DEAR_ESTA AS ESTADO', 'DEAR_IMAG AS ARCHIVOS', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el contenido la descripción del artículo #{$idArticle}.", $th->getMessage(), 500); } foreach ($arrDescription as $description) { $images = json_decode($description->ARCHIVOS); $files = array(); foreach ($images as $img) { $response = $this->documentManagementController->getFileByCode($img, $user, $line); if ($response['error']) { return $this->responseController->makeResponse(true, $response['msg'], $response['response'], 500); } $dataFile = $response['response']; $files[] = $dataFile; } $description->ARCHIVOS = $files; try { $arrDetails = DB::table('S002V01TINAR') ->where([ ['INAR_NULI', '=', $line], ['INAR_IDDE', '=', $description->ID_DESCRIPCION], ['INAR_ESTA', '=', 'Activo'], ]) ->get([ 'INAR_IDIN AS ID_DETAILS', 'INAR_CODI AS CODIGO', 'INAR_MODE AS MODELO', 'INAR_COMO AS MONEDA', 'INAR_PREC AS PRECIO', 'INAR_MOMI AS MONTO_MINIMO', 'INAR_CARA AS CARACTERISTICAS', 'INAR_ESTA AS ESTADO', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el contenido de los detalles de la descripción del artículo #{$idArticle}.", $th->getMessage(), 500); } $description->DETALLES = $arrDetails; } $article->DESCRIPCION_ARTICULO = $arrDescription; return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $article); } public function getAllArtitles($user, $line) { $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line); if ($arrResponseCheckUser['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, 'ERR_ARTITLE_GETALL000:'.$arrResponseCheckUser['msg'], [], 401); } try { $arrArtitle = DB::table('S002V01TARTI') ->where("ARTI_NULI", "=", $line) ->join("S002V01TFAMI", "ARTI_COFA", "=", "FAMI_COFA") ->join("S002V01TSUBF", "ARTI_COSU", "=", "SUBF_COSU") ->get([ "ARTI_IDAR AS ID_ARTICULO", "ARTI_NOMB AS MODELO", "FAMI_COFA AS ID_FAMILIA", "FAMI_NOFA AS FAMILIA", "SUBF_COSU AS ID_SUBFAMILIA", "SUBF_NOSU AS SUBFAMILIA", "ARTI_ESTA AS ESTADO", "ARTI_USRE AS USUARIO_REGISTRA", "ARTI_FERE AS FECHA_REGISTRA", "ARTI_USMO AS USUARIO_MODIFICA", "ARTI_FEMO AS FECHA_MODIFICA", ]); $arrArtitle = json_decode(json_encode($arrArtitle), true); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_ARTITLE_GETALL001: No se pudo realizar la consulta a la base.", $th->getMessage(), 500); } $responseCheckLatestUpdate = $this->resourcesController->checkLatestUpdate($arrArtitle, $line); if ($responseCheckLatestUpdate['error']) { return $this->responseController->makeResponse(true, $responseCheckLatestUpdate['msg'], [], 500); } $arrArtitle = $responseCheckLatestUpdate['response']; return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrArtitle); } public function registerArtitlesOld(Request $request) { $validator = Validator::make($request->all(), [ 'CODIGO' => 'required|string', 'ARTICULO' => 'required|string', 'FAMILIA' => 'required|string', 'SUBFAMILIA' => 'required|string', 'INFORMATION' => 'required|array', 'USUARIO' => 'required|string', 'NUMERO_LINEA' => 'required|integer', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "ERR_ARTITLE_REG000: Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } DB::beginTransaction(); $requestData = $request->all(); foreach ($requestData['INFORMATION'] as $information) { $validator = Validator::make($information, [ 'NO' => 'required|string', 'IMAGEN' => 'required|array', 'DESCRIPCION' => 'required|string', // 'CARACTERISTICAS' => '|string', 'TIPO_UNIDAD' => 'required|integer', 'PROVEEDOR' => 'required|string', 'COMPRA_WEB' => 'required|boolean', 'ESTADO' => 'required|string', 'DETAILS' => 'required|array', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "ERR_ARTITLE_REG001: Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } foreach ($information['DETAILS'] as $details) { $validator = Validator::make($details, [ 'NO' => 'required|string', 'CODIGO' => 'required|string', 'MODELO' => 'required|string', 'MONEDA' => 'required|string', 'PRECIO' => 'required|string', 'MONTO_MINIMO' => 'required|string', 'ESTADO' => 'required|string', 'CARACTERISTICAS' => 'required|string', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "ERR_ARTITLE_REG002: Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } } } $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']); if ($arrResponseCheckUser['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, 'ERR_ARTITLE_REG003:'.$arrResponseCheckUser['msg'], [], 401); } $usuario = $arrResponseCheckUser['response']; $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $idArtitle = DB::table('S002V01TARTI')->insertGetId([ 'ARTI_CODI' => $requestData['CODIGO'], 'ARTI_COFA' => $requestData['FAMILIA'], 'ARTI_COSU' => $requestData['SUBFAMILIA'], 'ARTI_NOMB' => $requestData['ARTICULO'], 'ARTI_NULI' => $requestData['NUMERO_LINEA'], 'ARTI_USRE' => $usuario, 'ARTI_FERE' => $currentDate, 'ARTI_FEAR' => DB::raw('CURRENT_TIMESTAMP') ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_ARTITLE_REG004: No se pudo realizar la consulta a la base.", $th->getMessage(), 500); } foreach ($requestData['INFORMATION'] as $keyInformation => $information) { try { $arrCodeImages = array(); foreach ($information['IMAGEN'] as $key => $encIdFile) { $idFile = $this->encController->decrypt($encIdFile); $tempFile = DB::table('S002V01TARTE')->where([ ['ARTE_NULI', '=', $requestData['NUMERO_LINEA']], ['ARTE_IDAR', '=', $idFile], ])->first(); if(is_null($tempFile)){ return $this->responseController->makeResponse(true, 'ERR_ARTITLE_REG005: El archivo consultado no está registrado', [], 404); }else if($tempFile->ARTE_ESTA == 'Eliminado'){ return $this->responseController->makeResponse(true, 'ERR_ARTITLE_REG006: El archivo consultado está eliminado', [], 404); } $fileResponse = $this->documentManagementController->moveFinalFile( intval($requestData['NUMERO_LINEA']), 'GEAD', 'FO', $tempFile, $usuario, ); if(!$fileResponse[0]){ return $this->responseController->makeResponse(true, 'ERR_ARTITLE_REG007: '.$fileResponse[1], [], 400); } $arrCodeImages[] = $this->encController->encrypt($fileResponse[1]); } $jsonImages = json_encode($arrCodeImages); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_ARTITLE_REG008: Ocurrió un error al obtener la URL pública de las imágenes.", $th->getMessage(), 500); } try { $idDescription = DB::table('S002V01TDEAR')->insertGetId([ 'DEAR_DESC' => $information['DESCRIPCION'], 'DEAR_CARA' => $information['CARACTERISTICAS'], 'DEAR_COWE' => $information['COMPRA_WEB'], 'DEAR_IDUN' => $information['TIPO_UNIDAD'], 'DEAR_IMAG' => $jsonImages, 'DEAR_NUPR' => $information['PROVEEDOR'], 'DEAR_IDAR' => $idArtitle, 'DEAR_NULI' => $requestData['NUMERO_LINEA'], 'DEAR_USRE' => $usuario, 'DEAR_FERE' => $currentDate, 'DEAR_FEAR' => DB::raw('CURRENT_TIMESTAMP') ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_ARTITLE_REG009: Ocurrió un error al insertar los datos de la información del artículo.", $th->getMessage(), 500); } $arrDetails = $information['DETAILS']; foreach ($arrDetails as $keyDetails => $details) { $insertDetails = [ 'INAR_IDDE' => $idDescription, 'INAR_CODI' => $details['CODIGO'], 'INAR_MODE' => $details['MODELO'], 'INAR_COMO' => $details['MONEDA'], 'INAR_PREC' => $details['PRECIO'], 'INAR_MOMI' => $details['MONTO_MINIMO'], 'INAR_CARA' => $details['CARACTERISTICAS'], 'INAR_NULI' => $requestData['NUMERO_LINEA'], 'INAR_USRE' => $usuario, 'INAR_FERE' => $currentDate, 'INAR_FEAR' => DB::raw('CURRENT_TIMESTAMP') ]; try { $validateDetails = DB::table('S002V01TINAR')->insert($insertDetails); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_ARTITLE_REG010: Ocurrió un error al insertar los datos de los detalles del artículo.", $th->getMessage(), 500); } if (!$validateDetails) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_ARTITLE_REG011: No se pudo insertar los datos de los detalles.", [], 500); } } } DB::commit(); return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso"); } public function registerArticle (Request $request) { $validator = Validator::make($request->all(), [ 'CODIGO' => 'required|string', 'ARTICULO' => 'required|string', 'FAMILIA' => 'required|string', 'SUBFAMILIA' => 'required|string', 'DESCRIPCION_ARTICULO' => 'required|array', 'USUARIO' => 'required|string', 'NUMERO_LINEA' => 'required|integer', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } DB::beginTransaction(); $requestData = $request->all(); $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']); if ($arrResponseCheckUser['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401); } $user = $arrResponseCheckUser['response']; try { $validateExists = DB::table("S002V01TFAMI")->where([ ['FAMI_COFA', '=', $requestData['FAMILIA']], ['FAMI_NULI', '=', $requestData['NUMERO_LINEA']], ])->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error verificar la existencia de la familia.", $th->getMessage(), 500); } if ($validateExists === false) { DB::rollBack(); return $this->responseController->makeResponse(true, "La familia {$requestData['FAMILIA']} no existe.", [], 500); } unset($validateExists); try { $validateExists = DB::table('S002V01TSUBF') ->where([ ['SUBF_NULI', '=', $requestData['NUMERO_LINEA']], ['SUBF_COFA', '=', $requestData['FAMILIA']], ['SUBF_COSU', '=', $requestData['SUBFAMILIA']], ])->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error verificar la existencia de la subfamilia.", $th->getMessage(), 500); } if ($validateExists === false) { DB::rollBack(); return $this->responseController->makeResponse(true, "La subfamilia {$requestData['SUBFAMILIA']} perteneciente a la familia {$requestData['FAMILIA']} no existe.", [], 500); } unset($validateExists); $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $idArticle = DB::table('S002V01TARTI') ->insertGetId([ 'ARTI_NULI' => $requestData['NUMERO_LINEA'], 'ARTI_COFA' => $requestData['FAMILIA'], 'ARTI_COSU' => $requestData['SUBFAMILIA'], 'ARTI_CODI' => $requestData['CODIGO'], 'ARTI_NOMB' => $requestData['ARTICULO'], 'ARTI_USRE' => $user, 'ARTI_FERE' => $currentDate, 'ARTI_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error al registrar el artículo.", $th->getMessage(), 500); } if ($idArticle <= 0) { DB::rollBack(); return $this->responseController->makeResponse(true, "No se pudo registra el artículo.", [], 500); } foreach ($requestData['DESCRIPCION_ARTICULO'] as $item => $descriptions) { try { $validateExists = DB::table('S002V01TUNID') ->where([ ['UNID_NULI', '=', $requestData['NUMERO_LINEA']], ['UNID_IDUN', '=', $descriptions['ID_UNIDAD']], ])->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error verificar la existencia de unidad {$descriptions['UNIDAD']} (#{$descriptions['ID_UNIDAD']}).", $th->getMessage(), 500); } if ($validateExists === false) { DB::rollBack(); return $this->responseController->makeResponse(true, "La unidad {$descriptions['UNIDAD']} (#{$descriptions['ID_UNIDAD']}) no existe.", [], 500); } unset($validateExists); try { $validateExists = DB::table('S002V01TPROV') ->where([ ['PROV_NULI', '=', $requestData['NUMERO_LINEA']], ['PROV_NUPR', '=', $descriptions['NUMERO_PROVEEDOR']], ])->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error verificar la existencia del proveedor {$descriptions['PROVEEDOR']} (#{$descriptions['NUMERO_PROVEEDOR']}).", $th->getMessage(), 500); } if ($validateExists === false) { DB::rollBack(); return $this->responseController->makeResponse(true, "El proveedor {$descriptions['PROVEEDOR']} (#{$descriptions['NUMERO_PROVEEDOR']}) no existe.", [], 500); } unset($validateExists); $arrImages = []; foreach ($descriptions['ARCHIVOS'] as $files) { $idFile = $this->encController->decrypt($files['ID']); if (is_null($idFile)) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el contenido del identificador del archivo temporal.", [], 500); } try { $tempFile = DB::table('S002V01TARTE') ->where([ ['ARTE_NULI', '=', $requestData['NUMERO_LINEA']], ['ARTE_IDAR', '=', $idFile], ])->first(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error al obtener los archivos temporales.", $th->getMessage(), 500); } if (is_null($tempFile) || empty((array)$tempFile)) { DB::rollBack(); return $this->responseController->makeResponse(true, "No se encontró el archivo temporal dentro de la base de datos.", [], 500); } if ($tempFile->ARTE_ESTA == 'Eliminado') { DB::rollBack(); return $this->responseController->makeResponse(true, "El archivo consultado se encuentra eliminado.", [], 500); } $fileResponse = $this->documentManagementController->moveFinalFile( intval($requestData['NUMERO_LINEA']), 'GEAD', 'FO', $tempFile, $user, ); if(!$fileResponse[0]){ DB::rollBack(); return $this->responseController->makeResponse(true, $fileResponse[1], [], 400); } $arrImages[] = $this->encController->encrypt($fileResponse[1]); } $images = json_encode($arrImages); try { $idDescription = DB::table('S002V01TDEAR') ->insertGetId([ 'DEAR_NULI' => $requestData['NUMERO_LINEA'], 'DEAR_IMAG' => $images, 'DEAR_DESC' => $descriptions['DESCRIPCION'], 'DEAR_CARA' => $descriptions['CARACTERISTICAS'], 'DEAR_COWE' => true, 'DEAR_IDUN' => $descriptions['ID_UNIDAD'], 'DEAR_NUPR' => $descriptions['NUMERO_PROVEEDOR'], 'DEAR_IDAR' => $idArticle, 'DEAR_PRIO' => $item + 1, 'DEAR_CAAR' => $descriptions['CANTIDAD_UNIDAD'], 'DEAR_USRE' => $user, 'DEAR_FERE' => $currentDate, 'DEAR_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error al registrar la descripción del proveedor #{$requestData['NUMERO_PROVEEDOR']}.", $th->getMessage(), 500); } if ($idDescription <= 0) { DB::rollBack(); return $this->responseController->makeResponse(true, "No se pudo registrar la descripción del proveedor #{$requestData['NUMERO_PROVEEDOR']}.", [], 500); } foreach ($descriptions['DETALLES'] as $details) { try { $validateExists = DB::table('S002V01TCAMO') ->where([ ['CAMO_NULI', '=', $requestData['NUMERO_LINEA']], ['CAMO_COMO', '=', $details['MONEDA']], ])->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error al verificar la existencia de la moneda {$details['MONEDA']}.", $th->getMessage(), 500); } if ($validateExists === false) { DB::rollBack(); return $this->responseController->makeResponse(true, "La moneda {$details['MONEDA']} no existe.", [], 500); } unset($validateExists); try { $validateInsert = DB::table('S002V01TINAR') ->insert([ 'INAR_NULI' => $requestData['NUMERO_LINEA'], 'INAR_IDDE' => $idDescription, 'INAR_CODI' => $details['CODIGO'], 'INAR_MODE' => $details['MODELO'], 'INAR_COMO' => $details['MONEDA'], 'INAR_PREC' => $details['PRECIO'], 'INAR_MOMI' => $details['MONTO_MINIMO'], 'INAR_CARA' => $details['CARACTERISTICAS'], 'INAR_USRE' => $user, 'INAR_FERE' => $currentDate, 'INAR_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error al registrar los detalles de la descripción del proveedor #{$requestData['NUMERO_PROVEEDOR']}.", $th->getMessage(), 500); } if ($validateInsert === false) { DB::rollBack(); return $this->responseController->makeResponse(true, "No se pudo registrar los detalles de descripción del proveedor #{$requestData['NUMERO_PROVEEDOR']}.", [], 500); } } } DB::commit(); return $this->responseController->makeResponse(false, "ÉXITO: Registro exitoso"); } public function updateArticle (Request $request, $idArticle) { $validator = Validator::make($request->all(), [ 'CODIGO' => 'required|string', 'ARTICULO' => 'required|string', 'FAMILIA' => 'required|string', 'SUBFAMILIA' => 'required|string', 'DESCRIPCION_ARTICULO' => 'required|array', 'USUARIO' => 'required|string', 'NUMERO_LINEA' => 'required|integer', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } DB::beginTransaction(); $requestData = $request->all(); $idArticle = $this->encController->decrypt($idArticle); if (is_null($idArticle)) { DB::rollBack(); return $this->responseController->makeResponse(true, "El identificador del artículo no está encriptado correctamente.", [], 500); } $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']); if ($arrResponseCheckUser['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401); } $user = $arrResponseCheckUser['response']; try { $validateExists = DB::table("S002V01TFAMI")->where([ ['FAMI_COFA', '=', $requestData['FAMILIA']], ['FAMI_NULI', '=', $requestData['NUMERO_LINEA']], ])->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error verificar la existencia de la familia.", $th->getMessage(), 500); } if ($validateExists === false) { DB::rollBack(); return $this->responseController->makeResponse(true, "La familia {$requestData['FAMILIA']} no existe.", [], 500); } unset($validateExists); try { $validateExists = DB::table('S002V01TSUBF') ->where([ ['SUBF_NULI', '=', $requestData['NUMERO_LINEA']], ['SUBF_COFA', '=', $requestData['FAMILIA']], ['SUBF_COSU', '=', $requestData['SUBFAMILIA']], ])->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error verificar la existencia de la subfamilia.", $th->getMessage(), 500); } if ($validateExists === false) { DB::rollBack(); return $this->responseController->makeResponse(true, "La subfamilia {$requestData['SUBFAMILIA']} perteneciente a la familia {$requestData['FAMILIA']} no existe.", [], 500); } unset($validateExists); $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $validateUpdate = DB::table('S002V01TARTI') ->where([ ['ARTI_IDAR', '=', $idArticle], ['ARTI_NULI', '=', $requestData['NUMERO_LINEA']], ['ARTI_ESTA', '=', 'Activo'], ]) ->update([ 'ARTI_COFA' => $requestData['FAMILIA'], 'ARTI_COSU' => $requestData['SUBFAMILIA'], 'ARTI_CODI' => $requestData['CODIGO'], 'ARTI_NOMB' => $requestData['ARTICULO'], 'ARTI_USRE' => $user, 'ARTI_FERE' => $currentDate, 'ARTI_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error al actualizar el artículo.", $th->getMessage(), 500); } if (!$validateUpdate) { DB::rollBack(); return $this->responseController->makeResponse(true, "No se pudo modificar el artículo #{$idArticle}.", [], 500); } foreach ($requestData['DESCRIPCION_ARTICULO'] as $item => $descriptions) { try { $validateExists = DB::table('S002V01TUNID') ->where([ ['UNID_NULI', '=', $requestData['NUMERO_LINEA']], ['UNID_IDUN', '=', $descriptions['ID_UNIDAD']], ])->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error verificar la existencia de unidad {$descriptions['UNIDAD']} (#{$descriptions['ID_UNIDAD']}).", $th->getMessage(), 500); } if ($validateExists === false) { DB::rollBack(); return $this->responseController->makeResponse(true, "La unidad {$descriptions['UNIDAD']} (#{$descriptions['ID_UNIDAD']}) no existe.", [], 500); } unset($validateExists); try { $validateExists = DB::table('S002V01TPROV') ->where([ ['PROV_NULI', '=', $requestData['NUMERO_LINEA']], ['PROV_NUPR', '=', $descriptions['NUMERO_PROVEEDOR']], ])->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error verificar la existencia del proveedor {$descriptions['PROVEEDOR']} (#{$descriptions['NUMERO_PROVEEDOR']}).", $th->getMessage(), 500); } if ($validateExists === false) { DB::rollBack(); return $this->responseController->makeResponse(true, "El proveedor {$descriptions['PROVEEDOR']} (#{$descriptions['NUMERO_PROVEEDOR']}) no existe.", [], 500); } unset($validateExists); $arrImages = []; foreach ($descriptions['ARCHIVOS'] as $files) { if ($files['TYPE'] === 'R') { $idFile = $this->encController->decrypt($files['ID']); if (is_null($idFile)) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el contenido del identificador del archivo temporal.", [], 500); } try { $tempFile = DB::table('S002V01TARTE') ->where([ ['ARTE_NULI', '=', $requestData['NUMERO_LINEA']], ['ARTE_IDAR', '=', $idFile], ])->first(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error al obtener los archivos temporales.", $th->getMessage(), 500); } if (is_null($tempFile) || empty((array)$tempFile)) { DB::rollBack(); return $this->responseController->makeResponse(true, "No se encontró el archivo temporal dentro de la base de datos.", [], 500); } if ($tempFile->ARTE_ESTA == 'Eliminado') { DB::rollBack(); return $this->responseController->makeResponse(true, "El archivo consultado se encuentra eliminado.", [], 500); } $fileResponse = $this->documentManagementController->moveFinalFile( intval($requestData['NUMERO_LINEA']), 'GEAD', 'FO', $tempFile, $user, ); if(!$fileResponse[0]){ DB::rollBack(); return $this->responseController->makeResponse(true, $fileResponse[1], [], 400); } $arrImages[] = $this->encController->encrypt($fileResponse[1]); } if ($files['TYPE'] === 'O') { $idFile = $this->encController->encrypt($files['ID']); $arrImages[] = $idFile; } if ($files['TYPE'] === 'OD') { $idFile = $this->encController->encrypt($files['ID']); $request = new Request([ 'id_user' => $requestData['USUARIO'], 'id_file' => $idFile, 'linea' => $requestData['NUMERO_LINEA'], ]); $responseData = $this->documentManagementController->deleteFile($request); $responseData = json_decode($responseData->original, true); if ($responseData['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, $responseData['msg'], $responseData['response'], 500); } } } $images = json_encode($arrImages); try { $valdateUpdate = DB::table('S002V01TDEAR') ->where([ ['DEAR_NULI', '=', $requestData['NUMERO_LINEA']], ['DEAR_IDDE', '=', $descriptions['ID_DESCRIPCION']], ['DEAR_IDAR', '=', $idArticle], ['DEAR_ESTA', '=', 'Activo'], ]) ->update([ 'DEAR_IMAG' => $images, 'DEAR_DESC' => $descriptions['DESCRIPCION'], 'DEAR_CARA' => $descriptions['CARACTERISTICAS'], 'DEAR_COWE' => true, 'DEAR_IDUN' => $descriptions['ID_UNIDAD'], 'DEAR_NUPR' => $descriptions['NUMERO_PROVEEDOR'], 'DEAR_CAAR' => $descriptions['CANTIDAD_UNIDAD'], 'DEAR_PRIO' => $item + 1, 'DEAR_USMO' => $user, 'DEAR_FEMO' => $currentDate, 'DEAR_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error al actualizar la descripción del proveedor #{$descriptions['NUMERO_PROVEEDOR']}.", $th->getMessage(), 500); } if (!$valdateUpdate) { DB::rollBack(); return $this->responseController->makeResponse(true, "No se pudo actualizar la descripción del proveedor #{$descriptions['NUMERO_PROVEEDOR']}.", [], 500); } foreach ($descriptions['DETALLES'] as $details) { try { $validateExists = DB::table('S002V01TCAMO') ->where([ ['CAMO_NULI', '=', $requestData['NUMERO_LINEA']], ['CAMO_COMO', '=', $details['MONEDA']], ])->exists(); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error al verificar la existencia de la moneda {$details['MONEDA']}.", $th->getMessage(), 500); } if ($validateExists === false) { DB::rollBack(); return $this->responseController->makeResponse(true, "La moneda {$details['MONEDA']} no existe.", [], 500); } unset($validateExists); try { $validateUpdate = DB::table('S002V01TINAR') ->where([ ['INAR_NULI', '=', $requestData['NUMERO_LINEA']], ['INAR_IDIN', '=', $details['ID_DETAILS']], ['INAR_IDDE', '=', $descriptions['ID_DESCRIPCION']], ['INAR_ESTA', '=', 'Activo'], ]) ->update([ 'INAR_CODI' => $details['CODIGO'], 'INAR_MODE' => $details['MODELO'], 'INAR_COMO' => $details['MONEDA'], 'INAR_PREC' => $details['PRECIO'], 'INAR_MOMI' => $details['MONTO_MINIMO'], 'INAR_CARA' => $details['CARACTERISTICAS'], 'INAR_USMO' => $user, 'INAR_FEMO' => $currentDate, 'INAR_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "Ocurrió un error al modificar los detalles de la descripción del proveedor #{$requestData['NUMERO_PROVEEDOR']}.", $th->getMessage(), 500); } if (!$validateUpdate) { DB::rollBack(); return $this->responseController->makeResponse(true, "No se pudo modificar los detalles de descripción del proveedor #{$requestData['NUMERO_PROVEEDOR']}.", [], 500); } } } DB::commit(); return $this->responseController->makeResponse(false, "ÉXITO: Modificación Exitosa"); } public function deleteArtitle(Request $request) { $validator = Validator::make($request->all(), [ 'NUMERO_ARTITULO' => 'required|string', 'NUMERO_LINEA' => 'required|integer', 'USUARIO' => 'required|string', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "ERR_ARTITLE_DEL000: Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } DB::beginTransaction(); $requestData = $request->all(); $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']); if ($arrResponseCheckUser['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, 'ERR_ARTITLE_DEL001:'.$arrResponseCheckUser['msg'], [], 401); } $usuario = $arrResponseCheckUser['response']; try { $artitleNumber = $this->encController->decrypt($requestData['NUMERO_ARTITULO']); } catch (\Throwable $th) { return $this->responseController->makeResponse( true, "ERR_ARTITLE_DEL002: Ocurrió un error al modificar el registro.", $th->getMessage(), 500 ); } $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $validateUpdate = DB::table('S002V01TARTI') ->where('ARTI_IDAR', '=', $artitleNumber) ->where('ARTI_NULI', '=', $requestData['NUMERO_LINEA']) ->update([ 'ARTI_ESTA' => 'Eliminado', 'ARTI_USMO' => $usuario, 'ARTI_FEMO' => $currentDate, 'ARTI_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_ARTITLE_DEL003: Ocurrió un error al modificar el registro.", $th->getMessage(), 500); } if (!$validateUpdate) { return $this->responseController->makeResponse(true, "ERR_ARTITLE_DEL004: Ocurrió un error al modificar en la tabla.", [], 500); } try { $arrDescription = DB::table('S002V01TDEAR') ->where('DEAR_IDAR', '=', $artitleNumber) ->get([ 'DEAR_IDDE AS NUMERO_DESCRIPCION' ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_ARTITLE_DEL005: Ocurrió un error al obtener los datos de la descripción del artículo", $th->getMessage(), 500); } foreach ($arrDescription as $keyDescription => $description) { $numeroDescripcion = $description->NUMERO_DESCRIPCION; try { $validateUpdate = DB::table('S002V01TDEAR') ->where('DEAR_IDDE', '=', $numeroDescripcion) ->where('DEAR_NULI', '=', $requestData['NUMERO_LINEA']) ->update([ 'DEAR_ESTA' => 'Eliminado', 'DEAR_USMO' => $usuario, 'DEAR_FEMO' => $currentDate, 'DEAR_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_ARTITLE_DEL007: Ocurrió un error al modificar el registro.", $th->getMessage(), 500); } if (!$validateUpdate) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_ARTITLE_DEL006: Ocurrió un error al modificar en la tabla.", [], 500); } try { $validateUpdate = DB::table('S002V01TINAR') ->where('INAR_IDDE', '=', $numeroDescripcion) ->where('INAR_NULI', '=', $requestData['NUMERO_LINEA']) ->update([ 'INAR_ESTA' => 'Eliminado', 'INAR_USMO' => $usuario, 'INAR_FEMO' => $currentDate, 'INAR_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_ARTITLE_DEL009: Ocurrió un error al modificar el registro.", $th->getMessage(), 500); } if (!$validateUpdate) { DB::rollBack(); return $this->responseController->makeResponse(true, "ERR_ARTITLE_DEL008: Ocurrió un error al modificar en la tabla.", [], 500); } } DB::commit(); # Para guardar los cambios en la base de datos return $this->responseController->makeResponse(false, "ÉXITO: Eliminación Exitosa"); } public function generateArtitles(Request $request) { $validator = Validator::make($request->all(), [ 'FILE_ZIP' => 'required', 'NUMERO_LINEA' => 'required', 'USUARIO' => 'required', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "ERR_ARTITLE_MOD000: Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } } public function getArtitleByInformation($information, $user, $line) { try { $objInformation = (array) DB::table('S002V01TINAR') ->where('INAR_IDIN', '=', $information) ->where('INAR_ESTA', '=', 'Activo') ->where('DEAR_ESTA', '=', 'Activo') ->where('ARTI_ESTA', '=', 'Activo') ->where('FAMI_ESTA', '=', 'Activo') ->where('SUBF_ESTA', '=', 'Activo') ->where('UNID_ESTA', '=', 'Activo') ->where('PROV_ESTA', '=', 'Activo') ->join('S002V01TDEAR', 'DEAR_IDDE', '=', 'INAR_IDDE') ->join('S002V01TARTI', 'ARTI_IDAR', '=', 'DEAR_IDAR') ->join('S002V01TFAMI', 'FAMI_COFA', '=', 'ARTI_COFA') ->join('S002V01TSUBF', 'SUBF_COSU', '=', 'ARTI_COSU') ->join('S002V01TUNID', 'UNID_IDUN', '=', 'DEAR_IDUN') ->join('S002V01TPROV', 'PROV_NUPR', '=', 'DEAR_NUPR') ->join('S002V01TCAMO', 'CAMO_COMO', '=', 'INAR_COMO') ->first([ 'INAR_IDIN', // Identificador de Información del artículo 'INAR_CODI', // Código del artículo 'INAR_MODE', // Modelo del artículo DB::raw('CONCAT("(", CAMO_COMO, ") ", CAMO_DESC) AS CAMO_COMO'), 'INAR_PREC', // Precio 'INAR_CARA', // Características 'DEAR_IDDE', // Identificador de la descripción del artículo 'DEAR_DESC', // Descripción del artículo 'DEAR_CARA', // Características del artículo 'DEAR_COWE', // Compra web 'DEAR_IMAG', // Imagen 'DEAR_IDUN', // Identificador de la unidad 'UNID_NOMB', // Nombre de la unidad 'UNID_ACRO', // Acrónimo de la familia 'DEAR_NUPR', // Número del proveedor 'ARTI_IDAR', // Identificador del artículo 'ARTI_COFA', // Identificador de la familia 'FAMI_NOFA', // Nombre de la familia 'ARTI_COSU', // Identificador de la subfamilia 'SUBF_NOSU', // Nombre de la subfamilia 'ARTI_CODI', // Código del artículo 'ARTI_NOMB', // Nombre del artículo 'PROV_NOCO', // Nombre comercial 'PROV_NOMB', // Nombre del proveedor 'PROV_APPA', // Apellido paterno del proveedor 'PROV_APMA', // Apellido materno del proveedor 'PROV_CORR', // Correo electrónico 'PROV_LAD1', // Lada 1 'PROV_TEL1', // Teléfono 1 'PROV_LAD2', // Lada 2 'PROV_TEL2', // Teléfono 2 'PROV_XRFC', // R.F.C 'PROV_XTAX', // TAX ID 'PROV_TIPO', // Tipo 'PROV_SIWE', // Sitio Web 'PROV_MEPA', // Metodos de pago ]); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "ERR_ARTITLE_GETBYINFORMATION000: No se pudo realizar la consulta a la base.", $th->getMessage(), 500); } $objInformation['DEAR_IMAG'] = json_decode($objInformation['DEAR_IMAG']); $arrUrlImage = array(); foreach ($objInformation['DEAR_IMAG'] as $key => $imagen) { $responseDocument = $this->documentManagementController->privateGetPublicDocumentURL($imagen, $user, $line); if ($responseDocument['error']) { return $this->responseController->makeResponse(true, "ERR_ARTITLE_GETBYINFORMATION001: Ocurrió un error al obtener la URL de la imágen.", [], 500); } $arrUrlImage[] = $responseDocument['response']['public_uri']; } $objInformation['DEAR_IMAG'] = $arrUrlImage; return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $objInformation); } public function getManagementUnit ($user, $line) { $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line); if ($arrResponseCheckUser['error']) { return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401); } try { $arrUnits = DB::table('S002V01TUNID') ->where('UNID_NULI', '=', $line) ->where('UNID_ESTA', '=', 'Activo') ->get([ 'UNID_IDUN AS ID_UNIDAD', 'UNID_NOMB AS UNIDAD', 'UNID_ACRO AS ACRONIMO', ]); $arrUnits = json_decode(json_encode($arrUnits), true); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, 'Ocurrió un error al obtener los datos de la unidad.', [], 500); } return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrUnits); } public function createUnit (Request $request) { $validator = Validator::make($request->all(), [ 'UNIDAD' => 'required|string', 'ACRONIMO' => 'required|string', 'USUARIO' => 'required|string', 'NUMERO_LINEA' => 'required|integer', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } $requestData = $request->all(); $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']); if ($arrResponseCheckUser['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, 'ERR_WAREHOUSE_GETBY000:'.$arrResponseCheckUser['msg'], [], 401); } $user = $arrResponseCheckUser['response']; $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $validate = DB::table('S002V01TUNID')->insert([ 'UNID_NULI' => $requestData['NUMERO_LINEA'], 'UNID_NOMB' => $requestData['UNIDAD'], 'UNID_ACRO' => $requestData['ACRONIMO'], 'UNID_USRE' => $user, 'UNID_FERE' => $currentDate, 'UNID_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "Ocurrió un error al registrar la unidad.", $th->getMessage(), 500); } if (!$validate) { return $this->responseController->makeResponse(true, "No se pudo registrar la unidad.", [], 500); } return $this->responseController->makeResponse(false, "ÉXITO: Registro Exitoso"); } public function updateUnit (Request $request, $idUnit) { $validator = Validator::make($request->all(), [ 'UNIDAD' => 'required|string', 'ACRONIMO' => 'required|string', 'USUARIO' => 'required|string', 'NUMERO_LINEA' => 'required|integer', ]); if ($validator->fails()) { return $this->responseController->makeResponse( true, "Se encontraron uno o más errores.", $this->responseController->makeErrors($validator->errors()->messages()), 401 ); } $requestData = $request->all(); $arrResponseCheckUser = $this->resourcesController->checkUserEnc($requestData['USUARIO'], $requestData['NUMERO_LINEA']); if ($arrResponseCheckUser['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, $arrResponseCheckUser['msg'], [], 401); } $user = $arrResponseCheckUser['response']; $idUnit = $this->encController->encrypt($idUnit); if (is_null($idUnit)) { return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el identificador de la unidad.", [], 500); } try { $validateExists = DB::table('S002V01TUNID') ->where('UNID_IDUN', '=', $idUnit) ->where('UNID_ESTA', '=', 'Activo') ->where('UNID_NULI', '=', $requestData['NUMERO_LINEA']) ->exists(); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "Ocurrió un error al verificar si la unidad está registrada.", $th->getMessage(), 500); } if (!$validateExists) { return $this->responseController->makeResponse(true, "La unidad no existe.", [], 404); } $now = $this->functionsController->now(); $currentDate = $now->toDateTimeString(); try { $validate = DB::table('S002V01TUNID') ->where('UNID_IDUN', '=', $idUnit) ->where('UNID_ESTA', '=', 'Activo') ->where('UNID_NULI', '=', $requestData['NUMERO_LINEA']) ->update([ 'UNID_NOMB' => $requestData['UNIDAD'], 'UNID_ACRO' => $requestData['ACRONIMO'], 'UNID_USMO' => $user, 'UNID_FEMO' => $currentDate, 'UNID_FEAR' => DB::raw('CURRENT_TIMESTAMP'), ]); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "IOcurrió un error al modificar la unidad.", $th->getMessage(), 500); } if (!$validate) { return $this->responseController->makeResponse(true, "No se pudo modificar la unidad.", [], 500); } return $this->responseController->makeResponse(false, "ÉXITO: Modificación Exitosa"); } public function getUnitById ($idUnit, $user, $line) { $arrResponseCheckUser = $this->resourcesController->checkUserEnc($user, $line); if ($arrResponseCheckUser['error']) { DB::rollBack(); return $this->responseController->makeResponse(true, 'ERR_WAREHOUSE_GETBY000:'.$arrResponseCheckUser['msg'], [], 401); } $user = $arrResponseCheckUser['response']; $idUnit = $this->encController->decrypt($idUnit); if (is_null($idUnit)) { return $this->responseController->makeResponse(true, "Ocurrió un error al obtener el identificador de la unidad.", [], 500); } try { $validateExists = DB::table('S002V01TUNID') ->where('UNID_IDUN', '=', $idUnit) ->where('UNID_ESTA', '=', 'Activo') ->where('UNID_NULI', '=', $line) ->exists(); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "Ocurrió un error al verificar si la unidad está registrada.", $th->getMessage(), 500); } if (!$validateExists) { return $this->responseController->makeResponse(true, "La unidad no existe.", [], 404); } try { $arrUnit = (array) DB::table('S002V01TUNID') ->where('UNID_IDUN', '=', $idUnit) ->where('UNID_ESTA', '=', 'Activo') ->where('UNID_NULI', '=', $line) ->first([ 'UNID_IDUN AS ID_UNIDAD', 'UNID_NOMB AS UNIDAD', 'UNID_ACRO AS ACRONIMO', ]); } catch (\Throwable $th) { return $this->responseController->makeResponse(true, "Ocurrió un error al obtener la información de la unidad.", $th->getMessage(), 500); } return $this->responseController->makeResponse(false, "ÉXITO: Consulta Exitosa", $arrUnit); } public function deleteUnitById (Request $request, $idUnit) { } }