package data

import (
	"actatempus_backend/internal/domain/entities"
	"actatempus_backend/internal/infrastructure/data/db"
)

// Maps a Prisma User model to the domain User model.
func mapPrismaUserToDomain(user db.UserDboModel) entities.User {
	return entities.User{
		ID:        user.ID,
		Name:      user.Name,
		Email:     user.Email,
		Password:  user.Password,
		CreatedAt: user.CreatedAt,
		UpdatedAt: user.UpdatedAt,
	}
}

func mapPrismaProjectToDomain(project db.ProjectDboModel) entities.Project {
	return entities.Project{
		ID:          project.ID,
		Name:        project.Name,
		UserID:      project.UserID,
		Description: NullableField(project.Description),
		ClientID:    NullableField(project.ClientID),
		CreatedAt:   project.CreatedAt,
		UpdatedAt:   project.UpdatedAt,
	}
}


func mapPrismaTimeEntryToDomain(timeEntry db.TimeEntryDboModel) entities.TimeEntry {
	return entities.TimeEntry{
		ID:          timeEntry.ID,
		ProjectID:   timeEntry.ProjectID,
		UserID:      timeEntry.UserID,
		StartTime:   timeEntry.StartTime,
		EndTime:     NullableField(timeEntry.EndTime),
		Description: NullableField(timeEntry.Description),
		CreatedAt:   timeEntry.CreatedAt,
		UpdatedAt:   timeEntry.UpdatedAt,
	}
}


func mapPrismaProjectTaskToDomain(projectTask db.ProjectTaskDboModel) entities.ProjectTask {
	return entities.ProjectTask{
		ID:          projectTask.ID,
		ProjectID:   projectTask.ProjectID,
		Name:        projectTask.Name,
		Description: NullableField(projectTask.Description),
		CreatedAt:   projectTask.CreatedAt,
		UpdatedAt:   projectTask.UpdatedAt,
	}
}
