plxdcma_eshop
Version:
Instala todo lo necesario para una tienda virtual
397 lines (374 loc) • 10.3 kB
JavaScript
var MemoryArray=require(`plxdcma_memoryarray`)
var standarinit=require(`plxdcma_standarinit`)
var articulosImagesMemoryArray=new MemoryArray(400,function(item,items,key){
//Como guardar [item] in [items]
//Item es un arreglo
items[key]=item
},function(key,items){
//Como extraer [item] de [items]
return items[key]
},function(key,items){
//Como remover [item] de [items]
delete items[key]
},function(quededItems,conclusion){
var pool=standarinit.pool
pool.query(`select * from mediaresource where id in (select _id from productos_recursos where id_ in (${quededItems}))`,function(er,r){
conclusion(r)
})
})
var articulosEstandaresMemoryArray=new MemoryArray(400,function(item,items,key){
//Como guardar [item] in [items]
//Item es un arreglo
items[key]=item
},function(key,items){
//Como extraer [item] de [items]
return items[key]
},function(item,items){
//Como remover [item] de [items]
delete items[key]
},function(quededItems,conclusion){
var pool=standarinit.pool
let qx=`select pe.product,pe.id as standarsizeid,pe.precio,pe.inventario,pso.texto,pe.moneda from productos_estandares as pe
inner join productos_perfil_regproducts_standaroptions as pso on pso.id = pe.texto
where product in (${quededItems})`
pool.query(qx,function(er,r){
if(er != null){
console.log(`Er`)
console.log(er)
}
conclusion(r)
})
})
var articulosCaracteristicasArray=new MemoryArray(400,function(item,items,key){
//Como guardar [item] in [items]
//Item es un arreglo
if(item.length == 0){
return false
}
if(items[item.id] != null){
return false
}
var firstItem=item[0]
items[firstItem.product]=item
},function(item,items){
//Como extraer [item] de [items]
return items[item.id]
},function(item,items){
//Como remover [item] de [items]
delete items[item.id]
},function(quededItems,conclusion){
var pool=standarinit.pool
pool.query(`select * from productos_caracteristicas where product in (${quededItems})`,function(er,r){
if(er != null){
console.log(`Er`)
console.log(er)
}
conclusion(r)
})
})
var articulosMemoryArray=new MemoryArray(400,function(item,items,key){
//Como guardar [item] in [items]
if(item.length != null){
for(var each in item){
var o=item[each]
items[o.id]=o
}
}else{
items[key]=item
}
},function(key,items){
//Como extraer [item] de [items]
return items[key]
},function(key,items){
//Como remover [item] de [items]
delete items[key]
},function(quededItems,conclusion){
var pool=standarinit.pool
pool.query(`select * from productos where id in (${quededItems})`,function(er,r){
if(er != null){
console.log(`er`)
console.log(er)
}
conclusion(r)
})
})
var articulosPreviewPrecioArray=new MemoryArray(400,function(item,items,key){
//Como guardar [item] in [items]
if(item.length == null){
item=[item]
}
for(var each in item){
var imx=item[each]
var ox=items[imx.product]
if(ox == null){
ox={
producto:imx.product,
moneda:imx.moneda
}
items[imx.product]=ox
}
if(ox.min == null){
ox.min=imx.precio
}else{
if(imx.precio > ox.min){
if(ox.max == null){
imx.precio=ox.max
}else{
if(imx.precio > ox.max){
ox.max=imx.precio
}
}
}else{
if(imx.precio < ox.min){
ox.min=imx.precio
}
}
}
}
},function(key,items){
//Como extraer [item] de [items]
return items[key]
},function(key,items){
//Como remover [item] de [items]
delete items[key]
},function(quededItems,conclusion){
var pool=standarinit.pool
pool.query(`select * from productos_estandares where product in (${quededItems})`,function(er,r){
if(er != null){
console.log(`er`)
console.log(er)
}
conclusion(r)
})
})
module.exports.articulosPreviewPrecioArray=articulosPreviewPrecioArray
module.exports.memories={
articulos:{
objects:articulosMemoryArray,
caracteristics:articulosCaracteristicasArray,
images:articulosImagesMemoryArray,
estandares:articulosEstandaresMemoryArray,
precios:articulosPreviewPrecioArray
}
}
module.exports.articulosImagesMemoryArray=articulosImagesMemoryArray
module.exports.articulos=function(ids,o,fn,promesasholder){
return articulosMemoryArray.items(ids,o,fn,promesasholder)
}
module.exports.articuloByUrl=function(url,pObject,fieldName){
var pool=standarinit.pool
var item=articulosMemoryArray.search(function(obj){
if(obj.url == url){
return true
}
return false
})
if(item == null){
return new Promise(function(accept,reject){
pool.query(`select * from productos where ? `,{url:url},function(er,r){
if(er != null){
console.log(er)
}
articulosMemoryArray.mem(r)
pObject[fieldName]=r[0]
accept(r[0])
})
})
}else{
pObject[fieldName]=item
return item
}
}
module.exports.imagenesDelProducto=function(p){
var pool=standarinit.pool
var id=p.id
if(isNaN(p) == false){
id=p
}
var item=articulosImagesMemoryArray.match(function(obj){
if(obj.id_ == id){
return true
}
return false
})
if(item == null){
return new Promise(function(accept,reject){
pool.query(`select * from mediaresource where id in ( select _id from productos_recursos where id_ = ${id}) `,function(er,r){
if(er != null){
console.log(er)
}
articulosImagesMemoryArray.mem([r])
accept(r)
})
})
}else{
return item
}
}
module.exports.addImagenAlProducto=function(itemId,mediaresourceobj){
var ar=articulosImagesMemoryArray.allObjects[itemId]
if(ar != null){
ar.push(...mediaresourceobj)
}
var inserts=[]
for(var each in mediaresourceobj){
inserts.push([itemId,mediaresourceobj[each].id])
}
var pool=standarinit.pool
if(inserts.length > 0){
pool.query(`insert into productos_recursos(id_,_id) values ? `,[inserts],function(e,r){
console.log(e)
})
}
}
module.exports.caracteristicasDeArticulo=function(p,renderObject,fieldName,promesasholder){
var pool=standarinit.pool
var id=p.id
if(isNaN(p) == false){
id=p
}
var item=articulosCaracteristicasArray.match(function(obj){
if(obj.product == id){
return true
}
return false
})
if(item == null){
promesasholder.push(new Promise(function(accept,reject){
pool.query(`select * from productos_caracteristicas where product = ${id} `,function(er,r){
if(er != null){
console.log(er)
}
renderObject[fieldName]=r
articulosCaracteristicasArray.mem([r])
accept(r)
})
}))
}else{
renderObject[fieldName]=item
return item
}
}
module.exports.estandaresDeArticulo=function(p,renderObject,fieldName,promesasholder){
var pool=standarinit.pool
var id=p.id
if(isNaN(p) == false){
id=p
}
var item=articulosEstandaresMemoryArray.match(function(obj){
if(obj.product == id){
return true
}
return false
})
if(item == null){
promesasholder.push(new Promise(function(accept,reject){
pool.query(`select pe.product,pe.precio,pe.id as id,pe.inventario,pso.texto,pe.moneda from productos_estandares as pe
inner join productos_perfil_regproducts_standaroptions as pso on pso.id = pe.texto
where product = ${id} `,function(er,r){
if(er != null){
console.log(er)
}
renderObject[fieldName]=r
articulosEstandaresMemoryArray.mem([r])
accept(r)
})
}))
}else{
renderObject[fieldName]=item
return item
}
}
module.exports.productFirstImages=function(articulosids){
var pending=[]
var responses={}
for(var each in articulosids){
var id=articulosids[each]
var image=null
articulosImagesMemoryArray.match(function(o){
if(o[0].id_ == id){
image=o[0]._id
return true
}
return false
})
if(image == null){
pending.push(id)
}else{
responses[id]=image
}
}
if(pending.length == 0){
return responses
}else{
return new Promise(function(accept,reject){
var pool=standarinit.pool
pool.query(`select m.url,pr.id_,m.id from productos_recursos as pr
inner join mediaresource as m on m.id = pr._id where pr.id_ in (${articulosids}) `,function(er,r){
if(er != null){
console.log(er)
}
for(var each in r){
var z=r[each]
responses[z.id_]={
id:z.id,
url:z.url
}
}
accept(responses)
})
})
}
}
module.exports.productPreview=function(pid,handler){
var pool=standarinit.pool
var promesas=[]
var o={}
promesas.push(new Promise(function(resolve,reject){
pool.query(`select nombre,descripcion from productos where id = ${pid}`,function(er,r){
if(r.length > 0){
o.nombre=r[0].nombre
o.descripcion=r[0].descripcion
}
resolve()
})
}))
articulosEstandaresMemoryArray.item(pid,o,"estandares",promesas)
Promise.all(promesas).then(function(){
handler(o)
})
}
function articulosParte3(ids,articulosObjects,imageIndications,handlr){
for(var each in articulosObjects){
var x=articulosObjects[each]
x.image=imageIndications[x.id]
}
if(handlr != null){
handlr(articulosObjects)
}
return articulosObjects
}
function articulosparte2(ids,articulosObjects,handlr){
var pf=module.exports.productFirstImages(ids)
if(pf.then != null){
pf.then(function(dapf){
articulosParte3(ids,articulosObjects,dapf,handlr)
})
}else{
return articulosParte3(ids,articulosObjects,pf,handlr)
}
}
module.exports.articulosWithImages=function(ids,handler){
var articulos=module.exports.articulos(ids)
if(articulos.then != null){
articulos.then(function(articulos){
articulosparte2(ids,articulos,handler)
})
return null
}else{
return articulosparte2(ids,articulos,handler)
}
}
module.exports.preciosDeArticulos=function(p,renderObject,fieldName,promesasholder){
articulosPreviewPrecioArray.items(p,renderObject,fieldName,promesasholder)
}