From 6646274ada978e501b4ac8803d6e553aa5251d75 Mon Sep 17 00:00:00 2001
From: pawan-dot <71133473+pawan-dot@users.noreply.github.com>
Date: Sun, 12 Mar 2023 12:30:07 +0530
Subject: [PATCH] business add
---
app.js | 23 +-
resources/Businesses/BusinessController.js | 259 ++++++++++++++++++
resources/Businesses/BusinessModel.js | 55 ++++
resources/Businesses/BusinessRoute.js | 13 +
.../Business_Type/Business_controller.js | 61 +++++
.../setting/Business_Type/Business_model.js | 16 ++
.../setting/Business_Type/Business_routes.js | 21 ++
.../setting/Configration/Config_controller.js | 13 +-
.../setting/Configration/Config_model.js | 3 +
.../setting/Language/language_controller.js | 61 +++++
.../language_model.js} | 8 +-
resources/setting/Language/language_routes.js | 21 ++
.../setting/Purpose/Purpose_controller.js | 61 +++++
resources/setting/Purpose/Purpose_model.js | 13 +
resources/setting/Purpose/Purpose_routes.js | 21 ++
resources/setting/city/city_controller.js | 61 -----
resources/setting/city/city_routes.js | 21 --
17 files changed, 636 insertions(+), 95 deletions(-)
create mode 100644 resources/Businesses/BusinessController.js
create mode 100644 resources/Businesses/BusinessModel.js
create mode 100644 resources/Businesses/BusinessRoute.js
create mode 100644 resources/setting/Business_Type/Business_controller.js
create mode 100644 resources/setting/Business_Type/Business_model.js
create mode 100644 resources/setting/Business_Type/Business_routes.js
create mode 100644 resources/setting/Language/language_controller.js
rename resources/setting/{city/city_model.js => Language/language_model.js} (55%)
create mode 100644 resources/setting/Language/language_routes.js
create mode 100644 resources/setting/Purpose/Purpose_controller.js
create mode 100644 resources/setting/Purpose/Purpose_model.js
create mode 100644 resources/setting/Purpose/Purpose_routes.js
delete mode 100644 resources/setting/city/city_controller.js
delete mode 100644 resources/setting/city/city_routes.js
diff --git a/app.js b/app.js
index 42a1ec8..52cf441 100644
--- a/app.js
+++ b/app.js
@@ -23,6 +23,9 @@ app.use(fileUpload({
//auth
import user from "./resources/user/userRoute.js"
import ProductRouter from "./resources/Products/ProductRoute.js";
+//Businesses
+import BusinessRoute from "./resources/Businesses/BusinessRoute.js";
+
import orderRoute from './resources/Orders/orderRoute.js';
import DepartureRouter from "./resources/Departure/DepartureRoute.js";
import InformationRoute from "./resources/Informations/InformationRoute.js";
@@ -30,12 +33,22 @@ import Testimonial from "./resources/Testimonials/TestimonialRoute.js";
import ContactRequest from "./resources/ContactRequests/ContactRequestRoute.js"
import StateRouter from "./resources/setting/state/state_routes.js";
-import CityRouter from "./resources/setting/city/city_routes.js";
+//
+import LanguageRoute from "./resources/setting/Language/language_routes.js";
+//purpose
+import PurposeRoute from "./resources/setting/Purpose/Purpose_routes.js";
+//business_Type
+import Business_TypeRoute from "./resources/setting/Business_Type/Business_routes.js";
+
import ConfigRouter from "./resources/setting/Configration/Config_routes.js";
+
import TaxRouter from "./resources/Tax/tax_routes.js";
app.use("/api/v1/", user);
+
//Product
app.use("/api", ProductRouter);
+//businesses
+app.use("/api/businesses", BusinessRoute);
//Order
app.use("/api", orderRoute);
//Departure
@@ -48,8 +61,12 @@ app.use("/api/contact/request/", ContactRequest);
app.use("/api/testimonial/", Testimonial);
//state
app.use("/api/state", StateRouter);
-//city
-app.use("/api/city", CityRouter);
+//language
+app.use("/api/language", LanguageRoute);
+//Purpose
+app.use("/api/purpose", PurposeRoute);
+//Business_Type
+app.use("/api/business", Business_TypeRoute);
//Tax
app.use("/api/tax", TaxRouter);
//config
diff --git a/resources/Businesses/BusinessController.js b/resources/Businesses/BusinessController.js
new file mode 100644
index 0000000..e585c9d
--- /dev/null
+++ b/resources/Businesses/BusinessController.js
@@ -0,0 +1,259 @@
+
+
+
+import sendEmail from "../../Utils/sendEmail.js"
+import cloudinary from "../../Utils/cloudinary.js";
+import { Business } from './BusinessModel.js'
+import fs from "fs";
+
+
+
+export const createBusiness = async (req, res) => {
+ try {
+ if (!req?.user) return res.status(400).json({ message: "please login !" });
+
+ const { business, purpose, country, language, state, city, address_Line_1, address_Line_2, pincode } =
+ req.body;
+ //validation
+ switch (true) {
+ case !business:
+ return res.status(500).send({ error: "Business is Required" });
+ case !purpose:
+ return res.status(500).send({ error: "Purpose is Required" });
+ case !language:
+ return res.status(500).send({ error: "Language is Required" });
+ case !address_Line_1:
+ return res.status(500).send({ error: "address_Line_1 is Required" });
+ case !address_Line_2:
+ return res.status(500).send({ error: "address_Line_2 is Required" });
+ case !state:
+ return res.status(500).send({ error: "state is Required" });
+ case !pincode:
+ return res.status(500).send({ error: "pincode is Required" });
+ case !city:
+ return res.status(500).send({ error: "city is Required" });
+ case !country:
+ return res.status(500).send({ error: "country is Required" });
+
+
+ }
+
+ req.body.added_by = req.user._id
+ const businesses = await Business.create(req.body);
+
+ res.status(201).send({
+ success: true,
+ message: "Business Created Successfully",
+ businesses,
+ });
+ } catch (error) {
+ console.log(error);
+ res.status(500).send({
+ success: false,
+ error,
+ message: error.message ? error.message : "Unable to create."
+ });
+
+ }
+}
+
+export const getAllBusiness = async (req, res) => {
+ try {
+ if (!req?.user) return res.status(400).json({ message: "please login !" });
+
+
+ const businesses = await Business.find().sort({ createdAt: -1 })
+ if (businesses) {
+ res.status(201).send({
+ success: true,
+ message: "Business Fetched Successfully",
+ businesses,
+ });
+ }
+
+ } catch (error) {
+ // console.log(error);
+ res.status(500).send({
+ success: false,
+ error,
+ message: error.message ? error.message : "Unable to fetch."
+ });
+
+ }
+}
+export const getSingleBusiness = async (req, res) => {
+ try {
+ if (!req?.user) return res.status(400).json({ message: "please login !" });
+ if (!req?.params.id) return res.status(400).json({ message: "please Provide Business ID !" });
+
+ const businesses = await Business.findById(req.params.id)
+ if (businesses) {
+ res.status(201).send({
+ success: true,
+ message: "Business Fetched Successfully",
+ businesses,
+ });
+ }
+
+ } catch (error) {
+ // console.log(error);
+ res.status(500).send({
+ success: false,
+ error,
+ message: error.message ? error.message : "Unable to fetch."
+ });
+
+ }
+}
+export const updateBusiness = async (req, res) => {
+ try {
+ if (!req?.user) return res.status(400).json({ message: "please login !" });
+ if (!req?.params.id) return res.status(400).json({ message: "please Provide Business ID !" });
+
+
+
+ req.body.added_by = req.user._id
+ const businesses = await Business.findByIdAndUpdate(req.params.id, { ...req.body })
+
+ res.status(201).send({
+ success: true,
+ message: "Business Updated Successfully",
+ businesses,
+ });
+ } catch (error) {
+ console.log(error);
+ res.status(500).send({
+ success: false,
+ error,
+ message: error.message ? error.message : "Unable to Update."
+ });
+
+ }
+}
+//delete
+export const deleteBusinessById = async (req, res) => {
+ try {
+
+ if (!req?.user) return res.status(400).json({ message: "please login !" });
+ if (!req?.params.id) return res.status(400).json({ message: "please Provide Business ID !" });
+
+ const business = await Business.findByIdAndDelete(req.params.id)
+ if (!business) {
+ return res.status(400).json({ message: 'business Not Found' });
+ }
+ await business.remove();
+
+ res.status(200).json({ status: "OK", msg: 'Deteted successfully' });
+ } catch (err) {
+ return res.status(500).json({ message: err.message ? err.message : "Unable to delete." });
+ }
+};
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+const addBusiness = async (req, res) => {
+ const image_file = req?.files?.image;
+ try {
+ const { email } = req.body
+ let business = await Business.findOne({ email });
+ if (business) {
+ return res
+ .status(400)
+ .json({ success: false, message: "business already exists" });
+ }
+ const BusinessWithURL = await Business.findOne({
+ short_url: req.body?.short_url,
+ });
+ if (BusinessWithURL?._id) {
+ if (req?.files?.image?.tempFilePath)
+ fs.unlinkSync(image_file?.tempFilePath);
+ return res.status(400).json({ message: "Business URL is not available!" });
+ }
+ if (image_file?.tempFilePath) {
+ const result = await cloudinary.v2.uploader.upload(
+ image_file?.tempFilePath,
+ {
+ folder: "ATP/Business_banners",
+ }
+ );
+ const image = { url: result?.secure_url, public_id: result?.public_id };
+ req.body.banner = image;
+ fs.unlinkSync(image_file?.tempFilePath);
+ }
+ //generate password
+ const passwords = password.randomPassword({
+ length: 10,
+ characters: [
+ { characters: password.upper, exactly: 1 },
+ { characters: password.symbols, exactly: 1 },
+ password.lower,
+ password.digits]
+ })
+
+ req.body.password = passwords;
+ req.user.role === 'admin' ? req.body.verify = true : req.body.verify = false
+ const entity = await Business.create(req.body);
+ await sendEmail({
+
+ to: `${req.body.email}`, // Change to your recipient
+
+ from: `${process.env.SEND_EMAIL_FROM}`, // Change to your verified sender
+
+ subject: `ATP Business Created`,
+ html: `your business Url is:${req.body.url}
your login email is: ${req.body.email}
and password is: ${passwords}
Thank You
`
+
+ });
+ return res.status(200).json({
+ success: true,
+ data: entity,
+ message: `Business added successfully and Email sent to ${req.body.email} successfully`,
+ });
+ } catch (err) {
+ // console.log(err)
+ fs.unlinkSync(image_file?.tempFilePath);
+ return res.status(500).json({ message: err.message ? err.message : "Unable to create." });
+ }
+};
+
+const addProductToBusiness = async (req, res) => {
+ try {
+ const Business = await Business.findByIdAndUpdate(
+ req.params.id,
+ {
+ $push: { products: req.body.product_id },
+ },
+ { new: true }
+ );
+ res
+ .status(200)
+ .json({ status: "ok", message: "Product added to Business successfully" });
+ } catch (err) {
+ return res.status(500).json({ message: "Unable to get ID." });
+ }
+};
+
+
diff --git a/resources/Businesses/BusinessModel.js b/resources/Businesses/BusinessModel.js
new file mode 100644
index 0000000..cf1f199
--- /dev/null
+++ b/resources/Businesses/BusinessModel.js
@@ -0,0 +1,55 @@
+import mongoose from "mongoose";
+import validator from "validator"
+import bcrypt from "bcryptjs"
+import jwt from "jsonwebtoken"
+import crypto from "crypto"
+const { Schema, model } = mongoose;
+
+const BusinessSchema = new Schema(
+ {
+
+ address_Line_1: { type: String, required: true },
+ address_Line_2: { type: String, required: true },
+ purpose: { type: String, required: true },
+ business: { type: String, required: true },
+
+ language: [{ type: Array, default: [], required: true }],
+ country: { type: String, required: true, default: "" },
+ state: { type: String, required: true, default: "" },
+ city: { type: String, required: true },
+
+
+
+ pincode: { type: Number, required: true },
+
+
+ added_by: {
+ type: mongoose.Schema.ObjectId,
+ ref: "User",
+ required: true,
+ },
+ },
+ { timestamps: true }
+);
+
+BusinessSchema.pre("save", async function (next) {
+ if (!this.isModified("password")) {
+ next();
+ }
+
+ this.password = await bcrypt.hash(this.password, 12);
+});
+
+// JWT TOKEN
+BusinessSchema.methods.getJWTToken = function () {
+ return jwt.sign({ id: this._id }, process.env.JWT_SECRET);
+};
+
+
+// Compare Password
+
+BusinessSchema.methods.comparePassword = async function (password) {
+ return await bcrypt.compare(password, this.password);
+};
+
+export const Business = model("Business", BusinessSchema);
diff --git a/resources/Businesses/BusinessRoute.js b/resources/Businesses/BusinessRoute.js
new file mode 100644
index 0000000..031d6e1
--- /dev/null
+++ b/resources/Businesses/BusinessRoute.js
@@ -0,0 +1,13 @@
+import { Router } from "express";
+import { authorizeRoles, isAuthenticatedUser } from "../../middlewares/auth.js";
+import { createBusiness, getAllBusiness, getSingleBusiness, updateBusiness, deleteBusinessById } from "./BusinessController.js";
+
+const router = Router();
+
+router.route("/add").post(isAuthenticatedUser, authorizeRoles("admin"), createBusiness);
+router.route("/update/:id").patch(isAuthenticatedUser, authorizeRoles("admin"), updateBusiness);
+router.route("/delete/:id").delete(isAuthenticatedUser, authorizeRoles("admin"), deleteBusinessById);
+router.route("/get/:id").get(isAuthenticatedUser, getSingleBusiness);
+router.route("/getall").get(isAuthenticatedUser, getAllBusiness);
+
+export default router;
diff --git a/resources/setting/Business_Type/Business_controller.js b/resources/setting/Business_Type/Business_controller.js
new file mode 100644
index 0000000..d4e98c8
--- /dev/null
+++ b/resources/setting/Business_Type/Business_controller.js
@@ -0,0 +1,61 @@
+import mongoose from "mongoose";
+import { Business_Type } from "./Business_model.js";
+import {
+ addEntity,
+ deleteEntity,
+ getEntity,
+ updateEntity,
+} from "../../../Utils/reusableApi.js";
+
+const getNewId = async (req, res) => {
+ try {
+ const newId = new mongoose.Types.ObjectId();
+ res.status(200).json({ status: "OK", data: { _id: newId } });
+ } catch (err) {
+ return res.status(500).json({ message: "Unable to get ID." });
+ }
+};
+
+const addBusiness_Type = async (req, res) => {
+ await addEntity(req, res, Business_Type);
+};
+
+const getBusiness_TypeById = async (req, res) => {
+ await getEntity(req, res, Business_Type);
+};
+
+const getBusiness_TypeByIdWithState = async (req, res) => {
+ try {
+ const business = await Business_Type.findById(req.params.id).populate("state");
+ res.status(200).json(business);
+ } catch (e) {
+ res.status(500).json({ message: "Something went wrong!" });
+ }
+};
+
+const getAllBusiness_Types = async (req, res) => {
+ try {
+ const business = await Business_Type.find().sort({ createdAt: -1 });
+ res.status(200).json({ data: business });
+ } catch (e) {
+ res.status(500).json({ message: "Something went wrong!" });
+ }
+};
+
+const updateBusiness_Type = async (req, res) => {
+ await updateEntity(req, res, Business_Type);
+};
+
+const deleteBusiness_TypeById = async (req, res) => {
+ await deleteEntity(req, res, Business_Type);
+};
+
+export {
+ getNewId,
+ addBusiness_Type,
+ getAllBusiness_Types,
+ getBusiness_TypeById,
+ updateBusiness_Type,
+ deleteBusiness_TypeById,
+ getBusiness_TypeByIdWithState,
+};
diff --git a/resources/setting/Business_Type/Business_model.js b/resources/setting/Business_Type/Business_model.js
new file mode 100644
index 0000000..ea2cfd9
--- /dev/null
+++ b/resources/setting/Business_Type/Business_model.js
@@ -0,0 +1,16 @@
+import mongoose from "mongoose";
+const { Schema, model } = mongoose;
+
+const Business_TypeSchema = new Schema(
+ {
+ // _id: { type: Schema.Types.ObjectId },
+ business: { type: String, default: "" },
+ // state: { type: Schema.Types.ObjectId, ref: "State" },
+ // createdAt: { type: Date, default: new Date() },
+ },
+ // { timestamps: { createdAt: false, updatedAt: true } }
+ { timestamps: true }
+
+);
+
+export const Business_Type = model("Business_Type", Business_TypeSchema);
diff --git a/resources/setting/Business_Type/Business_routes.js b/resources/setting/Business_Type/Business_routes.js
new file mode 100644
index 0000000..36e2860
--- /dev/null
+++ b/resources/setting/Business_Type/Business_routes.js
@@ -0,0 +1,21 @@
+import { Router } from "express";
+const router = Router();
+import {
+ getNewId,
+ addBusiness_Type,
+ getAllBusiness_Types,
+ getBusiness_TypeById,
+ updateBusiness_Type,
+ deleteBusiness_TypeById,
+ getBusiness_TypeByIdWithState,
+} from "./business_controller.js";
+
+router.get("/newid", getNewId);
+router.get("/", getAllBusiness_Types);
+router.get("/:id", getBusiness_TypeById);
+router.get("/withstate/:id", getBusiness_TypeByIdWithState);
+router.post("/", addBusiness_Type);
+router.patch("/:id", updateBusiness_Type);
+router.delete("/:id", deleteBusiness_TypeById);
+
+export default router;
diff --git a/resources/setting/Configration/Config_controller.js b/resources/setting/Configration/Config_controller.js
index fe663e1..f1fe45c 100644
--- a/resources/setting/Configration/Config_controller.js
+++ b/resources/setting/Configration/Config_controller.js
@@ -2,7 +2,6 @@ import { Config } from "./Config_model.js";
import cloudinary from "../../../Utils/cloudinary.js";
//Add app Name
-// Add Social Media
export const addApplicationName = async (req, res) => {
@@ -52,7 +51,7 @@ export const addApplicationName = async (req, res) => {
}
};
-//
+//add copyright msg
export const addCopyRightMessage = async (req, res) => {
@@ -100,8 +99,10 @@ export const addCopyRightMessage = async (req, res) => {
console.log(error);
}
};
+//add business name
+//add purpose
+//add language
// Add Social Media
-
const addSocialMedia = async (req, res) => {
const { facebook, twitter, instagram, linkedin, mail, youtube, pinterest } =
req.body;
@@ -286,14 +287,14 @@ const addLogo = async (req, res) => {
const result = await cloudinary.v2.uploader.upload(
req.files.Headerlogo.tempFilePath,
- { folder: "Jatin/Logo" }
+ { folder: "bolo/Logo" }
);
result1 = result.secure_url;
}
if (req.files.Footerlogo) {
const result = await cloudinary.v2.uploader.upload(
req.files.Footerlogo.tempFilePath,
- { folder: "Jatin/Logo" }
+ { folder: "bolo/Logo" }
);
result2 = result.secure_url;
}
@@ -301,7 +302,7 @@ const addLogo = async (req, res) => {
// console.log(req.files.Adminlogo.path)
const result = await cloudinary.v2.uploader.upload(
req.files.Adminlogo.tempFilePath,
- { folder: "Jatin/Logo" }
+ { folder: "bolo/Logo" }
);
result3 = result.secure_url;
}
diff --git a/resources/setting/Configration/Config_model.js b/resources/setting/Configration/Config_model.js
index 715a2bf..a97b313 100644
--- a/resources/setting/Configration/Config_model.js
+++ b/resources/setting/Configration/Config_model.js
@@ -10,6 +10,9 @@ const configSchema = new Schema({
address: { type: Array, default: [] },
logo: { type: Array, default: [] },
terms_of_use: { type: String, default: "" },
+ purpose: { type: String, default: "" },
+ businessType: { type: String, default: "" },
+ language: { type: String, default: "" },
});
export const Config = model("Config", configSchema);
diff --git a/resources/setting/Language/language_controller.js b/resources/setting/Language/language_controller.js
new file mode 100644
index 0000000..397f613
--- /dev/null
+++ b/resources/setting/Language/language_controller.js
@@ -0,0 +1,61 @@
+import mongoose from "mongoose";
+import { Language } from "./language_model.js";
+import {
+ addEntity,
+ deleteEntity,
+ getEntity,
+ updateEntity,
+} from "../../../Utils/reusableApi.js";
+
+const getNewId = async (req, res) => {
+ try {
+ const newId = new mongoose.Types.ObjectId();
+ res.status(200).json({ status: "OK", data: { _id: newId } });
+ } catch (err) {
+ return res.status(500).json({ message: "Unable to get ID." });
+ }
+};
+
+const addLanguage = async (req, res) => {
+ await addEntity(req, res, Language);
+};
+
+const getLanguageById = async (req, res) => {
+ await getEntity(req, res, Language);
+};
+
+const getLanguageByIdWithState = async (req, res) => {
+ try {
+ const language = await Language.findById(req.params.id).populate("state");
+ res.status(200).json(language);
+ } catch (e) {
+ res.status(500).json({ message: "Something went wrong!" });
+ }
+};
+
+const getAllLanguages = async (req, res) => {
+ try {
+ const language = await Language.find().sort({ createdAt: -1 });
+ res.status(200).json({ data: language });
+ } catch (e) {
+ res.status(500).json({ message: "Something went wrong!" });
+ }
+};
+
+const updateLanguage = async (req, res) => {
+ await updateEntity(req, res, Language);
+};
+
+const deleteLanguageById = async (req, res) => {
+ await deleteEntity(req, res, Language);
+};
+
+export {
+ getNewId,
+ addLanguage,
+ getAllLanguages,
+ getLanguageById,
+ updateLanguage,
+ deleteLanguageById,
+ getLanguageByIdWithState,
+};
diff --git a/resources/setting/city/city_model.js b/resources/setting/Language/language_model.js
similarity index 55%
rename from resources/setting/city/city_model.js
rename to resources/setting/Language/language_model.js
index b82cfc5..362ad35 100644
--- a/resources/setting/city/city_model.js
+++ b/resources/setting/Language/language_model.js
@@ -1,11 +1,11 @@
import mongoose from "mongoose";
const { Schema, model } = mongoose;
-const CitySchema = new Schema(
+const LanguageSchema = new Schema(
{
// _id: { type: Schema.Types.ObjectId },
- city_name: { type: String, default: "" },
- state: { type: Schema.Types.ObjectId, ref: "State" },
+ language: { type: String, default: "" },
+ // state: { type: Schema.Types.ObjectId, ref: "State" },
// createdAt: { type: Date, default: new Date() },
},
// { timestamps: { createdAt: false, updatedAt: true } }
@@ -13,4 +13,4 @@ const CitySchema = new Schema(
);
-export const City = model("City", CitySchema);
+export const Language = model("Language", LanguageSchema);
diff --git a/resources/setting/Language/language_routes.js b/resources/setting/Language/language_routes.js
new file mode 100644
index 0000000..5c4c151
--- /dev/null
+++ b/resources/setting/Language/language_routes.js
@@ -0,0 +1,21 @@
+import { Router } from "express";
+const router = Router();
+import {
+ getNewId,
+ addLanguage,
+ getAllLanguages,
+ getLanguageById,
+ updateLanguage,
+ deleteLanguageById,
+ getLanguageByIdWithState,
+} from "./language_controller.js";
+
+router.get("/newid", getNewId);
+router.get("/", getAllLanguages);
+router.get("/:id", getLanguageById);
+router.get("/withstate/:id", getLanguageByIdWithState);
+router.post("/", addLanguage);
+router.patch("/:id", updateLanguage);
+router.delete("/:id", deleteLanguageById);
+
+export default router;
diff --git a/resources/setting/Purpose/Purpose_controller.js b/resources/setting/Purpose/Purpose_controller.js
new file mode 100644
index 0000000..ffbe58f
--- /dev/null
+++ b/resources/setting/Purpose/Purpose_controller.js
@@ -0,0 +1,61 @@
+import mongoose from "mongoose";
+import { Purpose } from "./purpose_model.js";
+import {
+ addEntity,
+ deleteEntity,
+ getEntity,
+ updateEntity,
+} from "../../../Utils/reusableApi.js";
+
+const getNewId = async (req, res) => {
+ try {
+ const newId = new mongoose.Types.ObjectId();
+ res.status(200).json({ status: "OK", data: { _id: newId } });
+ } catch (err) {
+ return res.status(500).json({ message: "Unable to get ID." });
+ }
+};
+
+const addPurpose = async (req, res) => {
+ await addEntity(req, res, Purpose);
+};
+
+const getPurposeById = async (req, res) => {
+ await getEntity(req, res, Purpose);
+};
+
+const getPurposeByIdWithState = async (req, res) => {
+ try {
+ const purpose = await Purpose.findById(req.params.id).populate("state");
+ res.status(200).json(purpose);
+ } catch (e) {
+ res.status(500).json({ message: "Something went wrong!" });
+ }
+};
+
+const getAllPurposes = async (req, res) => {
+ try {
+ const purpose = await Purpose.find().sort({ createdAt: -1 });
+ res.status(200).json({ data: purpose });
+ } catch (e) {
+ res.status(500).json({ message: "Something went wrong!" });
+ }
+};
+
+const updatePurpose = async (req, res) => {
+ await updateEntity(req, res, Purpose);
+};
+
+const deletePurposeById = async (req, res) => {
+ await deleteEntity(req, res, Purpose);
+};
+
+export {
+ getNewId,
+ addPurpose,
+ getAllPurposes,
+ getPurposeById,
+ updatePurpose,
+ deletePurposeById,
+ getPurposeByIdWithState,
+};
diff --git a/resources/setting/Purpose/Purpose_model.js b/resources/setting/Purpose/Purpose_model.js
new file mode 100644
index 0000000..9f30470
--- /dev/null
+++ b/resources/setting/Purpose/Purpose_model.js
@@ -0,0 +1,13 @@
+import mongoose from "mongoose";
+const { Schema, model } = mongoose;
+
+const PurposeSchema = new Schema(
+ {
+ purpose: { type: String, default: "" },
+
+ },
+ { timestamps: true }
+
+);
+
+export const Purpose = model("Purpose", PurposeSchema);
diff --git a/resources/setting/Purpose/Purpose_routes.js b/resources/setting/Purpose/Purpose_routes.js
new file mode 100644
index 0000000..e6f5595
--- /dev/null
+++ b/resources/setting/Purpose/Purpose_routes.js
@@ -0,0 +1,21 @@
+import { Router } from "express";
+const router = Router();
+import {
+ getNewId,
+ addPurpose,
+ getAllPurposes,
+ getPurposeById,
+ updatePurpose,
+ deletePurposeById,
+ // getPurposeByIdWithState,
+} from "./purpose_controller.js";
+
+router.get("/newid", getNewId);
+router.get("/", getAllPurposes);
+router.get("/:id", getPurposeById);
+// router.get("/withstate/:id", getPurposeByIdWithState)
+router.post("/", addPurpose);
+router.patch("/:id", updatePurpose);
+router.delete("/:id", deletePurposeById);
+
+export default router;
diff --git a/resources/setting/city/city_controller.js b/resources/setting/city/city_controller.js
deleted file mode 100644
index 9537606..0000000
--- a/resources/setting/city/city_controller.js
+++ /dev/null
@@ -1,61 +0,0 @@
-import mongoose from "mongoose";
-import { City } from "./city_model.js";
-import {
- addEntity,
- deleteEntity,
- getEntity,
- updateEntity,
-} from "../../../Utils/reusableApi.js";
-
-const getNewId = async (req, res) => {
- try {
- const newId = new mongoose.Types.ObjectId();
- res.status(200).json({ status: "OK", data: { _id: newId } });
- } catch (err) {
- return res.status(500).json({ message: "Unable to get ID." });
- }
-};
-
-const addCity = async (req, res) => {
- await addEntity(req, res, City);
-};
-
-const getCityById = async (req, res) => {
- await getEntity(req, res, City);
-};
-
-const getCityByIdWithState = async (req, res) => {
- try {
- const city = await City.findById(req.params.id).populate("state");
- res.status(200).json(city);
- } catch (e) {
- res.status(500).json({ message: "Something went wrong!" });
- }
-};
-
-const getAllCities = async (req, res) => {
- try {
- const cities = await City.find({}).populate("state");
- res.status(200).json({ data: cities });
- } catch (e) {
- res.status(500).json({ message: "Something went wrong!" });
- }
-};
-
-const updateCity = async (req, res) => {
- await updateEntity(req, res, City);
-};
-
-const deleteCityById = async (req, res) => {
- await deleteEntity(req, res, City);
-};
-
-export {
- getNewId,
- addCity,
- getAllCities,
- getCityById,
- updateCity,
- deleteCityById,
- getCityByIdWithState,
-};
diff --git a/resources/setting/city/city_routes.js b/resources/setting/city/city_routes.js
deleted file mode 100644
index ed7cb85..0000000
--- a/resources/setting/city/city_routes.js
+++ /dev/null
@@ -1,21 +0,0 @@
-import { Router } from "express";
-const router = Router();
-import {
- getNewId,
- addCity,
- getAllCities,
- getCityById,
- updateCity,
- deleteCityById,
- getCityByIdWithState,
-} from "./city_controller.js";
-
-router.get("/newid", getNewId);
-router.get("/", getAllCities);
-router.get("/:id", getCityById);
-router.get("/withstate/:id", getCityByIdWithState);
-router.post("/", addCity);
-router.patch("/:id", updateCity);
-router.delete("/:id", deleteCityById);
-
-export default router;