la otra mitad del commit anterior
This commit is contained in:
@@ -11,6 +11,16 @@ import { CreateTrainingDto } from './dto/create-training.dto';
|
||||
import { TrainingStatisticsFilterDto } from './dto/training-statistics-filter.dto';
|
||||
import { UpdateTrainingDto } from './dto/update-training.dto';
|
||||
|
||||
// TRUE: para mostrar los logs de errores en la api
|
||||
// Actualmente estás solo en crear registro. Despues lo implemento en los demas
|
||||
const debug = false;
|
||||
|
||||
type User = {
|
||||
role: string;
|
||||
id: number;
|
||||
};
|
||||
|
||||
|
||||
@Injectable()
|
||||
export class TrainingService {
|
||||
constructor(
|
||||
@@ -18,7 +28,8 @@ export class TrainingService {
|
||||
private readonly minioService: MinioService,
|
||||
) { }
|
||||
|
||||
async findAll(paginationDto?: PaginationDto) {
|
||||
|
||||
async findAll(paginationDto?: PaginationDto, user?: User) {
|
||||
const {
|
||||
page = 1,
|
||||
limit = 10,
|
||||
@@ -34,6 +45,10 @@ export class TrainingService {
|
||||
searchCondition = or(ilike(trainingSurveys.ospName, `%${search}%`));
|
||||
}
|
||||
|
||||
if (user?.role == 'coordinators') {
|
||||
searchCondition = eq(trainingSurveys.createdBy, user.id)
|
||||
}
|
||||
|
||||
const orderBy =
|
||||
sortOrder === 'asc'
|
||||
? sql`${trainingSurveys[sortBy as keyof typeof trainingSurveys]} asc`
|
||||
@@ -257,14 +272,16 @@ export class TrainingService {
|
||||
}
|
||||
}
|
||||
|
||||
// ========== Guardar registro ========== //
|
||||
async create(
|
||||
createTrainingDto: CreateTrainingDto,
|
||||
files: Express.Multer.File[],
|
||||
userId: number,
|
||||
) {
|
||||
try {
|
||||
// 1. Guardar fotos
|
||||
|
||||
const photoPaths = await this.saveFiles(files);
|
||||
// const photoPaths = [];
|
||||
|
||||
// 2. Extraer solo visitDate para formatearlo.
|
||||
// Ya NO extraemos state, municipality, etc. porque no vienen en el DTO.
|
||||
@@ -281,7 +298,7 @@ export class TrainingService {
|
||||
visitDate: new Date(visitDate),
|
||||
|
||||
// Borra las tildes y cambia el texto a mayusculas
|
||||
productiveActivityOther: productiveActivityOther.toUpperCase().normalize("NFD").replace(/[\u0300-\u036f]/g, ""),
|
||||
productiveActivityOther: productiveActivityOther ? productiveActivityOther.toUpperCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "") : '',
|
||||
|
||||
// 3. Asignar fotos de forma segura
|
||||
photo1: photoPaths[0] ?? null,
|
||||
@@ -299,8 +316,13 @@ export class TrainingService {
|
||||
.returning();
|
||||
|
||||
return newRecord;
|
||||
} catch (e) {
|
||||
if (debug) console.log(e);
|
||||
return null // null para que de error
|
||||
}
|
||||
}
|
||||
|
||||
// ========== Actualizar registro ========== //
|
||||
async update(
|
||||
id: number,
|
||||
updateTrainingDto: UpdateTrainingDto,
|
||||
@@ -376,6 +398,7 @@ export class TrainingService {
|
||||
return updatedRecord;
|
||||
}
|
||||
|
||||
// ========== Eliminar registro ========== //
|
||||
async remove(id: number) {
|
||||
const record = await this.findOne(id);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user