from appservices.common.util import *
from datetime import datetime

saikrishnatask = Blueprint("saikrishnatask", __name__)


# @saikrishnatask.route("/account_summary_transactions", methods=["POST", "GET"])
# def account_summary_transactions():
#   try:
#       selectYear = None
#       selectMonth = None
#       startMonthYear = None
#       endMonthYear = None
#       current_year = None 
#       last_year = None
        
#       if not session.get("adminId"):
#           return redirect("admin_login")
#       adminId = session.get("adminId")

#       redirectTo = request.args.get("redirectTo", "")
#       if redirectTo :
#           redirectval=redirectTo
#       else :
#           redirectval ="UnsettlementCommission"
            
#       permissionsList = check_permissions(session.get("adminId"), "payoutSettlementPermissions")
#       if "view" in permissionsList:
#           merchantsList = []
#           pagination = None

#           selectYear = request.args.get("selectYear", default=str(datetime.now().year))
#           selectMonth = request.args.get("selectMonth", default=datetime.now().strftime("%B"))

           
#           month_number = datetime.strptime(selectMonth, "%B").month
#           current_year = datetime.now().year
#           last_year = current_year - 1

           
#           startMonthYear = datetime(int(selectYear), month_number, 1)
#           endMonthYear = datetime(int(selectYear), month_number, monthrange(int(selectYear), month_number)[1])

#           if startMonthYear and endMonthYear:
#               startMonthYear = startMonthYear.replace(hour=0, minute=0, second=0, microsecond=0)
#               endMonthYear = endMonthYear.replace(hour=23, minute=59, second=59, microsecond=999999)

#               payinAccountSummaryList = []
#               payins_queryset = WalletTransactions.objects(createdOn__gte=startMonthYear,createdOn__lte=endMonthYear)

#               for each_payin_record in payins_queryset:
#                   eachDayPayinDate = each_payin_record.createdOn
#                   eachDayPayinStart = eachDayPayinDate.replace(hour=0, minute=0, second=0, microsecond=0)
#                   eachDayPayinEnd = eachDayPayinDate.replace(hour=23, minute=59, second=59, microsecond=999999)

#                   print(eachDayPayinDate,"(((((((((eachDayPayinDate)))))))))")
#                   print(eachDayPayinStart,"(((((((((eachDayPayinStart)))))))))")
#                   print(eachDayPayinEnd,"(((((((((eachDayPayinEnd)))))))))")

#                   eachDayPayinTotalAmount = WalletTransactions.objects(createdOn__gte=eachDayPayinStart,createdOn__lte=eachDayPayinEnd).sum("amount")
#                   eachDayPayinTotalTxnCount = WalletTransactions.objects(createdOn__gte=eachDayPayinStart,createdOn__lte=eachDayPayinEnd).count()

#                   print(eachDayPayinTotalAmount,"(((((((((eachDayPayinTotalAmount)))))))))")
#                   print(eachDayPayinTotalTxnCount,"(((((((((eachDayPayinTotalTxnCount)))))))))")

#                   payinAccountSummaryDict = {
#                   "eachDayPayinDate":eachDayPayinDate.strftime("%d-%m-%Y %I:%M:%S %p"),
#                   "eachDayPayinTotalAmount":formatINR("{:.2f}".format(float(eachDayPayinTotalAmount))),
#                   "eachDayPayinTotalTxnCount":eachDayPayinTotalTxnCount
#                   }
#                   if payinAccountSummaryDict not in payinAccountSummaryList:
#                       payinAccountSummaryList.append(payinAccountSummaryDict)

                
#               return render_template("super_admin_templates/account_summary_transaction_list.html",
#                   selectYear=selectYear,selectMonth=selectMonth,
#                   startMonthYear=startMonthYear,endMonthYear=endMonthYear,
#                   current_year=current_year,
#                   last_year=last_year,
#                   payinAccountSummaryList=payinAccountSummaryList,
#                   redirectval=redirectval
#                   )
#           else:
#               flash("Invalid date range provided.")
#               return render_template("super_admin_templates/account_summary_transaction_list.html")

#       else:
#           flash("Staff member does not have the permission to view commissions settlement reports!")
#           return render_template("super_admin_templates/account_summary_transaction_list.html")

#   except Exception as e:
#       app.logger.error(traceback.format_exc())
#       error = "Unable to fetch Account summary transaction report data!!"
#       return render_template("super_admin_templates/account_summary_transaction_list.html", 
#       error=error,
#       selectYear=selectYear,
#       selectMonth=selectMonth,
#       current_year=current_year,
#       last_year=last_year,
#       startMonthYear=startMonthYear,
#       endMonthYear=endMonthYear,
#       redirectval=redirectval
#       )

# @saikrishnatask.route("/account_summary_transactions", methods=["POST", "GET"])
# def account_summary_transactions():
#     try:
#         selectYear = None
#         selectMonth = None
#         startMonthYear = None
#         endMonthYear = None
#         current_year = None 
#         last_year = None
#         payinAccountSummaryList=[]
#         payoutAccountSummaryList=[]
        
