package service import ( "context" "git.gocasts.ir/ebhomengo/niki/domain/wallet/entity" "git.gocasts.ir/ebhomengo/niki/domain/wallet/param" "git.gocasts.ir/ebhomengo/niki/pkg/database/postgres" richerror "git.gocasts.ir/ebhomengo/niki/pkg/rich_error" ) func (s Service) GetUserTransactionHistory(ctx context.Context, request param.TransactionRequest) (param.TransactionResponse, error) { const op = richerror.Op("wallet.service.GetUserTransactionHistory") dbPagination := postgres.DBPagination{ PageNumber: request.Pagination.PageNumber, PageSize: s.cfg.PageSize, } transactionList, totalCount, err := s.repo.GetTransactionListByUserID(ctx, request.UserID, dbPagination) if err != nil { return param.TransactionResponse{}, richerror.New(op).WithErr(err) } totalPages := (totalCount + s.cfg.PageSize - 1) / s.cfg.PageSize paginationInfo := postgres.ResponsePagination{ PageNumber: request.Pagination.PageNumber, PageSize: s.cfg.PageSize, TotalPages: totalPages, } return param.TransactionResponse{ Transaction: transactionEntityToTransactionInfo(transactionList), Pagination: paginationInfo, }, nil } func transactionEntityToTransactionInfo(TransactionList []entity.Transaction) []param.TransactionInfo { transactionInfoList := make([]param.TransactionInfo, len(TransactionList)) for i, transaction := range TransactionList { transactionInfoList[i] = param.TransactionInfo{ ID: transaction.ID, UserID: transaction.UserID, Amount: transaction.Amount, Currency: transaction.Currency, ActionType: transaction.ActionType, Timestamp: transaction.Timestamp, } } return transactionInfoList }