| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- 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<RegisterResult> => {
- 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;
|