import { plainToInstance } from "class-transformer"; import { validate } from "class-validator"; import { User } from "../../../models/User"; import { RegisterInput, RegisterResult } from "./types"; import { formatValidationErrors } from "../../../utils"; export const register = async (input: RegisterInput): Promise => { const dto = plainToInstance(RegisterInput, input); const errors = await validate(dto); if (errors.length > 0) { return { message: formatValidationErrors(errors), code: 400, }; } const { companyName, phoneNumber, firstName, lastName, password, mail } = input; const existingUser = await User.findOne({ mail }); if (existingUser) { return { message: "email-already-in-use", code: 409 }; } const existingPhone = await User.findOne({ phoneNumber }); if (existingPhone) { return { message: "phone-already-in-use", code: 409 }; } await User.create({ fullName: `${firstName} ${lastName}`, phoneNumber, companyName, firstName, lastName, password, mail }); return { message: "registration-successful", code: 201 }; }; export default register;