diff --git a/app/api/routes/routes.py b/app/api/routes/routes.py index 57a6059..de5292e 100644 --- a/app/api/routes/routes.py +++ b/app/api/routes/routes.py @@ -232,6 +232,12 @@ def merms_account_profile_update(): response = AccountService.update_profile_data(data) return response +@api.route("/panel/account/profilelinks-update", methods=["POST"]) +@jwt_required() +def merms_account_profile_links_update(): + data = request.get_json() + response = AccountService.update_profile_link_data(data) + return response @api.route("/panel/account-bar", methods=["POST"]) @jwt_required() diff --git a/app/api/schemas/profile_links.py b/app/api/schemas/profile_links.py new file mode 100644 index 0000000..64230d5 --- /dev/null +++ b/app/api/schemas/profile_links.py @@ -0,0 +1,6 @@ +from marshmallow import Schema, fields + +class ProfileLinksSchema(Schema): + token = fields.Str(required=True) + uid = fields.Str(required=True) + url_list = fields.Str( required=False) \ No newline at end of file diff --git a/app/api/services/account.py b/app/api/services/account.py index 02cb9a7..8557717 100644 --- a/app/api/services/account.py +++ b/app/api/services/account.py @@ -15,6 +15,7 @@ from app.api.helpers.response_helper import ResponseHelper from werkzeug.security import generate_password_hash, check_password_hash from app.api.schemas.user import UserSchema from app.api.schemas.start_profile import StartProfileSchema +from app.api.schemas.profile_links import ProfileLinksSchema from flask_mail import Mail, Message import smtplib @@ -554,6 +555,81 @@ class AccountService(BaseService): db.session.rollback() return ResponseHelper.internal_server_error() + + @staticmethod + def update_profile_link_data(data): + + try: + with db.session.begin(): + + validated_data = AccountService.validate_data(data, ProfileLinksSchema()) + user_token = validated_data.get('token') + uid = str(validated_data.get('uid')) + url_list = str(validated_data.get('url_list')) + + member_data = Members.get_member_by_uid(uid) + if member_data: + firstname = str(validated_data.get('firstname')) + lastname = str(validated_data.get('lastname')) + account_name = str(validated_data.get('account_name')) + phone = str(validated_data.get('phone')) + full_address = str(validated_data.get('full_address')) + # email = str(validated_data.get('email')) + profile_data = { + "firstname": firstname, + "lastname": lastname, + "account_name": account_name, + "phone": phone, + "full_address": full_address, + # "email": email, + } + Members.set_member_update_profile(uid, profile_data) + + # Read the saved data + member_data = Members.get_member_by_uid(uid) + personal_data = { + "firstname": member_data.firstname, + "lastname": member_data.lastname, + "account_name": member_data.account_name, + "email": member_data.email, + "phone": member_data.phone, + "full_address": member_data.full_address, + "country": member_data.country, + } + + external_links = { + "facebook_url": "facebook.com", + "twitter_url": "twitter.com", + "blogger_url": "blogger.com", + "google_url": "google.com", + "linked_url": "linkedin.com", + "website_url": "www.mysite.com", + } + + profile_data = { + "personal_data": personal_data, + "external_links": external_links, + } + + return ResponseHelper.success(data=profile_data) + + except ValidationError as err: + + logger.error(f"Validation Error: {getattr(err, 'messages', str(err))}") + db.session.rollback() + return ResponseHelper.unprocessable_entity(result_description="Validation exception") + + except ValueError as err: + logger.error(f"{getattr(err, 'messages', str(err))}") + db.session.rollback() + return ResponseHelper.error(result_description=str(err)) + + except Exception as e: + logger.error(f"An error occurred: {str(e)}", exc_info=True) + db.session.rollback() + return ResponseHelper.internal_server_error() + + @staticmethod def process_test_email(data): logger.info(f"Email Test Enter", exc_info=True)