add business rating calc to api and service
This commit is contained in:
@@ -11,7 +11,7 @@ class MihMzansiDirectoryServices {
|
|||||||
String business_id,
|
String business_id,
|
||||||
) async {
|
) async {
|
||||||
final response = await http.get(Uri.parse(
|
final response = await http.get(Uri.parse(
|
||||||
"${AppEnviroment.baseApiUrl}/mzasni-directory/business-ratings/user/$app_id/$business_id"));
|
"${AppEnviroment.baseApiUrl}/mzansi-directory/business-ratings/user/$app_id/$business_id"));
|
||||||
print(response.statusCode);
|
print(response.statusCode);
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
String body = response.body;
|
String body = response.body;
|
||||||
@@ -27,7 +27,7 @@ class MihMzansiDirectoryServices {
|
|||||||
String business_id,
|
String business_id,
|
||||||
) async {
|
) async {
|
||||||
final response = await http.get(Uri.parse(
|
final response = await http.get(Uri.parse(
|
||||||
"${AppEnviroment.baseApiUrl}/mzasni-directory/business-ratings/all/$business_id"));
|
"${AppEnviroment.baseApiUrl}/mzansi-directory/business-ratings/all/$business_id"));
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
Iterable l = jsonDecode(response.body);
|
Iterable l = jsonDecode(response.body);
|
||||||
List<BusinessReview> businessReviews = List<BusinessReview>.from(
|
List<BusinessReview> businessReviews = List<BusinessReview>.from(
|
||||||
@@ -48,7 +48,7 @@ class MihMzansiDirectoryServices {
|
|||||||
) async {
|
) async {
|
||||||
var response = await http.post(
|
var response = await http.post(
|
||||||
Uri.parse(
|
Uri.parse(
|
||||||
"${AppEnviroment.baseApiUrl}/mzasni-directory/business-rating/insert/"),
|
"${AppEnviroment.baseApiUrl}/mzansi-directory/business-rating/insert/"),
|
||||||
headers: <String, String>{
|
headers: <String, String>{
|
||||||
"Content-Type": "application/json; charset=UTF-8"
|
"Content-Type": "application/json; charset=UTF-8"
|
||||||
},
|
},
|
||||||
@@ -70,15 +70,22 @@ class MihMzansiDirectoryServices {
|
|||||||
|
|
||||||
Future<int> deleteBusinessReview(
|
Future<int> deleteBusinessReview(
|
||||||
int idbusiness_ratings,
|
int idbusiness_ratings,
|
||||||
|
String business_id,
|
||||||
|
String rating_score,
|
||||||
|
String current_rating,
|
||||||
) async {
|
) async {
|
||||||
var response = await http.delete(
|
var response = await http.delete(
|
||||||
Uri.parse(
|
Uri.parse(
|
||||||
"${AppEnviroment.baseApiUrl}/mzasni-directory/business-ratng/delete/"),
|
"${AppEnviroment.baseApiUrl}/mzansi-directory/business-rating/delete/"),
|
||||||
headers: <String, String>{
|
headers: <String, String>{
|
||||||
"Content-Type": "application/json; charset=UTF-8"
|
"Content-Type": "application/json; charset=UTF-8"
|
||||||
},
|
},
|
||||||
body: jsonEncode(
|
body: jsonEncode(<String, dynamic>{
|
||||||
<String, dynamic>{"idbusiness_ratings": idbusiness_ratings}),
|
"idbusiness_ratings": idbusiness_ratings,
|
||||||
|
"business_id": business_id,
|
||||||
|
"rating_score": rating_score,
|
||||||
|
"current_rating": current_rating,
|
||||||
|
}),
|
||||||
);
|
);
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
return response.statusCode;
|
return response.statusCode;
|
||||||
@@ -89,21 +96,27 @@ class MihMzansiDirectoryServices {
|
|||||||
|
|
||||||
Future<int> updateBusinessReview(
|
Future<int> updateBusinessReview(
|
||||||
int idbusiness_ratings,
|
int idbusiness_ratings,
|
||||||
|
String business_id,
|
||||||
String rating_title,
|
String rating_title,
|
||||||
String rating_description,
|
String rating_description,
|
||||||
String rating_score,
|
String rating_new_score,
|
||||||
|
String rating_old_score,
|
||||||
|
String current_rating,
|
||||||
) async {
|
) async {
|
||||||
var response = await http.put(
|
var response = await http.put(
|
||||||
Uri.parse(
|
Uri.parse(
|
||||||
"${AppEnviroment.baseApiUrl}/mzasni-directory/business-rating/update/"),
|
"${AppEnviroment.baseApiUrl}/mzansi-directory/business-rating/update/"),
|
||||||
headers: <String, String>{
|
headers: <String, String>{
|
||||||
"Content-Type": "application/json; charset=UTF-8"
|
"Content-Type": "application/json; charset=UTF-8"
|
||||||
},
|
},
|
||||||
body: jsonEncode(<String, dynamic>{
|
body: jsonEncode(<String, dynamic>{
|
||||||
"idbusiness_ratings": idbusiness_ratings,
|
"idbusiness_ratings": idbusiness_ratings,
|
||||||
|
"business_id": business_id,
|
||||||
"rating_title": rating_title,
|
"rating_title": rating_title,
|
||||||
"rating_description": rating_description,
|
"rating_description": rating_description,
|
||||||
"rating_score": rating_score,
|
"rating_new_score": rating_new_score,
|
||||||
|
"rating_old_score": rating_old_score,
|
||||||
|
"current_rating": current_rating,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
|
|||||||
@@ -17,18 +17,25 @@ class BusinessRatingInsertRequest(BaseModel):
|
|||||||
business_id: str
|
business_id: str
|
||||||
rating_title: str
|
rating_title: str
|
||||||
rating_description: str
|
rating_description: str
|
||||||
rating_score: int
|
rating_score: str
|
||||||
|
current_rating: str
|
||||||
|
|
||||||
class BusinessRatingDeleteRequest(BaseModel):
|
class BusinessRatingDeleteRequest(BaseModel):
|
||||||
idbusiness_ratings: int
|
idbusiness_ratings: int
|
||||||
|
business_id: str
|
||||||
|
rating_score: str
|
||||||
|
current_rating: str
|
||||||
|
|
||||||
class BusinessRatingUpdateRequest(BaseModel):
|
class BusinessRatingUpdateRequest(BaseModel):
|
||||||
idbusiness_ratings: int
|
idbusiness_ratings: int
|
||||||
|
business_id: str
|
||||||
rating_title: str
|
rating_title: str
|
||||||
rating_description: str
|
rating_description: str
|
||||||
rating_score: str
|
rating_new_score: str
|
||||||
|
rating_old_score: str
|
||||||
|
current_rating: str
|
||||||
|
|
||||||
@router.get("/mzasni-directory/business-ratings/user/{app_id}/{business_id}", tags=["Mzansi Directory"])
|
@router.get("/mzansi-directory/business-ratings/user/{app_id}/{business_id}", tags=["Mzansi Directory"])
|
||||||
async def read_all_ratings_by_business_id(app_id: str,business_id: str, session: SessionContainer = Depends(verify_session())): # , session: SessionContainer = Depends(verify_session())
|
async def read_all_ratings_by_business_id(app_id: str,business_id: str, session: SessionContainer = Depends(verify_session())): # , session: SessionContainer = Depends(verify_session())
|
||||||
db = database.dbConnection.dbAllConnect()
|
db = database.dbConnection.dbAllConnect()
|
||||||
cursor = db.cursor()
|
cursor = db.cursor()
|
||||||
@@ -78,7 +85,7 @@ async def read_all_ratings_by_business_id(app_id: str,business_id: str, session:
|
|||||||
# db.close()
|
# db.close()
|
||||||
# return items[0]
|
# return items[0]
|
||||||
|
|
||||||
@router.get("/mzasni-directory/business-ratings/all/{business_id}", tags=["Mzansi Directory"])
|
@router.get("/mzansi-directory/business-ratings/all/{business_id}", tags=["Mzansi Directory"])
|
||||||
async def read_all_ratings_by_business_id(business_id: str, session: SessionContainer = Depends(verify_session())): # , session: SessionContainer = Depends(verify_session())
|
async def read_all_ratings_by_business_id(business_id: str, session: SessionContainer = Depends(verify_session())): # , session: SessionContainer = Depends(verify_session())
|
||||||
db = database.dbConnection.dbAllConnect()
|
db = database.dbConnection.dbAllConnect()
|
||||||
cursor = db.cursor()
|
cursor = db.cursor()
|
||||||
@@ -109,69 +116,121 @@ async def read_all_ratings_by_business_id(business_id: str, session: SessionCont
|
|||||||
db.close()
|
db.close()
|
||||||
return items
|
return items
|
||||||
|
|
||||||
@router.post("/mzasni-directory/business-rating/insert/", tags=["Mzansi Directory"], status_code=201)
|
@router.post("/mzansi-directory/business-rating/insert/", tags=["Mzansi Directory"], status_code=201)
|
||||||
async def insert_loyalty_card(itemRequest : BusinessRatingInsertRequest): #, session: SessionContainer = Depends(verify_session())
|
async def insert_loyalty_card(itemRequest : BusinessRatingInsertRequest): #, session: SessionContainer = Depends(verify_session())
|
||||||
db = database.dbConnection.dbMzansiDirectoryConnect()
|
db = database.dbConnection.dbAllConnect()
|
||||||
nowDateTime = datetime.now()
|
nowDateTime = datetime.now()
|
||||||
formatedDateTime = nowDateTime.strftime("%Y-%m-%d %H:%M:%S")
|
formatedDateTime = nowDateTime.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
cursor = db.cursor()
|
cursor = db.cursor()
|
||||||
query = "insert into business_ratings "
|
|
||||||
query += "(app_id, business_id, rating_title, rating_description, rating_score, date_time) "
|
|
||||||
query += "values (%s, %s, %s, %s, %s, %s)"
|
|
||||||
notetData = (itemRequest.app_id,
|
|
||||||
itemRequest.business_id,
|
|
||||||
itemRequest.rating_title,
|
|
||||||
itemRequest.rating_description,
|
|
||||||
itemRequest.rating_score,
|
|
||||||
formatedDateTime,
|
|
||||||
)
|
|
||||||
try:
|
try:
|
||||||
cursor.execute(query, notetData)
|
# Get No Of reviews for business
|
||||||
|
businessReviewCountQuery = "select count(*) from mzansi_directory.business_ratings where business_ratings.business_id = %s"
|
||||||
|
countData = (itemRequest.business_id,)
|
||||||
|
cursor.execute(businessReviewCountQuery, countData)
|
||||||
|
countResult = cursor.fetchone()
|
||||||
|
row_count = countResult[0] if countResult else 0
|
||||||
|
print(f"Number of rows in business_ratings: {row_count}")
|
||||||
|
# add business rating
|
||||||
|
addQuery = "insert into mzansi_directory.business_ratings "
|
||||||
|
addQuery += "(business_ratings.app_id, business_ratings.business_id, business_ratings.rating_title, business_ratings.rating_description, business_ratings.rating_score, business_ratings.date_time) "
|
||||||
|
addQuery += "values (%s, %s, %s, %s, %s, %s)"
|
||||||
|
addQueryData = (itemRequest.app_id,
|
||||||
|
itemRequest.business_id,
|
||||||
|
itemRequest.rating_title,
|
||||||
|
itemRequest.rating_description,
|
||||||
|
itemRequest.rating_score,
|
||||||
|
formatedDateTime,
|
||||||
|
)
|
||||||
|
cursor.execute(addQuery, addQueryData)
|
||||||
|
# Calc New Rating and update business rating
|
||||||
|
newRating = ((float(itemRequest.current_rating) * row_count) + float(itemRequest.rating_score)) / (row_count + 1)
|
||||||
|
print(f"New Rating: {newRating}")
|
||||||
|
updateBusinessQuery = "update app_data.business "
|
||||||
|
updateBusinessQuery += "set rating = %s "
|
||||||
|
updateBusinessQuery += "where business_id = %s"
|
||||||
|
updateBusinessData = (newRating, itemRequest.business_id)
|
||||||
|
cursor.execute(updateBusinessQuery, updateBusinessData)
|
||||||
|
db.commit()
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
print(error)
|
print(error)
|
||||||
raise HTTPException(status_code=404, detail="Failed to Create Record")
|
raise HTTPException(status_code=404, detail="Failed to Create Record")
|
||||||
# return {"message": error}
|
# return {"message": error}
|
||||||
db.commit()
|
|
||||||
cursor.close()
|
cursor.close()
|
||||||
db.close()
|
db.close()
|
||||||
return {"message": "Successfully Created Record"}
|
return {"message": "Successfully Created Record"}
|
||||||
|
|
||||||
@router.delete("/mzasni-directory/business-ratng/delete/", tags=["Mzansi Directory"])
|
@router.delete("/mzansi-directory/business-rating/delete/", tags=["Mzansi Directory"])
|
||||||
async def Delete_loyalty_card(itemRequest : BusinessRatingDeleteRequest, session: SessionContainer = Depends(verify_session())): #, session: SessionContainer = Depends(verify_session())
|
async def Delete_loyalty_card(itemRequest : BusinessRatingDeleteRequest, session: SessionContainer = Depends(verify_session())): #, session: SessionContainer = Depends(verify_session())
|
||||||
db = database.dbConnection.dbMzansiDirectoryConnect()
|
db = database.dbConnection.dbAllConnect()
|
||||||
cursor = db.cursor()
|
cursor = db.cursor()
|
||||||
query = "delete from business_ratings "
|
|
||||||
query += "where idbusiness_ratings=%s"
|
|
||||||
try:
|
try:
|
||||||
cursor.execute(query, (str(itemRequest.idbusiness_ratings),))
|
# Get No Of reviews for business
|
||||||
|
businessReviewCountQuery = "select count(*) from mzansi_directory.business_ratings where business_ratings.business_id = %s"
|
||||||
|
countData = (itemRequest.business_id,)
|
||||||
|
cursor.execute(businessReviewCountQuery, countData)
|
||||||
|
countResult = cursor.fetchone()
|
||||||
|
row_count = countResult[0] if countResult else 0
|
||||||
|
print(f"Number of rows in business_ratings: {row_count}")
|
||||||
|
# Delete business rating
|
||||||
|
query = "delete from mzansi_directory.business_ratings "
|
||||||
|
query += "where business_ratings.idbusiness_ratings=%s"
|
||||||
|
cursor.execute(query, (str(itemRequest.idbusiness_ratings),))
|
||||||
|
# Calc New Rating and update business rating
|
||||||
|
if(row_count <= 1):
|
||||||
|
newRating = 0.0
|
||||||
|
else:
|
||||||
|
newRating = ((float(itemRequest.current_rating) * row_count) - float(itemRequest.rating_score)) / (row_count - 1)
|
||||||
|
print(f"New Rating: {newRating}")
|
||||||
|
updateBusinessQuery = "update app_data.business "
|
||||||
|
updateBusinessQuery += "set rating = %s "
|
||||||
|
updateBusinessQuery += "where business_id = %s"
|
||||||
|
updateBusinessData = (newRating, itemRequest.business_id)
|
||||||
|
cursor.execute(updateBusinessQuery, updateBusinessData)
|
||||||
|
db.commit()
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
print(error)
|
print(error)
|
||||||
raise HTTPException(status_code=404, detail="Failed to Delete Record")
|
raise HTTPException(status_code=404, detail="Failed to Delete Record")
|
||||||
db.commit()
|
|
||||||
cursor.close()
|
cursor.close()
|
||||||
db.close()
|
db.close()
|
||||||
return {"message": "Successfully deleted Record"}
|
return {"message": "Successfully deleted Record"}
|
||||||
|
|
||||||
@router.put("/mzasni-directory/business-rating/update/", tags=["Mzansi Directory"])
|
@router.put("/mzansi-directory/business-rating/update/", tags=["Mzansi Directory"])
|
||||||
async def UpdatePatient(itemRequest : BusinessRatingUpdateRequest, session: SessionContainer = Depends(verify_session())):
|
async def UpdatePatient(itemRequest : BusinessRatingUpdateRequest, session: SessionContainer = Depends(verify_session())):
|
||||||
db = database.dbConnection.dbMzansiDirectoryConnect()
|
db = database.dbConnection.dbMzansiDirectoryConnect()
|
||||||
cursor = db.cursor()
|
cursor = db.cursor()
|
||||||
nowDateTime = datetime.now()
|
nowDateTime = datetime.now()
|
||||||
formatedDateTime = nowDateTime.strftime("%Y-%m-%d %H:%M:%S")
|
formatedDateTime = nowDateTime.strftime("%Y-%m-%d %H:%M:%S")
|
||||||
query = "update business_ratings "
|
try:
|
||||||
query += "set rating_title=%s, rating_description=%s, rating_score=%s, date_time=%s "
|
# Get No Of reviews for business
|
||||||
query += "where idbusiness_ratings=%s"
|
businessReviewCountQuery = "select count(*) from mzansi_directory.business_ratings where business_ratings.business_id = %s"
|
||||||
notetData = (itemRequest.rating_title,
|
countData = (itemRequest.business_id,)
|
||||||
|
cursor.execute(businessReviewCountQuery, countData)
|
||||||
|
countResult = cursor.fetchone()
|
||||||
|
row_count = countResult[0] if countResult else 0
|
||||||
|
print(f"Number of rows in business_ratings: {row_count}")
|
||||||
|
# Update business rating
|
||||||
|
query = "update business_ratings "
|
||||||
|
query += "set rating_title=%s, rating_description=%s, rating_score=%s, date_time=%s "
|
||||||
|
query += "where idbusiness_ratings=%s"
|
||||||
|
notetData = (itemRequest.rating_title,
|
||||||
itemRequest.rating_description,
|
itemRequest.rating_description,
|
||||||
itemRequest.rating_score,
|
itemRequest.rating_new_score,
|
||||||
formatedDateTime,
|
formatedDateTime,
|
||||||
itemRequest.idbusiness_ratings,
|
itemRequest.idbusiness_ratings,
|
||||||
)
|
)
|
||||||
try:
|
cursor.execute(query, notetData)
|
||||||
cursor.execute(query, notetData)
|
# Calc New Rating and update business rating
|
||||||
|
# add new rating and old rating params
|
||||||
|
newRating = ((float(itemRequest.current_rating) * row_count) - float(itemRequest.rating_old_score) + float(itemRequest.rating_new_score)) / (row_count)
|
||||||
|
print(f"New Rating: {newRating}")
|
||||||
|
updateBusinessQuery = "update app_data.business "
|
||||||
|
updateBusinessQuery += "set rating = %s "
|
||||||
|
updateBusinessQuery += "where business_id = %s"
|
||||||
|
updateBusinessData = (newRating, itemRequest.business_id)
|
||||||
|
cursor.execute(updateBusinessQuery, updateBusinessData)
|
||||||
|
db.commit()
|
||||||
except Exception as error:
|
except Exception as error:
|
||||||
raise HTTPException(status_code=404, detail="Failed to Update Record")
|
raise HTTPException(status_code=404, detail="Failed to Update Record")
|
||||||
db.commit()
|
|
||||||
cursor.close()
|
cursor.close()
|
||||||
db.close()
|
db.close()
|
||||||
return {"message": "Successfully Updated Record"}
|
return {"message": "Successfully Updated Record"}
|
||||||
Reference in New Issue
Block a user