export const calculateRentWithCommission = (
  dailyPrice, 
  numberOfDays, 
  commissionRate, 
  commissionType
) => {
  const baseRent = dailyPrice * numberOfDays;
  const commission = (baseRent * commissionRate) / 100;
  
  switch(commissionType) {
    case 'from_tenant':
      return {
        totalForTenant: baseRent + commission,
        totalForOwner: baseRent,
        commission: commission
      };
    case 'from_owner':
      return {
        totalForTenant: baseRent,
        totalForOwner: baseRent - commission,
        commission: commission
      };
    case 'from_both':
      return {
        totalForTenant: baseRent + (commission / 2),
        totalForOwner: baseRent - (commission / 2),
        commission: commission
      };
    default:
      return {
        totalForTenant: baseRent,
        totalForOwner: baseRent,
        commission: 0
      };
  }
};


export const calculateDaysBetween = (startDate, endDate) => {
  const start = new Date(startDate);
  const end = new Date(endDate);
  const diffTime = Math.abs(end - start);
  const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
  return diffDays;
};


export const formatCurrency = (amount) => {
  return new Intl.NumberFormat('ar-SY', {
    style: 'currency',
    currency: 'SYP',
    minimumFractionDigits: 0,
    maximumFractionDigits: 0
  }).format(amount).replace('SYP', '') + ' ل.س';
};

export const calculateTenantBalance = (bookings, securityDeposits) => {
  return bookings.reduce((acc, booking) => {
    const deposit = securityDeposits.find(d => d.bookingId === booking.id) || 0;
    return {
      totalRent: acc.totalRent + booking.totalAmount,
      paidAmount: acc.paidAmount + booking.paidAmount,
      securityDeposit: acc.securityDeposit + deposit.amount,
      pendingAmount: (acc.pendingAmount + (booking.totalAmount - booking.paidAmount))
    };
  }, { totalRent: 0, paidAmount: 0, securityDeposit: 0, pendingAmount: 0 });
};