diff --git a/app/controllers/api/v1/community-member/multiSwap/cabns.ts b/app/controllers/api/v1/community-member/multiSwap/cabns.ts new file mode 100755 index 0000000..33932e9 --- /dev/null +++ b/app/controllers/api/v1/community-member/multiSwap/cabns.ts @@ -0,0 +1,30 @@ +let asyncMiddleware = require("../../../../../lib/response/asyncMiddleware"); +let stringHelper = require("../../../../../helpers/stringHelper"); +import { + doValidationForCreateUserCabn, + createUserCabn, + deleteUserIdFromCabn, + deleteUserIdFromAllCabns, +} from "../../../../../helpers/multiSwapHelpers/cabnsHelper"; + +module.exports = function (router: any) { + router.delete( + "/all", + asyncMiddleware(async (req: any, res: any) => { + await deleteUserIdFromAllCabns(req.user); + return res.http200({ + message: stringHelper.strSuccess, + }); + }) + ); + + router.delete( + "/:cabnId", + asyncMiddleware(async (req: any, res: any) => { + await deleteUserIdFromCabn(req.user, req.params.cabnId); + return res.http200({ + message: stringHelper.strSuccess, + }); + }) + ); +}; diff --git a/app/helpers/multiSwapHelpers/cabnsHelper.ts b/app/helpers/multiSwapHelpers/cabnsHelper.ts index 09c23bd..0f9af34 100644 --- a/app/helpers/multiSwapHelpers/cabnsHelper.ts +++ b/app/helpers/multiSwapHelpers/cabnsHelper.ts @@ -23,7 +23,6 @@ export const createUserCabn = async (req: any): Promise => { req.body.tokenContractAddress = req.body.tokenContractAddress.toLowerCase(); cabnFilter.network = network._id; cabnFilter.tokenContractAddress = req.body.tokenContractAddress; - console.log("cabn count", await countCabnByFilter(cabnFilter)); if ((await countCabnByFilter(cabnFilter)) == 0) { req.body.nonDefaultCurrencyInformation = getNonDefaultCurrencyInformationObject(req.body); @@ -39,6 +38,69 @@ export const createUserCabn = async (req: any): Promise => { } }; +export const deleteUserIdFromAllCabns = async (user: any): Promise => { + let cabnFilter: any = {}; + cabnFilter.createdByusers = { $in: user._id }; + cabnFilter.isDefault = false; + let cabns = await db.CurrencyAddressesByNetwork.find(cabnFilter); + if (cabns && cabns.length > 0) { + for (let cabn of cabns) { + await deleteUserIdFromCabn(user, cabn._id); + } + } +}; + +export const deleteUserIdFromCabn = async ( + user: any, + cabnId: string +): Promise => { + let cabnFilter: any = {}; + cabnFilter.createdByusers = { $in: user._id }; + cabnFilter._id = cabnId; + cabnFilter.isDefault = false; + let cabn = await findCabnByFilter(cabnFilter); + if (cabn) { + let users = cabn.createdByusers; + users = removeItemFromList(users, user._id); + cabn.createdByusers = users; + cabn.updatedAt = new Date(); + cabn = await db.CurrencyAddressesByNetwork.findOneAndUpdate( + cabnFilter, + cabn, + { new: true } + ); + } +}; + +export const makeCabnDefault = async (cabnId: string): Promise => { + let cabnFilter: any = {}; + cabnFilter._id = cabnId; + cabnFilter.isDefault = false; + let cabn = await findCabnByFilter(cabnFilter); + if (cabn) { + cabn.createdByusers = []; + cabn.isDefault = true; + cabn.updatedAt = new Date(); + cabn = await db.CurrencyAddressesByNetwork.findOneAndUpdate( + cabnFilter, + cabn, + { new: true } + ); + } +}; + +const removeItemFromList = (arr: any, value: any) => { + var i = 0; + while (i < arr.length) { + if (arr[i].toString() == value.toString()) { + arr.splice(i, 1); + } else { + ++i; + } + } + return arr; +}; + const countCabnByFilter = async (cabnFilter: any): Promise => { console.log(cabnFilter); return await db.CurrencyAddressesByNetwork.countDocuments(cabnFilter); @@ -59,8 +121,8 @@ const getNonDefaultCurrencyInformationObject = (body: any): any => { const addUserIdIntoCabn = async (cabnFilter: any, req: any): Promise => { let cabn; cabnFilter.createdByusers = { $in: req.user._id }; - let byPass = true; - if ((await countCabnByFilter(cabnFilter)) == 0 || byPass) { + let temp = true; + if ((await countCabnByFilter(cabnFilter)) == 0 || temp) { delete cabnFilter.createdByusers; cabn = await findCabnByFilter(cabnFilter); if (cabn) {