Files
machartaa_admin_dist/dist/assets/products-d87b587c.js
T
2026-10-04 13:31:09 +03:30

2 lines
10 KiB
JavaScript

import{O as f,_ as E,I as m,J as w,K as g}from"./index-c678e119.js";import{formatTableResult as L}from"./supabaseTableQuery-e9feb810.js";const V="*, product_attributes(*, attributes(*)), variants(*, variant_attribute_values(*))",O=new Set(["description","price","sku","is_active","code","title","title_fa","brand_id","collection_id","body","original_image","is_show","display_price","count_order","count_fav","count_view","count","seo_title","meta","min_price","max_price","type","files","owner_id","discount","discount_type","box_size","sell_type","weight","product_type","rial_fee","percent_fee","auto_calculate","is_exist","post_shipping_cost","max_qty_per_order"]);function P(t){var e;return(((e=t.variants)==null?void 0:e.length)??0)>0||t.type==="variant"}function v(t,e){const n=t.price!=null?Number(t.price):0;return n>0?n:Number(e??0)}function R(t,e,n){const i=t.discount!=null?Number(t.discount):0;if(i>0)return{discount:i,discount_type:t.discount_type??"percent"};const s=e!=null?Number(e):0;return s>0?{discount:s,discount_type:n??"percent"}:{discount:null,discount_type:null}}function S(t,e,n,i){const s=t.map(o=>v(o,i)),r=s.length?Math.min(...s):0,u=s.length?Math.max(...s):0;if((e??0)>0){const o=t.map(c=>b(v(c,i),e,n??"percent")),a=t.map(c=>{const d=v(c,i),_=R(c,e,n);return b(d,_.discount,_.discount_type)});return{price:r,display_price:o.length?Math.min(...o):r,min_price:a.length?Math.min(...a):r,max_price:a.length?Math.max(...a):u,discount:e??null,discount_type:n??"percent"}}return{price:r,display_price:r,min_price:r,max_price:u,discount:null,discount_type:null}}function A(t){const e=P(t),n=new Set(["count","display_price","min_price","max_price","price"]),i={};for(const[s,r]of Object.entries(t))!O.has(s)||r===void 0||e&&n.has(s)||(i[s]=r);if(i.type=e?"variant":"simple",i.max_qty_per_order!=null){const s=Number(i.max_qty_per_order);i.max_qty_per_order=Number.isFinite(s)&&s>0?s:null}if(e){const s=t.variants??[],r=t.discount!=null?Number(t.discount):null,u=t.discount?t.discount_type??"percent":null,l=t.price!=null?Number(t.price):null,o=S(s,r,u,l),a=s.map(c=>Number(c.stock??0));i.price=o.price,i.discount=o.discount,i.discount_type=o.discount_type,i.count=a.reduce((c,d)=>c+d,0),i.display_price=o.display_price,i.min_price=o.min_price,i.max_price=o.max_price,i.is_exist=a.length?a.some(c=>c>0):t.is_exist??!0}else{const s=Number(t.price??0),r=t.discount!=null?Number(t.discount):null,u=t.discount_type??"percent";i.price=s,i.display_price=b(s,r,u),i.min_price=i.display_price,i.max_price=i.display_price}return i}function b(t,e,n){const i=Number(t??0),s=Number(e??0);return s?n==="percent"?Math.max(0,Math.round(i*(100-s)/100)):Math.max(0,i-s):i}function k(t){if(t==null||t==="")return null;const e=Number(t);return Number.isFinite(e)?e:null}function F(t=[]){return[...t].sort((e,n)=>{const i=e.sort_order??Number(e.id??0),s=n.sort_order??Number(n.id??0);return i!==s?i-s:Number(e.id??0)-Number(n.id??0)})}function C(t){const e=((t==null?void 0:t.variant_attribute_values)??[]).map(n=>{var i;return n.attribute_value_id??((i=n.attribute_values)==null?void 0:i.id)}).filter(n=>n!=null);return{id:k(t.id),sku:t.sku??"",price:t.price??0,box_price:t.box_price??t.price??0,stock:t.stock??0,discount:t.discount??void 0,discount_type:t.discount_type??"percent",is_default:t.is_default??!1,sort_order:t.sort_order??null,attribute_values:e,attribute_values_name:[]}}function M(t){const e=new Map;for(const n of t){if(n.attribute_id==null)continue;const i=(n.attribute_values??[]).filter(r=>r!=null),s=e.get(n.attribute_id);if(!s){e.set(n.attribute_id,{id:n.id,attribute_id:n.attribute_id,use_in_product_page:n.use_in_product_page??!0,use_in_variant:n.use_in_variant??!1,attribute_values:[...i]});continue}s.attribute_values=[...new Set([...s.attribute_values??[],...i])],s.use_in_variant=s.use_in_variant||n.use_in_variant,s.use_in_product_page=s.use_in_product_page||n.use_in_product_page}return[...e.values()]}function z(t){const e=(t==null?void 0:t.variants)??[];return e.length>0?e.reduce((n,i)=>n+Number(i.stock??0),0):Number((t==null?void 0:t.count)??0)}function y(t){var i;if(!t)return t;const e=(((i=t.variants)==null?void 0:i.length)??0)>0||t.type==="variant",n={...t,type:e?"variant":"simple",product_attributes:M(t.product_attributes??[]),variants:F((t.variants??[]).map(C))};return n.count=z(n),n.is_exist=n.count>0,n}async function U(){const t=await adminResourceList("attribute_values"),e=Array.isArray(t)?t:[];return new Map(e.map(n=>[n.id,n.attribute_id]))}async function B(t=[]){const e=await adminResourceList("attributes"),n=Array.isArray(e)?e:[],i=new Map(n.map(r=>[String(r.name).trim().toLowerCase(),r.id])),s=[];for(const r of t){if(r.attribute_id!=null){s.push(r);continue}const u=(r.attribute_name??"").trim();if(!u)continue;const l=u.toLowerCase();let o=i.get(l);o==null&&(o=(await m("attributes",{name:u})).id,i.set(l,o)),s.push({...r,attribute_id:o,is_new:!1})}return s}async function D(t,e){const i=(await f("attribute_values",{filters:[{field:"attribute_id",op:"eq",value:t}],limit:5e3,page:1})).rows||[],s=new Map(i.map(u=>[u.value,u.id])),r=[];for(const u of e){if(u==null||u==="")continue;if(typeof u=="number"){r.push(u);continue}const l=String(u).trim();if(!l)continue;const o=s.get(l);if(o!=null){r.push(o);continue}const a=await m("attribute_values",{attribute_id:t,value:l});s.set(l,a.id),r.push(a.id)}return[...new Set(r)]}async function G(t=[]){const e=[];for(const n of t){if(n.attribute_id==null){e.push(n);continue}const i=await D(n.attribute_id,n.attribute_values??[]);e.push({...n,attribute_values:i})}return e}async function j(t=[],e=[]){const n=[];for(const i of t){const s=[];for(const r of i.attribute_values??[]){if(r==null||r==="")continue;if(typeof r=="number"){s.push(r);continue}const u=String(r).trim();if(!u)continue;const l=e.find(a=>(a.attribute_values??[]).some(c=>c===r||c===u));if(!(l!=null&&l.attribute_id))continue;const o=await D(l.attribute_id,[u]);s.push(...o)}n.push({...i,attribute_values:[...new Set(s)]})}return n}async function p(t,e,n){const i=Array.isArray(n)?n:[n];if(!i.length)return;const s=await f(t,{includeIn:{field:e,values:i.map(String)},limit:5e3,page:1,select:["id"]});for(const r of s.rows||[])await g(t,r.id)}async function J(t,e=[],n=[]){await p("product_attributes","product_id",t);const i=await U(),r=M(e).filter(u=>u.attribute_id!=null).map(u=>{let l=(u.attribute_values??[]).filter(o=>o!=null);if(u.use_in_variant){const o=new Set;n.forEach(a=>{(a.attribute_values??[]).forEach(c=>{const d=typeof c=="number"?c:c==null?void 0:c.id;d!=null&&i.get(d)===u.attribute_id&&o.add(d)})}),l=[...new Set([...l,...o])]}return{product_id:t,attribute_id:u.attribute_id,use_in_product_page:u.use_in_product_page??!0,use_in_variant:u.use_in_variant??!1,attribute_values:l}});r.length&&await m("product_attributes",r)}function K(t,e,n,i,s,r){const u=v(e,r),l=Number(e.stock??0),o=e.discount!=null?Number(e.discount):null,a=e.discount_type??"percent",c=R(e,i,s),d=b(u,c.discount,c.discount_type);return{product_id:t,sku:e.sku??"",price:u,stock:l,discount:o,discount_type:o?a:null,is_default:e.is_default??!1,sort_order:n,display_price:d,is_exist:l>0,auto_calculate:!1,weight:0}}async function N(t,e){await p("variant_attribute_values","variant_id",t);const n=(e.attribute_values??[]).map(i=>typeof i=="number"?i:i==null?void 0:i.id).filter(i=>i!=null);n.length&&await m("variant_attribute_values",n.map(i=>({variant_id:t,attribute_value_id:i})))}async function Y(t,e=[],n,i,s){const r=await f("variants",{filters:[{field:"product_id",op:"eq",value:t}],limit:5e3,page:1,select:["id"]}),u=new Set((r.rows??[]).map(a=>Number(a.id))),l=new Set;for(const[a,c]of e.entries()){const d=K(t,c,a,n,i,s),_=k(c.id);if(_!=null&&u.has(_)){await w("variants",_,d),l.add(_),await N(_,c);continue}const q=await m("variants",d),x=Number(q.id);l.add(x),await N(x,c)}const o=[...u].filter(a=>!l.has(a));if(o.length){await p("variant_attribute_values","variant_id",o);for(const a of o)await g("variants",a)}}async function I(t,e){const n=P(e),i=await B(e.product_attributes??[]),s=await G(i),r=await j(e.variants??[],i),u=e.discount!=null?Number(e.discount):null,l=e.discount?e.discount_type??"percent":null,o=e.price!=null?Number(e.price):null;if(await J(t,s,r),n)await Y(t,r,u,l,o);else{const d=((await f("variants",{filters:[{field:"product_id",op:"eq",value:t}],limit:5e3,page:1,select:["id"]})).rows??[]).map(_=>_.id);d.length&&(await p("variant_attribute_values","variant_id",d),await p("variants","product_id",t))}const a={type:n?"variant":"simple"};if(n){const c=S(r??[],u,l,o),d=(r??[]).map(_=>Number(_.stock??0));a.price=c.price,a.display_price=c.display_price,a.min_price=c.min_price,a.max_price=c.max_price,a.discount=c.discount,a.discount_type=c.discount_type,d.length&&(a.count=d.reduce((_,h)=>_+h,0),a.is_exist=d.some(_=>_>0))}else{const c=Number(e.price??0),d=e.discount!=null?Number(e.discount):null,_=e.discount_type??"percent";a.display_price=b(c,d,_),a.min_price=a.display_price,a.max_price=a.display_price}await w("products",t,a)}async function W(){return((await f("products",{select:[V],limit:5e3,page:1})).rows??[]).map(y)}async function T(t){var i;const n=(i=(await f("products",{filters:[{field:"id",op:"eq",value:t}],select:[V],limit:1,page:1})).rows)==null?void 0:i[0];if(!n)throw new Error("Product not found");return y(n)}async function X(t){const e=A(t),n=await m("products",e);return await I(String(n.id),t),T(n.id)}async function Z(t,e){const n=A(e);return await w("products",t,n),await I(String(t),e),T(t)}async function $(t){const e=String(t),i=((await f("variants",{filters:[{field:"product_id",op:"eq",value:e}],limit:5e3,page:1,select:["id"]})).rows??[]).map(s=>s.id);i.length&&await p("variant_attribute_values","variant_id",i),await p("variants","product_id",e),await p("product_attributes","product_id",e),await g("products",t)}async function tt(t){var s;const{TableEngineShopRequest:e}=await E(()=>import("./buildSupabaseQuery-72aac971.js"),["assets/buildSupabaseQuery-72aac971.js","assets/index-c678e119.js","assets/index-0d7ad6b5.css"]),n={...t};!n.sort&&!n.order&&(n.order="-id");const i=await e(n,"products");return L((i==null?void 0:i.rows)||[],((s=i==null?void 0:i.query)==null?void 0:s.total)??0,t,y)}export{X as a,T as b,W as c,$ as d,tt as g,Z as u};