def update(id:int): company_id = session["user"]["company_id"] if not db.is_existing(table="users", conditions={"id":id, "type":"driver", "company_id": company_id}): return jsonify(info="Driver not found"), 404 driver = request.get_json(force=True) driver = Driver.parse(driver, "update") if "errors" in driver: return jsonify(errors=driver["errors"]),400 driver = driver["driver"] driver_data = {} if "name" in driver: if db.is_existing(table="users", conditions={"name": driver["name"], "type":"driver", "company_id": company_id}): return jsonify(info="Driver with the same name already exist"),400 driver_data["name"] = driver["name"] if "email" in driver: if db.is_existing(table="users", conditions={"email": driver["email"], "type":"driver", "company_id": company_id}): return jsonify(info="Driver with the same email already exist"),400 driver_data["email"] = driver["email"] if "phone" in driver: driver_data["phone"] = driver["phone"] db.update(table="users", params=driver_data, conditions={"id": id}) return jsonify(info="Driver updated successfully"),200
def create(): company_id = session["user"]["company_id"] driver = request.get_json(force=True) driver = Driver.parse(driver, "create") if "errors" in driver: return jsonify(errors=driver["errors"]),400 driver = driver["driver"] if db.is_existing(table="users", conditions={"name": driver["name"], "type":"driver", "company_id":company_id}): return jsonify(info="Driver with the same name already exist"),400 if db.is_existing(table="users", conditions={"email": driver["email"], "type":"driver", "company_id": company_id}): return jsonify(info="Driver with the same email already exist"),400 pwd = Generator.password() driver_data={ "name" : driver["name"], "email" : driver["email"], "password" : generate_password_hash(pwd), "company_id" : company_id, "phone" : driver["phone"], "type":"driver" } driverId = db.insert(table="users", params=driver_data) return jsonify(info="Driver created successfully", driverId=driverId, password=pwd),200
def set_vehicle(driver_id:int): def reset_vehicle(index, driver_id): _sql = """ UPDATE vehicles SET vehicles.driver_id = NULL WHERE vehicles.id = ( SELECT users.vehicle_id_""" + str(index) +""" FROM users WHERE users.id = %(id)s ); """ db.query(_sql, params={"id" : driver_id}, fetch=False) company_id = session["user"]["company_id"] if not db.is_existing(table="users",conditions={"id":driver_id, "type":"driver", "company_id": company_id}): return jsonify(info="Driver not found"), 404 vehicles = request.get_json(force=True) vehicles = Driver.parse(vehicles, "set_vehicle") if "errors" in vehicles: return jsonify(errors=vehicles["errors"]),400 vehicles = vehicles["vehicles"] for k,v in vehicles.items(): if v is not None: if not db.is_existing(table="vehicles", conditions={"company_id": company_id, "id":v}): return jsonify(info="Vehicle " + str(k) + " not found"), 404 _sql = """ SELECT 1 FROM vehicles WHERE company_id=%(company_id)s AND id= %(v_id)s AND (driver_id IS NULL OR driver_id=%(id)s); """ # if wished vehicle is available if db.query(_sql,params={"company_id" : company_id, "id": driver_id, "v_id" : v}, multiple=False) is not None: # reset old vehicle reset_vehicle(k[1], driver_id) # update vehicle db.update(table="vehicles", params={"driver_id": driver_id}, conditions={"id":v}) else : return jsonify(info="Vehicle " + str(k) + " already taken"), 400 else : # reset old vehicle reset_vehicle(k[1], driver_id) # update user db.update(table="users", params={"vehicle_id_"+k[1]: v}, conditions={"id" : driver_id}) return jsonify(info="Vehicles set successfully"), 200