def agregar_solicitud_regencia(): datos_solicitud = request.get_json() session = Session() try: id = session.query(func.max(SolicitudRegencia.id)).filter_by( anno=datos_solicitud['anno']).first()[0] if id: id += 1 else: id = 1 datos_solicitud['fechaSolicitud'] = datos_solicitud[ 'fechaSolicitud'].split('T')[0] solicitud = SolicitudRegencia(id, datos_solicitud['anno'], datos_solicitud['fechaSolicitud'], None, datos_solicitud['estado'], datos_solicitud['nombreSolicitante'], datos_solicitud['nombreEncargado'], datos_solicitud['correoSolicitante'], datos_solicitud['observacion'], datos_solicitud['unidad'], datos_solicitud['cedulaUsuario']) session.add(solicitud) session.commit() reactivos = datos_solicitud['reactivosSolicitados'] cristalerias = datos_solicitud['cristaleriaSolicitada'] for reactivo in reactivos: reactivo_solicitado = ReactivosSolicitados( id, datos_solicitud['anno'], reactivo['nombre'], reactivo['pureza'], reactivo['cantidadSolicitada'], 'Pendiente', '') session.add(reactivo_solicitado) for cristaleria in cristalerias: cristaleria_solicitada = CristaleriaSolicitada( id, datos_solicitud['anno'], cristaleria['nombre'], cristaleria['material'], cristaleria['capacidad'], cristaleria['cantidadSolicitada'], 'Pendiente', '') session.add(cristaleria_solicitada) session.commit() return '', 200 except Exception as e: print(e) session.rollback() return 'Ha ocurrido un error al crear la solicitud', 400
def editar_solicitud_regencia(): datos_solicitud = request.get_json() session = Session() try: solicitud = session.query(SolicitudRegencia).get( (datos_solicitud['id'], datos_solicitud['anno'])) if solicitud is None: return "Solicitud no encontrada", 404 solicitud.fechaAprobacion = date.today() solicitud.estado = datos_solicitud['estado'] session.add(solicitud) for reactivo in datos_solicitud['reactivosSolicitados']: reactivo_solicitado = session.query(ReactivosSolicitados).get( (datos_solicitud['id'], datos_solicitud['anno'], reactivo['nombreReactivo'], reactivo['pureza'])) reactivo_solicitado.estadoEnSolicitud = reactivo[ 'estadoEnSolicitud'] reactivo_solicitado.justificacionRechazo = reactivo[ 'justificacionRechazo'] reactivo_actualizado = session.query(Reactivo).get( (reactivo['nombreReactivo'], reactivo['pureza'])) cantidad_actualizada = reactivo_actualizado.cantidad - reactivo_solicitado.cantidadSolicitada if cantidad_actualizada < 0: return 'No hay suficientes reactivos para aprobar la solicitud', 406 reactivo_actualizado.cantidad = cantidad_actualizada session.add(reactivo_actualizado) session.add(reactivo_solicitado) for cristaleria in datos_solicitud['cristaleriaSolicitada']: cristaleria_solicitada = session.query(CristaleriaSolicitada).get( (datos_solicitud['id'], datos_solicitud['anno'], cristaleria['nombreCristaleria'], cristaleria['material'], cristaleria['capacidad'])) cristaleria_solicitada.estadoEnSolicitud = cristaleria[ 'estadoEnSolicitud'] cristaleria_solicitada.justificacionRechazo = cristaleria[ 'justificacionRechazo'] cristaleria_actualizada = session.query(Cristaleria).get( (cristaleria['nombreCristaleria'], cristaleria['material'], cristaleria['capacidad'])) cantidad_actualizada = cristaleria_actualizada.cantidad - cristaleria_solicitada.cantidadSolicitada if cantidad_actualizada < 0: return 'No hay suficiente cristaleria para aprobar la solicitud', 406 cristaleria_actualizada.cantidad = cantidad_actualizada session.add(cristaleria_actualizada) session.add(cristaleria_solicitada) session.commit() session.close() return '', 200 except Exception as e: print(e) session.rollback() return 'Ha ocurrido un error al editar la solicitud', 400