from email import encoders
from email.mime.base import MIMEBase
import mysql.connector
import smtplib
import csv
import csv
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# تفاصيل الاتصال بقاعدة البيانات
db_config = {
    'host': 'vsrv681.armadaservers.com',
    'database': 'mint303_change_stock',
    'user': 'mint303_change_stock',
    'password': 'Plmokn123@'
}

# الاستعلام SQL لاستخراج البيانات
query = "WITH RankedRequests AS ( SELECT Successful_stock_change_requests.*, change_stock_1.Vehicle_Number, change_stock_1.Stock_Sequence_Number,ROW_NUMBER() OVER (PARTITION BY Successful_stock_change_requests.VIN ORDER BY Successful_stock_change_requests.Date_last_action DESC) AS rn FROM Successful_stock_change_requests INNER JOIN change_stock_1 ON Successful_stock_change_requests.VIN = change_stock_1.VIN ) SELECT RankedRequests.*,StockTypeAndStockTypeCode.StockTypeCode FROM RankedRequests INNER JOIN StockTypeAndStockTypeCode ON RankedRequests.change_to = StockTypeAndStockTypeCode.StockType WHERE RankedRequests.rn = 1 AND (RankedRequests.Sent != 'Yes' OR RankedRequests.Sent IS NULL);"

# تحميل البيانات من قاعدة البيانات إلى DataFrame
conn = mysql.connector.connect(**db_config)
cursor = conn.cursor()
# cursor = conn.cursor()

cursor.execute(query)
rows = cursor.fetchall()
# conn.close()

# اسم ملف CSV
csv_file = 'data1.csv'
if not rows:
        print("No data to process.")
else:
    with open(csv_file, 'w', newline='') as f:
        writer = csv.writer(f)

        # كتابة رؤوس الأعمدة
        writer.writerow(['VEHICLE', 'SEQUENCE', 'STOCKTYPE'])

        # كتابة كل صف مع تحديد الفهرس لكل عمود
        for row in rows:
            # كتابة الفهرس أسفل كل عمود
                print(row)
                writer.writerow([row[12], row[13], row[15]])
                # cursor.execute("UPDATE Successful_stock_change_requests SET Sent = %s ", ('Yes',))
                status_condition = row[0]

                # قم بإعداد استعلام UPDATE مع شرط WHERE
                update_query = "UPDATE Successful_stock_change_requests SET Sent = %s WHERE request_id = %s"

                # تنفيذ الاستعلام مع القيم المطلوبة
                cursor.execute(update_query, ('Yes', status_condition))

    conn.commit()  # تأكيد التغييرات

    # إغلاق الكيرسور والاتصال
    cursor.close()
    conn.close()

        # كتابة الصف الفعلي
        # writer.writerow(row)
# تفاصيل البريد الإلكتروني
    from_email = 'sultan@prod.nhcops.com'
    to_email = 'Saldawsari@nhcholding.com'
    cc_emails = ['marcot@nhcholding.com', 'Turkiq@nhcholding.com', 'adosri@nhcholding.com', 'kkhan@nhcholding.com', 'aalotaibi@nhcholding.com']  # أضف عناوين البريد الإلكتروني هنا

    subject = 'Inventory that have changed (Infrequent)'

    # إعداد الرسالة
    msg = MIMEMultipart()
    msg['From'] = from_email
    msg['To'] = to_email
    msg['Subject'] = subject
    msg['CC'] = ", ".join(cc_emails)

    body = 'Inventory that has been changed'
    msg.attach(MIMEText(body, 'plain'))

    # إرفاق الملف
    with open(csv_file, 'rb') as attachment:
        part = MIMEBase('application', 'octet-stream')
        part.set_payload(attachment.read())
        encoders.encode_base64(part)
        part.add_header('Content-Disposition', "attachment; filename= %s" % csv_file)
        msg.attach(part)

    # إرسال الرسالة
    server = smtplib.SMTP('vsrv681.armadaservers.com', 587)
    server.starttls()
    server.login(from_email, 'Sultan135@')  # تأكد من تغيير your_password
    text = msg.as_string()
    server.sendmail(from_email, [to_email] + cc_emails, text)  # قائمة البريد للنسخة الإضافية تحتوي على البريد الإلكتروني الرئيسي وعناوين CC
    server.quit()
