@fayz-ai/shop 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -176,6 +176,7 @@ function now() {
176
176
  }
177
177
  var ORDERS_KEY = "fayz.shop.mock.orders.v1";
178
178
  var CUSTOMERS_KEY = "fayz.shop.mock.customers.v1";
179
+ var ENQUIRIES_KEY = "fayz.shop.mock.enquiries.v1";
179
180
  function loadStored(key) {
180
181
  try {
181
182
  if (typeof localStorage === "undefined") return [];
@@ -196,6 +197,7 @@ var MockShopProvider = class {
196
197
  constructor(seed) {
197
198
  this.orders = loadStored(ORDERS_KEY);
198
199
  this.customers = loadStored(CUSTOMERS_KEY);
200
+ this.enquiries = loadStored(ENQUIRIES_KEY);
199
201
  this.products = (seed?.products ?? MOCK_PRODUCTS).map((p) => ({ ...p }));
200
202
  this.categories = (seed?.categories ?? MOCK_CATEGORIES).map((c) => ({ ...c }));
201
203
  this.discounts = (seed?.discounts ?? MOCK_DISCOUNTS).map((d) => ({ ...d }));
@@ -208,12 +210,18 @@ var MockShopProvider = class {
208
210
  syncCustomers() {
209
211
  this.customers = loadStored(CUSTOMERS_KEY);
210
212
  }
213
+ syncEnquiries() {
214
+ this.enquiries = loadStored(ENQUIRIES_KEY);
215
+ }
211
216
  persistOrders() {
212
217
  store(ORDERS_KEY, this.orders);
213
218
  }
214
219
  persistCustomers() {
215
220
  store(CUSTOMERS_KEY, this.customers);
216
221
  }
222
+ persistEnquiries() {
223
+ store(ENQUIRIES_KEY, this.enquiries);
224
+ }
217
225
  // ---------------------------------------------------------------------------
218
226
  // Products
219
227
  // ---------------------------------------------------------------------------
@@ -268,6 +276,44 @@ var MockShopProvider = class {
268
276
  }
269
277
  async deleteProductImage(_imageId) {
270
278
  }
279
+ async createProductEnquiry(input) {
280
+ this.syncEnquiries();
281
+ const ts = now();
282
+ const enquiry = {
283
+ id: uid(),
284
+ tenantId: "mock",
285
+ productId: input.productId ?? null,
286
+ productName: input.productName,
287
+ productSlug: input.productSlug ?? null,
288
+ customerName: input.customerName,
289
+ customerEmail: input.customerEmail,
290
+ customerPhone: input.customerPhone ?? null,
291
+ subject: input.subject ?? null,
292
+ message: input.message,
293
+ sourceUrl: input.sourceUrl ?? null,
294
+ status: "new",
295
+ metadata: input.metadata ?? {},
296
+ createdAt: ts,
297
+ updatedAt: ts
298
+ };
299
+ this.enquiries.unshift(enquiry);
300
+ this.persistEnquiries();
301
+ return enquiry;
302
+ }
303
+ async listProductEnquiries(opts) {
304
+ this.syncEnquiries();
305
+ let list = [...this.enquiries];
306
+ if (opts?.productId) list = list.filter((e) => e.productId === opts.productId);
307
+ if (opts?.customerEmail) {
308
+ const email = opts.customerEmail.toLowerCase();
309
+ list = list.filter((e) => e.customerEmail.toLowerCase() === email);
310
+ }
311
+ if (opts?.status) list = list.filter((e) => e.status === opts.status);
312
+ list.sort((a, b) => b.createdAt.localeCompare(a.createdAt));
313
+ const offset = opts?.offset ?? 0;
314
+ if (offset || opts?.limit) list = list.slice(offset, opts?.limit ? offset + opts.limit : void 0);
315
+ return list;
316
+ }
271
317
  // ---------------------------------------------------------------------------
272
318
  // Categories
273
319
  // ---------------------------------------------------------------------------