#         if not session.get("adminId"):
#             return redirect("admin_login")
#         adminId = session.get("adminId")

#         redirectTo = request.args.get("redirectTo","payinAccountSummary")
#         if redirectTo :
#             redirectval=redirectTo
#         else :
#             redirectval ="payinAccountSummary"
            
#         permissionsList = check_permissions(session.get("adminId"), "payoutSettlementPermissions")
#         if "view" in permissionsList:
#             merchantsList = []
#             pagination = None

#             selectYear = request.args.get("selectYear", default=str(datetime.now().year))
#             selectMonth = request.args.get("selectMonth", default=datetime.now().strftime("%B"))

           
#             month_number = datetime.strptime(selectMonth, "%B").month
#             current_year = datetime.now().year
#             last_year = current_year - 1

           
#             startMonthYear = datetime(int(selectYear), month_number, 1)
#             endMonthYear = datetime(int(selectYear), month_number, monthrange(int(selectYear), month_number)[1])

#             if startMonthYear and endMonthYear:
#                 startMonthYear = startMonthYear.replace(hour=0, minute=0, second=0, microsecond=0)
#                 endMonthYear = endMonthYear.replace(hour=23, minute=59, second=59, microsecond=999999)

#                 startMonthYear = startMonthYear.replace(hour=0, minute=0, second=0, microsecond=0)
#                 endMonthYear = endMonthYear.replace(hour=23, minute=59, second=59, microsecond=999999)

#                 # Aggregation query to group transactions by day, summing amounts and counting transactions
#                 pipeline = [
#                     {
#                         "$match": {
#                             "createdOn": {"$gte": startMonthYear, "$lte": endMonthYear},
#                             "status":1,
#                             "userType":"user"
#                         }
#                     },
#                     {
#                         "$group": {
#                             "_id": {"$dateToString": {"format": "%Y-%m-%d", "date": "$createdOn"}},
#                             "totalAmount": {"$sum": "$amount"},
#                             "txnCount": {"$sum": 1}
#                         }
#                     },
#                     {
#                         "$sort": {"_id": 1}
#                     }
#                 ]
#                 payinAccountSummaryList = []
#                 payin_aggregated = list(WalletTransactions.objects.aggregate(*pipeline))

#                 for each_payin in payin_aggregated:
#                     payinAccountSummaryDict = {
#                         "eachDayPayinDate":datetime.strptime(each_payin["_id"], "%Y-%m-%d").strftime("%d-%m-%Y"),
#                         "eachDayPayinTotalAmount": formatINR("{:.2f}".format(each_payin["totalAmount"])),
#                         "eachDayPayinTotalTxnCount": each_payin["txnCount"]
#                     }
#                     payinAccountSummaryList.append(payinAccountSummaryDict)

#                 payoutAccountSummaryList = []
#                 payout_aggregated = list(FundTransfers.objects.aggregate(*pipeline))
#                 for each_payout in payout_aggregated:
#                     payoutAccountSummaryDict = {
#                         "eachDayPayoutDate":datetime.strptime(each_payout["_id"], "%Y-%m-%d").strftime("%d-%m-%Y"),
#                         "eachDayPayoutTotalAmount": formatINR("{:.2f}".format(each_payout["totalAmount"])),
#                         "eachDayPayoutTotalTxnCount": each_payout["txnCount"]
#                     }
#                     payoutAccountSummaryList.append(payoutAccountSummaryDict)

                
#                 return render_template("super_admin_templates/account_summary_transaction_list.html",
#                     selectYear=selectYear,selectMonth=selectMonth,
#                     startMonthYear=startMonthYear,endMonthYear=endMonthYear,
#                     current_year=current_year,
#                     last_year=last_year,
#                     payinAccountSummaryList=payinAccountSummaryList,
#                     payoutAccountSummaryList=payoutAccountSummaryList,
#                     redirectval=redirectval
#                     )
#             else:
#                 flash("Invalid date range provided.")
#                 return render_template("super_admin_templates/account_summary_transaction_list.html")

#         else:
#             flash("Staff member does not have the permission to view commissions settlement reports!")
#             return render_template("super_admin_templates/account_summary_transaction_list.html")

#     except Exception as e:
#         app.logger.error(traceback.format_exc())
#         error = "Unable to fetch Account summary transaction report data!!"
#         return render_template("super_admin_templates/account_summary_transaction_list.html", 
#         error=error,
#         selectYear=selectYear,
#         selectMonth=selectMonth,
#         current_year=current_year,
#         last_year=last_year,
#         startMonthYear=startMonthYear,
#         endMonthYear=endMonthYear,
#         payinAccountSummaryList=payinAccountSummaryList,
#         payoutAccountSummaryList=payoutAccountSummaryList,
#         redirectval=redirectval
#         )