UNPKG

plxdcma_eshop

Version:

Instala todo lo necesario para una tienda virtual

397 lines (374 loc) 10.3 kB
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) }