@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.cjs CHANGED
@@ -178,6 +178,7 @@ function now() {
178
178
  }
179
179
  var ORDERS_KEY = "fayz.shop.mock.orders.v1";
180
180
  var CUSTOMERS_KEY = "fayz.shop.mock.customers.v1";
181
+ var ENQUIRIES_KEY = "fayz.shop.mock.enquiries.v1";
181
182
  function loadStored(key) {
182
183
  try {
183
184
  if (typeof localStorage === "undefined") return [];
@@ -198,6 +199,7 @@ var MockShopProvider = class {
198
199
  constructor(seed) {
199
200
  this.orders = loadStored(ORDERS_KEY);
200
201
  this.customers = loadStored(CUSTOMERS_KEY);
202
+ this.enquiries = loadStored(ENQUIRIES_KEY);
201
203
  this.products = (seed?.products ?? MOCK_PRODUCTS).map((p) => ({ ...p }));
202
204
  this.categories = (seed?.categories ?? MOCK_CATEGORIES).map((c) => ({ ...c }));
203
205
  this.discounts = (seed?.discounts ?? MOCK_DISCOUNTS).map((d) => ({ ...d }));
@@ -210,12 +212,18 @@ var MockShopProvider = class {
210
212
  syncCustomers() {
211
213
  this.customers = loadStored(CUSTOMERS_KEY);
212
214
  }
215
+ syncEnquiries() {
216
+ this.enquiries = loadStored(ENQUIRIES_KEY);
217
+ }
213
218
  persistOrders() {
214
219
  store(ORDERS_KEY, this.orders);
215
220
  }
216
221
  persistCustomers() {
217
222
  store(CUSTOMERS_KEY, this.customers);
218
223
  }
224
+ persistEnquiries() {
225
+ store(ENQUIRIES_KEY, this.enquiries);
226
+ }
219
227
  // ---------------------------------------------------------------------------
220
228
  // Products
221
229
  // ---------------------------------------------------------------------------
@@ -270,6 +278,44 @@ var MockShopProvider = class {
270
278
  }
271
279
  async deleteProductImage(_imageId) {
272
280
  }
281
+ async createProductEnquiry(input) {
282
+ this.syncEnquiries();
283
+ const ts = now();
284
+ const enquiry = {
285
+ id: uid(),
286
+ tenantId: "mock",
287
+ productId: input.productId ?? null,
288
+ productName: input.productName,
289
+ productSlug: input.productSlug ?? null,
290
+ customerName: input.customerName,
291
+ customerEmail: input.customerEmail,
292
+ customerPhone: input.customerPhone ?? null,
293
+ subject: input.subject ?? null,
294
+ message: input.message,
295
+ sourceUrl: input.sourceUrl ?? null,
296
+ status: "new",
297
+ metadata: input.metadata ?? {},
298
+ createdAt: ts,
299
+ updatedAt: ts
300
+ };
301
+ this.enquiries.unshift(enquiry);
302
+ this.persistEnquiries();
303
+ return enquiry;
304
+ }
305
+ async listProductEnquiries(opts) {
306
+ this.syncEnquiries();
307
+ let list = [...this.enquiries];
308
+ if (opts?.productId) list = list.filter((e) => e.productId === opts.productId);
309
+ if (opts?.customerEmail) {
310
+ const email = opts.customerEmail.toLowerCase();
311
+ list = list.filter((e) => e.customerEmail.toLowerCase() === email);
312
+ }
313
+ if (opts?.status) list = list.filter((e) => e.status === opts.status);
314
+ list.sort((a, b) => b.createdAt.localeCompare(a.createdAt));
315
+ const offset = opts?.offset ?? 0;
316
+ if (offset || opts?.limit) list = list.slice(offset, opts?.limit ? offset + opts.limit : void 0);
317
+ return list;
318
+ }
273
319
  // ---------------------------------------------------------------------------
274
320
  // Categories
275
321
  // ---------------------------------------------------------------------------