Blame view

src/api/end-user/controllers/end-user.js 3.11 KB
jaymehta committed
1
"use strict";
jay committed
2 3 4 5 6

/**
 * end-user controller
 */

jaymehta committed
7
const { createCoreController } = require("@strapi/strapi").factories;
jay committed
8

jaymehta committed
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
module.exports = createCoreController("api::end-user.end-user", () => ({
  async create(ctx) {
    // console.log("ctx", ctx.request.body);
    // Get user from user entity
    const currentUser = await strapi
      .query("plugin::users-permissions.user")
      .findOne({
        populate: ["user"],
        where: {
          $and: [{ email: ctx.request.body.data.email }],
        },
      });
    //   Check if its already existing in vendor entity
    console.log("currentUser", currentUser);
    console.log(
      "phoneNumber",
      ctx.request.body.data.mobileNo,
      ctx.request.body.data.email
    );
    let existingUser;
jaymehta committed
29 30 31 32 33 34 35
    existingUser = await strapi.entityService.findMany(
      "api::end-user.end-user",
      {
        // fields: ["id"],
        filters: { phone: { $eq: ctx.request.body.data.mobileNo } },
      }
    );
jaymehta committed
36 37 38
    console.log("existingUser> 1", existingUser);

    if (!existingUser) {
jaymehta committed
39 40 41 42 43 44 45
      existingUser = await strapi.entityService.findMany(
        "api::end-user.end-user",
        {
          // fields: ["id"],
          filters: { email: { $eq: ctx.request.body.data.email } },
        }
      );
jaymehta committed
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
    }
    console.log("existingUser > 2", existingUser);

    // Generate one time password (otp)
    const oneTimePassword = Math.floor(1000 + Math.random() * 9000);

    await strapi.entityService.update(
      "plugin::users-permissions.user",
      currentUser.id,
      {
        data: {
          oneTimePassword: `${oneTimePassword}`,
        },
      }
    );
    const date = new Date();
    // TODO: Code to send OTP on email
    // TODO: Code to send OTP on SMS

    console.log("ctx.request.body.data", ctx.request.body.data);
    console.log("existingUser", existingUser);
    if (existingUser && existingUser.length !== 0) {
    } else {
      ctx.request.body.data.user = currentUser.id;
jaymehta committed
70 71 72 73 74 75 76 77 78 79
      const response = await strapi.entityService.create(
        "api::end-user.end-user",
        {
          data: {
            ...ctx.request.body.data,
            phone: ctx.request.body.data.mobileNo,
            publishedAt: date,
          },
        }
      );
jaymehta committed
80 81 82 83 84 85 86 87 88 89 90 91 92 93
      console.log("response", response);
      return { otpSent: true, data: response };

      //   ctx.request.body.data.user = currentUser;
      //   console.log("ctx.request.body.data", ctx.request.body.data);
      //   return await super.create(ctx);
    }

    ctx.send({
      ok: true,
      message: "Existing vendor found, skipping creation only sent OTP.",
    });
  },

jaymehta committed
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
  async giftCardOtp(ctx) {
    // Generate one time password (otp)
    // console.log(ctx.request.body);
    const oneTimePassword = Math.floor(1000 + Math.random() * 9000);
    const res = await strapi.entityService.update(
      "plugin::users-permissions.user",
      ctx.request.body.data.userId,
      {
        data: {
          oneTimePassword: `${oneTimePassword}`,
        },
      }
    );
    // console.log("res", res);
    // TODO: ADD FUNCTIONALITY FOR EMAIL AND SMS
    ctx.send({
      ok: true,
      message: "OTP sent successfully",
    });
  },
jaymehta committed
114
}));