This commit is contained in:
2025-04-30 13:14:27 -06:00
parent 2f84152f34
commit 6b32fe18d2
757 changed files with 97380 additions and 1 deletions

View File

@@ -0,0 +1,153 @@
import { Request, Response } from "express";
import { getIO } from "../libs/socket";
import AppError from "../errors/AppError";
import { head } from "lodash";
import CreateService from "../services/FileServices/CreateService";
import ListService from "../services/FileServices/ListService";
import UpdateService from "../services/FileServices/UpdateService";
import ShowService from "../services/FileServices/ShowService";
import DeleteService from "../services/FileServices/DeleteService";
import SimpleListService from "../services/FileServices/SimpleListService";
import DeleteAllService from "../services/FileServices/DeleteAllService";
import FilesOptions from "../models/FilesOptions";
type IndexQuery = {
searchParam?: string;
pageNumber?: string | number;
};
export const index = async (req: Request, res: Response): Promise<Response> => {
const { pageNumber, searchParam } = req.query as IndexQuery;
const { companyId } = req.user;
const { files, count, hasMore } = await ListService({
searchParam,
pageNumber,
companyId
});
return res.json({ files, count, hasMore });
};
export const store = async (req: Request, res: Response): Promise<Response> => {
const { name, message, options } = req.body;
const { companyId } = req.user;
const fileList = await CreateService({
name,
message,
options,
companyId
});
const io = getIO();
io.to(`company-${companyId}-mainchannel`).emit(`company${companyId}-file`, {
action: "create",
fileList
});
return res.status(200).json(fileList);
};
export const show = async (req: Request, res: Response): Promise<Response> => {
const { fileId } = req.params;
const { companyId } = req.user;
const file = await ShowService(fileId, companyId);
return res.status(200).json(file);
};
export const uploadMedias = async (req: Request, res: Response): Promise<Response> => {
const { fileId, id, mediaType } = req.body;
const files = req.files as Express.Multer.File[];
const file = head(files);
try {
let fileOpt
if (files.length > 0) {
for (const [index, file] of files.entries()) {
fileOpt = await FilesOptions.findOne({
where: {
fileId,
id: Array.isArray(id)? id[index] : id
}
});
fileOpt.update({
path: file.filename.replace('/','-'),
mediaType: Array.isArray(mediaType)? mediaType[index] : mediaType
}) ;
}
}
return res.send({ mensagem: "Arquivos atualizados" });
} catch (err: any) {
throw new AppError(err.message);
}
};
export const update = async (
req: Request,
res: Response
): Promise<Response> => {
if (req.user.profile !== "admin") {
throw new AppError("ERR_NO_PERMISSION", 403);
}
const { fileId } = req.params;
const fileData = req.body;
const { companyId } = req.user;
const fileList = await UpdateService({ fileData, id: fileId, companyId });
const io = getIO();
io.to(`company-${companyId}-mainchannel`).emit(`company${companyId}-file`, {
action: "update",
fileList
});
return res.status(200).json(fileList);
};
export const remove = async (
req: Request,
res: Response
): Promise<Response> => {
const { fileId } = req.params;
const { companyId } = req.user;
await DeleteService(fileId, companyId);
const io = getIO();
io.to(`company-${companyId}-mainchannel`).emit(`company${companyId}-file`, {
action: "delete",
fileId
});
return res.status(200).json({ message: "File List deleted" });
};
export const removeAll = async (
req: Request,
res: Response
): Promise<Response> => {
const { companyId } = req.user;
await DeleteAllService(companyId);
return res.send();
};
export const list = async (req: Request, res: Response): Promise<Response> => {
const { searchParam } = req.query as IndexQuery;
const { companyId } = req.user;
const ratings = await SimpleListService({ searchParam, companyId });
return res.json(ratings);
};