import { UserPortfolio } from "../../database/transaction/usersPortfolio";
import { Request, Response } from "express";
import { sendErrorResponse, sendSuccessResponse } from "../../utills/response";
import { messages } from "../../utills/common";

// invest ammount by admin
export const investAmount = async (req: Request, res: Response) => {
    try {
        const context = (req as any).user;
        const { investedAmount, dayEndPortfolio, daily_leadger_date} = req.body;
     // Calculate dailyProfitAmount
     const dailyProfitAmount = dayEndPortfolio - investedAmount;
    //  const formattedCreatedAt =  new Date(daily_leadger_date).toISOString().slice(0, 19).replace("T", " ");
     // Calculate percentage profit
     const dailyProfitPercentage = ((dailyProfitAmount * 0.8) / investedAmount) * 100;
        const newSalesPersons = await UserPortfolio.create({
            investedAmount,
            userId: context.id,
            dayEndPortfolio,
            dailyProfitAmount,
            dailyProfitPercentage,
            createdAt: daily_leadger_date,
            updatedAt: daily_leadger_date
        }).save();

        return sendSuccessResponse(res, 200, messages.invest, newSalesPersons);
    } catch (error) {
        return sendErrorResponse(res, 500, messages.errorMsg);
    }
};

export const updateUserPortfolio = async (req: Request, res: Response) => {
    try {
        const { id, investedAmount, dayEndPortfolio, createdAt } = req.body;
             // Calculate dailyProfitAmount
     const dailyProfitAmount = dayEndPortfolio - investedAmount;
     // Calculate percentage profit
     const dailyProfitPercentage = ((dailyProfitAmount * 0.8) / investedAmount) * 100;

        // Fetch existing portfolio entry
        const userPortfolio = await UserPortfolio.findOne({ where: { id } });

        if (!userPortfolio) {
            return sendErrorResponse(res, 404, "UserPortfolio entry not found");
        }

        // Update fields
        userPortfolio.investedAmount = investedAmount;
        userPortfolio.dayEndPortfolio = dayEndPortfolio;
        userPortfolio.dailyProfitPercentage = dailyProfitPercentage;
        userPortfolio.dailyProfitAmount = dailyProfitAmount;
        const formattedCreatedAt = new Date(createdAt).toISOString().slice(0, 19).replace("T", " ");
        userPortfolio.createdAt = new Date(formattedCreatedAt);

        // Recalculate dailyProfitAmount
        userPortfolio.dailyProfitAmount = dailyProfitAmount;

        // Save updated record
        await userPortfolio.save();

        return sendSuccessResponse(res, 200, "UserPortfolio updated successfully", userPortfolio);
    } catch (error) {
        return sendErrorResponse(res, 500, messages.errorMsg);
    }
};
