327 lines
15 KiB
JavaScript
Executable File
327 lines
15 KiB
JavaScript
Executable File
"use strict";
|
|
exports.__esModule = true;
|
|
exports.searchOnActiveOffers = exports.searchOnTxs = void 0;
|
|
var redis = require("../api/redis");
|
|
var acceptedOffers_1 = require("../db/acceptedOffers");
|
|
var ActiveOffers_1 = require("../db/ActiveOffers");
|
|
exports.searchOnTxs = function (_a) {
|
|
var curId = _a.curId, txType = _a.txType, rial = _a.rial;
|
|
var itemsMap = new Map();
|
|
var items = ['curId'];
|
|
var definedItems = [];
|
|
itemsMap.set('curId', curId);
|
|
items.map(function (element) {
|
|
if (itemsMap.get(element)) {
|
|
definedItems.push(element);
|
|
}
|
|
});
|
|
var query = [];
|
|
var queryMap = new Map();
|
|
queryMap.set('curId', [{ $or: [
|
|
{ $and: [{ curGivenId: curId }, { curTakenId: rial._id }] },
|
|
{ $and: [{ curTakenId: curId }, { curGivenId: rial._id }] }
|
|
] }]);
|
|
var definedItemsMap = definedItems.map(function (element) {
|
|
query.push.apply(query, queryMap.get(element));
|
|
});
|
|
if (query.length === 0) {
|
|
query = [{ $or: [{ curTakenId: rial._id }, { curGivenId: rial._id }] }];
|
|
}
|
|
console.log('query: ', query);
|
|
return Promise.all(definedItemsMap)
|
|
.then(function () {
|
|
return acceptedOffers_1.Accepted_Offers.find({ $and: query })
|
|
.then(function (result) {
|
|
var modifiedResult = [];
|
|
if (itemsMap.get('curId')) {
|
|
return redis.hashGetAll(curId.toString())
|
|
.then(function (curObj) {
|
|
result.map(function (e) {
|
|
if (e.curTakenId.toString() === rial._id.toString() && txType === 'sell') {
|
|
modifiedResult.push({
|
|
GcurrencyName: curObj.currencyName,
|
|
GpersianName: curObj.per_name,
|
|
GshortName: curObj.ab_name,
|
|
Gvalue: e.curGivenVal,
|
|
Gicon: curObj.icon,
|
|
acceptedDate: e.created_at,
|
|
TcurrencyName: rial.currencyName,
|
|
TpersianName: rial.per_name,
|
|
TshortName: rial.ab_name,
|
|
Tvalue: e.curTakenVal,
|
|
Ticon: rial.icon,
|
|
txType: 'sell'
|
|
});
|
|
}
|
|
else if (e.curGivenId.toString() === rial._id.toString() && txType === 'buy') {
|
|
modifiedResult.push({
|
|
GcurrencyName: curObj.currencyName,
|
|
GpersianName: curObj.per_name,
|
|
GshortName: curObj.ab_name,
|
|
Gvalue: e.curTakenVal,
|
|
Gicon: curObj.icon,
|
|
acceptedDate: e.created_at,
|
|
TcurrencyName: rial.currencyName,
|
|
TpersianName: rial.per_name,
|
|
TshortName: rial.ab_name,
|
|
Tvalue: e.curGivenVal,
|
|
Ticon: rial.icon,
|
|
txType: 'buy'
|
|
});
|
|
}
|
|
else if (txType === 'all') {
|
|
if (e.curTakenId.toString() === rial._id.toString()) {
|
|
modifiedResult.push({
|
|
GcurrencyName: curObj.currencyName,
|
|
GpersianName: curObj.per_name,
|
|
GshortName: curObj.ab_name,
|
|
Gvalue: e.curGivenVal,
|
|
Gicon: curObj.icon,
|
|
acceptedDate: e.created_at,
|
|
TcurrencyName: rial.currencyName,
|
|
TpersianName: rial.per_name,
|
|
TshortName: rial.ab_name,
|
|
Tvalue: e.curTakenVal,
|
|
Ticon: rial.icon,
|
|
txType: 'sell'
|
|
});
|
|
}
|
|
else if (e.curGivenId.toString() === rial._id.toString()) {
|
|
modifiedResult.push({
|
|
GcurrencyName: curObj.currencyName,
|
|
GpersianName: curObj.per_name,
|
|
GshortName: curObj.ab_name,
|
|
Gvalue: e.curTakenVal,
|
|
Gicon: curObj.icon,
|
|
acceptedDate: e.created_at,
|
|
TcurrencyName: rial.currencyName,
|
|
TpersianName: rial.per_name,
|
|
TshortName: rial.ab_name,
|
|
Tvalue: e.curGivenVal,
|
|
Ticon: rial.icon,
|
|
txType: 'buy'
|
|
});
|
|
}
|
|
}
|
|
});
|
|
return modifiedResult;
|
|
})["catch"](function (err) {
|
|
throw err;
|
|
});
|
|
}
|
|
else {
|
|
var resultMap = result.map(function (e) {
|
|
console.log('eeeeeeeee: ', e);
|
|
if (e.curTakenId.toString() === rial._id.toString() && txType === 'sell') {
|
|
return redis.hashGetAll(e.curGivenId.toString())
|
|
.then(function (curGivenObj) {
|
|
modifiedResult.push({
|
|
GcurrencyName: curGivenObj.currencyName,
|
|
GpersianName: curGivenObj.per_name,
|
|
GshortName: curGivenObj.ab_name,
|
|
Gvalue: e.curGivenVal,
|
|
Gicon: curGivenObj.icon,
|
|
acceptedDate: e.created_at,
|
|
TcurrencyName: rial.currencyName,
|
|
TpersianName: rial.per_name,
|
|
TshortName: rial.ab_name,
|
|
Tvalue: e.curTakenVal,
|
|
Ticon: rial.icon,
|
|
txType: 'sell'
|
|
});
|
|
})["catch"](function (err) {
|
|
console.log(err);
|
|
});
|
|
}
|
|
else if (e.curGivenId.toString() === rial._id.toString() && txType === 'buy') {
|
|
return redis.hashGetAll(e.curTakenId.toString())
|
|
.then(function (curTakenObj) {
|
|
modifiedResult.push({
|
|
GcurrencyName: curTakenObj.currencyName,
|
|
GpersianName: curTakenObj.per_name,
|
|
GshortName: curTakenObj.ab_name,
|
|
Gvalue: e.curTakenVal,
|
|
Gicon: curTakenObj.icon,
|
|
acceptedDate: e.created_at,
|
|
TcurrencyName: rial.currencyName,
|
|
TpersianName: rial.per_name,
|
|
TshortName: rial.ab_name,
|
|
Tvalue: e.curGivenVal,
|
|
Ticon: rial.icon,
|
|
txType: 'buy'
|
|
});
|
|
})["catch"](function (err) {
|
|
console.log(err);
|
|
});
|
|
}
|
|
else if (txType === 'all') {
|
|
if (e.curTakenId.toString() === rial._id.toString()) {
|
|
return redis.hashGetAll(e.curGivenId.toString())
|
|
.then(function (curGivenObj) {
|
|
modifiedResult.push({
|
|
GcurrencyName: curGivenObj.currencyName,
|
|
GpersianName: curGivenObj.per_name,
|
|
GshortName: curGivenObj.ab_name,
|
|
Gvalue: e.curGivenVal,
|
|
Gicon: curGivenObj.icon,
|
|
acceptedDate: e.created_at,
|
|
TcurrencyName: rial.currencyName,
|
|
TpersianName: rial.per_name,
|
|
TshortName: rial.ab_name,
|
|
Tvalue: e.curTakenVal,
|
|
Ticon: rial.icon,
|
|
txType: 'sell'
|
|
});
|
|
})["catch"](function (err) {
|
|
console.log(err);
|
|
});
|
|
}
|
|
else if (e.curGivenId.toString() === rial._id.toString()) {
|
|
return redis.hashGetAll(e.curTakenId.toString())
|
|
.then(function (curTakenObj) {
|
|
modifiedResult.push({
|
|
GcurrencyName: curTakenObj.currencyName,
|
|
GpersianName: curTakenObj.per_name,
|
|
GshortName: curTakenObj.ab_name,
|
|
Gvalue: e.curTakenVal,
|
|
Gicon: curTakenObj.icon,
|
|
acceptedDate: e.created_at,
|
|
TcurrencyName: rial.currencyName,
|
|
TpersianName: rial.per_name,
|
|
TshortName: rial.ab_name,
|
|
Tvalue: e.curGivenVal,
|
|
Ticon: rial.icon,
|
|
txType: 'buy'
|
|
});
|
|
})["catch"](function (err) {
|
|
console.log(err);
|
|
});
|
|
}
|
|
}
|
|
});
|
|
return Promise.all(resultMap)
|
|
.then(function () {
|
|
return modifiedResult;
|
|
})["catch"](function (err) {
|
|
throw err;
|
|
});
|
|
}
|
|
})["catch"](function (err) {
|
|
throw err;
|
|
});
|
|
})["catch"](function (err) {
|
|
throw err;
|
|
});
|
|
};
|
|
exports.searchOnActiveOffers = function (_a) {
|
|
var offerId = _a.offerId, curGivenId = _a.curGivenId, curGivenVal = _a.curGivenVal, curTakenId = _a.curTakenId, curTakenVal = _a.curTakenVal, expDate = _a.expDate, created_at = _a.created_at;
|
|
var itemsMap = new Map();
|
|
var items = ['offerId', 'curGivenId', 'curGivenVal', 'curTakenId', 'curTakenVal', 'expDate', 'created_at'];
|
|
var definedItems = [];
|
|
itemsMap.set('offerId', offerId);
|
|
itemsMap.set('curGivenId', curGivenId);
|
|
itemsMap.set('curGivenVal', curGivenVal);
|
|
itemsMap.set('curTakenId', curTakenId);
|
|
itemsMap.set('curTakenVal', curTakenVal);
|
|
itemsMap.set('expDate', expDate);
|
|
itemsMap.set('created_at', created_at);
|
|
items.map(function (element) {
|
|
if (itemsMap.get(element)) {
|
|
if (element === 'expDate') {
|
|
if (expDate.from || expDate.to) {
|
|
definedItems.push(element);
|
|
}
|
|
}
|
|
else if (element === 'created_at') {
|
|
if (created_at.from || created_at.to) {
|
|
definedItems.push(element);
|
|
}
|
|
}
|
|
else if (element === 'curGivenVal') {
|
|
if (curGivenVal.from || curGivenVal.to) {
|
|
definedItems.push(element);
|
|
}
|
|
}
|
|
else if (element === 'curTakenVal') {
|
|
if (curTakenVal.from || curTakenVal.to) {
|
|
definedItems.push(element);
|
|
}
|
|
}
|
|
else {
|
|
definedItems.push(element);
|
|
}
|
|
}
|
|
});
|
|
var query = [{ expDate: { $gt: Date.now() } }];
|
|
var queryMap = new Map();
|
|
var queryExpDate;
|
|
var queryCreatedAt;
|
|
var queryCurGivenVal;
|
|
var queryCurTakenVal;
|
|
if (definedItems.includes('expDate')) {
|
|
if (expDate.from && expDate.to) {
|
|
queryExpDate = { expDate: { $gt: expDate.from, $lt: expDate.to } };
|
|
}
|
|
else if (expDate.from && !expDate.to) {
|
|
queryExpDate = { expDate: { $gt: expDate.from } };
|
|
}
|
|
else if (!expDate.from && expDate.to) {
|
|
queryExpDate = { expDate: { $lt: expDate.to } };
|
|
}
|
|
}
|
|
if (definedItems.includes('created_at')) {
|
|
if (created_at.from && created_at.to) {
|
|
queryCreatedAt = { created_at: { $gt: created_at.from, $lt: created_at.to } };
|
|
}
|
|
else if (created_at.from && !created_at.to) {
|
|
queryCreatedAt = { created_at: { $gt: created_at.from } };
|
|
}
|
|
else if (!created_at.from && created_at.to) {
|
|
queryCreatedAt = { created_at: { $lt: created_at.to } };
|
|
}
|
|
}
|
|
if (definedItems.includes('curGivenVal')) {
|
|
if (curGivenVal.from && curGivenVal.to) {
|
|
queryCurGivenVal = { curGivenVal: { $gte: curGivenVal.from, $lte: curGivenVal.to } };
|
|
}
|
|
else if (curGivenVal.from && !curGivenVal.to) {
|
|
queryCurGivenVal = { curGivenVal: { $gte: curGivenVal.from } };
|
|
}
|
|
else if (!curGivenVal.from && curGivenVal.to) {
|
|
queryCurGivenVal = { curGivenVal: { $lte: curGivenVal.to } };
|
|
}
|
|
}
|
|
if (definedItems.includes('curTakenVal')) {
|
|
if (curTakenVal.from && curTakenVal.to) {
|
|
queryCurTakenVal = { curTakenVal: { $gte: curTakenVal.from, $lte: curTakenVal.to } };
|
|
}
|
|
else if (curTakenVal.from && !curTakenVal.to) {
|
|
queryCurTakenVal = { curTakenVal: { $gte: curTakenVal.from } };
|
|
}
|
|
else if (!curTakenVal.from && curTakenVal.to) {
|
|
queryCurTakenVal = { curTakenVal: { $lte: curTakenVal.to } };
|
|
}
|
|
}
|
|
queryMap.set('offerId', { offerId: offerId });
|
|
queryMap.set('curGivenId', { curGivenId: curGivenId });
|
|
queryMap.set('curGivenVal', queryCurGivenVal);
|
|
queryMap.set('curTakenId', { curTakenId: curTakenId });
|
|
queryMap.set('curTakenVal', queryCurTakenVal);
|
|
queryMap.set('expDate', queryExpDate);
|
|
queryMap.set('created_at', queryCreatedAt);
|
|
var definedItemsMap = definedItems.map(function (element) {
|
|
query.push(queryMap.get(element));
|
|
});
|
|
return Promise.all(definedItemsMap)
|
|
.then(function () {
|
|
return ActiveOffers_1.Active_Offers.find({ $and: query })
|
|
.then(function (result) {
|
|
return result;
|
|
})["catch"](function (err) {
|
|
throw err;
|
|
});
|
|
})["catch"](function (err) {
|
|
throw err;
|
|
});
|
|
};
|