Edit: /tmp/tsx-0/17887-99ad7a3054adda3cebe20d68c0fad0b9df281bea (13028B)
{"code":"__filename=\"/opt/canhelp/apps/api/src/routes/auto-response.ts\";(()=>{\n\"use strict\";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __name=(target,value)=>__defProp(target,\"name\",{value,configurable:true});var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from===\"object\"||typeof from===\"function\"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toCommonJS=mod=>__copyProps(__defProp({},\"__esModule\",{value:true}),mod);var auto_response_exports={};__export(auto_response_exports,{default:()=>auto_response_default,triggerAutoResponses:()=>triggerAutoResponses});module.exports=__toCommonJS(auto_response_exports);var import_hono=require(\"hono\");var import_zod_validator=require(\"@hono/zod-validator\");var import_zod=require(\"zod\");var import_drizzle_orm=require(\"drizzle-orm\");var import_db=require(\"../db.js\");var import_db2=require(\"@canhelp/db\");var import_auth=require(\"../middleware/auth.js\");var import_plan=require(\"../middleware/plan.js\");var import_helper_capability=require(\"../lib/helper-capability.js\");const app=new import_hono.Hono;app.get(\"/\",import_auth.requireAuth,import_plan.withPlan,async c=>{const user=c.get(\"user\");if(!await(0,import_helper_capability.getHelperCapability)(user.id)){return c.json({error:\"Specialists only\"},403)}const plan=c.get(\"plan\");if(!plan?.hasAutoResponse){return c.json({error:\"Auto-response requires Ultimate plan\",code:\"PLAN_UPGRADE_REQUIRED\"},403)}const[settings]=await import_db.db.select().from(import_db2.autoResponseSettings).where((0,import_drizzle_orm.eq)(import_db2.autoResponseSettings.specialistId,user.id));if(!settings){return c.json({isEnabled:false,categories:null,locations:null,minBudget:null,maxBudget:null,defaultPrice:null,defaultMessage:null,maxAutoOffersPerDay:10})}return c.json(settings)});const settingsSchema=import_zod.z.object({isEnabled:import_zod.z.boolean(),categories:import_zod.z.array(import_zod.z.string()).nullable().optional(),locations:import_zod.z.array(import_zod.z.string()).nullable().optional(),minBudget:import_zod.z.number().min(0).nullable().optional(),maxBudget:import_zod.z.number().min(0).nullable().optional(),defaultPrice:import_zod.z.number().min(0).nullable().optional(),defaultMessage:import_zod.z.string().max(1e3).nullable().optional(),maxAutoOffersPerDay:import_zod.z.number().int().min(1).max(100).optional()});app.put(\"/\",import_auth.requireAuth,import_plan.withPlan,(0,import_zod_validator.zValidator)(\"json\",settingsSchema),async c=>{const user=c.get(\"user\");if(!await(0,import_helper_capability.getHelperCapability)(user.id)){return c.json({error:\"Specialists only\"},403)}const plan=c.get(\"plan\");if(!plan?.hasAutoResponse){return c.json({error:\"Auto-response requires Ultimate plan\",code:\"PLAN_UPGRADE_REQUIRED\"},403)}const body=c.req.valid(\"json\");const[existing]=await import_db.db.select({id:import_db2.autoResponseSettings.id}).from(import_db2.autoResponseSettings).where((0,import_drizzle_orm.eq)(import_db2.autoResponseSettings.specialistId,user.id));if(existing){const[updated]=await import_db.db.update(import_db2.autoResponseSettings).set({isEnabled:body.isEnabled,categories:body.categories??null,locations:body.locations??null,minBudget:body.minBudget?.toString()??null,maxBudget:body.maxBudget?.toString()??null,defaultPrice:body.defaultPrice?.toString()??null,defaultMessage:body.defaultMessage??null,maxAutoOffersPerDay:body.maxAutoOffersPerDay??10,updatedAt:new Date}).where((0,import_drizzle_orm.eq)(import_db2.autoResponseSettings.id,existing.id)).returning();return c.json(updated)}const[created]=await import_db.db.insert(import_db2.autoResponseSettings).values({specialistId:user.id,isEnabled:body.isEnabled,categories:body.categories??null,locations:body.locations??null,minBudget:body.minBudget?.toString()??null,maxBudget:body.maxBudget?.toString()??null,defaultPrice:body.defaultPrice?.toString()??null,defaultMessage:body.defaultMessage??null,maxAutoOffersPerDay:body.maxAutoOffersPerDay??10}).returning();return c.json(created,201)});var auto_response_default=app;async function triggerAutoResponses(task){if(!task.category)return 0;const today=new Date().toLocaleDateString(\"sv-SE\",{timeZone:\"Europe/Athens\"});const allSettings=await import_db.db.select().from(import_db2.autoResponseSettings).where((0,import_drizzle_orm.eq)(import_db2.autoResponseSettings.isEnabled,true));if(!allSettings.length)return 0;const specialistIds=allSettings.map(s=>s.specialistId);const specPlans=await import_db.db.select({id:import_db2.users.id,planId:import_db2.users.planId}).from(import_db2.users).where((0,import_drizzle_orm.inArray)(import_db2.users.id,specialistIds));const planIds=[...new Set(specPlans.map(u=>u.planId).filter(Boolean))];const planRows=planIds.length>0?await import_db.db.select({id:import_db2.plans.id,hasAutoResponse:import_db2.plans.hasAutoResponse}).from(import_db2.plans).where((0,import_drizzle_orm.inArray)(import_db2.plans.id,planIds)):[];const planMap=Object.fromEntries(planRows.map(p=>[p.id,p]));const specPlanMap=Object.fromEntries(specPlans.map(u=>[u.id,u.planId]));const matchingCards=await import_db.db.select({specialistId:import_db2.specialistCards.specialistId}).from(import_db2.specialistCards).where((0,import_drizzle_orm.and)((0,import_drizzle_orm.eq)(import_db2.specialistCards.isActive,true),import_drizzle_orm.sql`${task.category} = ANY(${import_db2.specialistCards.categories})`));const matchingSpecIds=new Set(matchingCards.map(c=>c.specialistId));let created=0;for(const settings of allSettings){const userPlanId=specPlanMap[settings.specialistId];if(!userPlanId||!planMap[userPlanId]?.hasAutoResponse)continue;if(settings.specialistId===task.customerId)continue;if(!matchingSpecIds.has(settings.specialistId))continue;if(settings.categories&&settings.categories.length>0){if(!settings.categories.includes(task.category))continue}if(settings.locations&&settings.locations.length>0&&task.location){if(!settings.locations.includes(task.location))continue}const taskBudget=task.budget?Number(task.budget):null;if(settings.minBudget&&taskBudget!==null&&taskBudget
Number(settings.maxBudget))continue;let todayOffers=settings.todayAutoOffers;if(settings.todayDate!==today){todayOffers=0;await import_db.db.update(import_db2.autoResponseSettings).set({todayAutoOffers:0,todayDate:today}).where((0,import_drizzle_orm.eq)(import_db2.autoResponseSettings.id,settings.id))}if(todayOffers>=settings.maxAutoOffersPerDay)continue;const[existingOffer]=await import_db.db.select({id:import_db2.offers.id}).from(import_db2.offers).where((0,import_drizzle_orm.and)((0,import_drizzle_orm.eq)(import_db2.offers.taskId,task.id),(0,import_drizzle_orm.eq)(import_db2.offers.specialistId,settings.specialistId)));if(existingOffer)continue;const price=settings.defaultPrice??task.budget??\"0\";const message=settings.defaultMessage??\"\\u0391\\u03C5\\u03C4\\u03CC\\u03BC\\u03B1\\u03C4\\u03B7 \\u03C0\\u03C1\\u03CC\\u03C4\\u03B1\\u03C3\\u03B7 \\u2014 \\u03B5\\u03BD\\u03B4\\u03B9\\u03B1\\u03C6\\u03AD\\u03C1\\u03BF\\u03BC\\u03B1\\u03B9 \\u03B3\\u03B9\\u03B1 \\u03B1\\u03C5\\u03C4\\u03AE \\u03C4\\u03B7\\u03BD \\u03B5\\u03C1\\u03B3\\u03B1\\u03C3\\u03AF\\u03B1!\";await import_db.db.insert(import_db2.offers).values({taskId:task.id,specialistId:settings.specialistId,price:price.toString(),message,status:\"pending\"});await import_db.db.update(import_db2.autoResponseSettings).set({todayAutoOffers:todayOffers+1,todayDate:today}).where((0,import_drizzle_orm.eq)(import_db2.autoResponseSettings.id,settings.id));created++}return created}__name(triggerAutoResponses,\"triggerAutoResponses\");0&&(module.exports={triggerAutoResponses});\n})()\n","warnings":[],"map":{"version":3,"mappings":";mvBAAA,kNAAqB,gBACrB,yBAA2B,+BAC3B,eAAkB,eAClB,uBAAsC,uBACtC,cAAmB,oBACnB,IAAAA,WAOO,uBACP,gBAAgD,iCAChD,gBAAyB,iCACzB,6BAAoC,uCAEpC,MAAM,IAAM,IAAI,iBAGhB,IAAI,IAAI,IAAK,wBAAa,qBAAU,MAAO,GAAM,CAC/C,MAAM,KAAO,EAAE,IAAI,MAAM,EACzB,GAAI,CAAE,QAAM,8CAAoB,KAAK,EAAE,EAAI,CACzC,OAAO,EAAE,KAAK,CAAE,MAAO,kBAAmB,EAAG,GAAG,CAClD,CAEA,MAAM,KAAO,EAAE,IAAI,MAAe,EAClC,GAAI,CAAC,MAAM,gBAAiB,CAC1B,OAAO,EAAE,KAAK,CAAE,MAAO,uCAAwC,KAAM,uBAAwB,EAAG,GAAG,CACrG,CAEA,KAAM,CAAC,QAAQ,EAAI,MAAM,aACtB,OAAO,EACP,KAAK,+BAAoB,EACzB,SAAM,uBAAG,gCAAqB,aAAc,KAAK,EAAE,CAAC,EAEvD,GAAI,CAAC,SAAU,CACb,OAAO,EAAE,KAAK,CACZ,UAAW,MACX,WAAY,KACZ,UAAW,KACX,UAAW,KACX,UAAW,KACX,aAAc,KACd,eAAgB,KAChB,oBAAqB,EACvB,CAAC,CACH,CAEA,OAAO,EAAE,KAAK,QAAQ,CACxB,CAAC,EAGD,MAAM,eAAiB,aAAE,OAAO,CAC9B,UAAW,aAAE,QAAQ,EACrB,WAAY,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,EACpD,UAAW,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS,EAAE,SAAS,EACnD,UAAW,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EACjD,UAAW,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EACjD,aAAc,aAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EACpD,eAAgB,aAAE,OAAO,EAAE,IAAI,GAAI,EAAE,SAAS,EAAE,SAAS,EACzD,oBAAqB,aAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS,CACjE,CAAC,EAED,IAAI,IAAI,IAAK,wBAAa,wBAAU,iCAAW,OAAQ,cAAc,EAAG,MAAO,GAAM,CACnF,MAAM,KAAO,EAAE,IAAI,MAAM,EACzB,GAAI,CAAE,QAAM,8CAAoB,KAAK,EAAE,EAAI,CACzC,OAAO,EAAE,KAAK,CAAE,MAAO,kBAAmB,EAAG,GAAG,CAClD,CAEA,MAAM,KAAO,EAAE,IAAI,MAAe,EAClC,GAAI,CAAC,MAAM,gBAAiB,CAC1B,OAAO,EAAE,KAAK,CAAE,MAAO,uCAAwC,KAAM,uBAAwB,EAAG,GAAG,CACrG,CAEA,MAAM,KAAO,EAAE,IAAI,MAAM,MAAM,EAE/B,KAAM,CAAC,QAAQ,EAAI,MAAM,aACtB,OAAO,CAAE,GAAI,gCAAqB,EAAG,CAAC,EACtC,KAAK,+BAAoB,EACzB,SAAM,uBAAG,gCAAqB,aAAc,KAAK,EAAE,CAAC,EAEvD,GAAI,SAAU,CACZ,KAAM,CAAC,OAAO,EAAI,MAAM,aACrB,OAAO,+BAAoB,EAC3B,IAAI,CACH,UAAW,KAAK,UAChB,WAAY,KAAK,YAAc,KAC/B,UAAW,KAAK,WAAa,KAC7B,UAAW,KAAK,WAAW,SAAS,GAAK,KACzC,UAAW,KAAK,WAAW,SAAS,GAAK,KACzC,aAAc,KAAK,cAAc,SAAS,GAAK,KAC/C,eAAgB,KAAK,gBAAkB,KACvC,oBAAqB,KAAK,qBAAuB,GACjD,UAAW,IAAI,IACjB,CAAC,EACA,SAAM,uBAAG,gCAAqB,GAAI,SAAS,EAAE,CAAC,EAC9C,UAAU,EACb,OAAO,EAAE,KAAK,OAAO,CACvB,CAEA,KAAM,CAAC,OAAO,EAAI,MAAM,aACrB,OAAO,+BAAoB,EAC3B,OAAO,CACN,aAAc,KAAK,GACnB,UAAW,KAAK,UAChB,WAAY,KAAK,YAAc,KAC/B,UAAW,KAAK,WAAa,KAC7B,UAAW,KAAK,WAAW,SAAS,GAAK,KACzC,UAAW,KAAK,WAAW,SAAS,GAAK,KACzC,aAAc,KAAK,cAAc,SAAS,GAAK,KAC/C,eAAgB,KAAK,gBAAkB,KACvC,oBAAqB,KAAK,qBAAuB,EACnD,CAAC,EACA,UAAU,EAEb,OAAO,EAAE,KAAK,QAAS,GAAG,CAC5B,CAAC,EAED,IAAO,sBAAQ,IAKf,eAAsB,qBAAqB,KAOvB,CAClB,GAAI,CAAC,KAAK,SAAU,MAAO,GAE3B,MAAM,MAAQ,IAAI,KAAK,EAAE,mBAAmB,QAAS,CAAE,SAAU,eAAgB,CAAC,EAGlF,MAAM,YAAc,MAAM,aACvB,OAAO,EACP,KAAK,+BAAoB,EACzB,SAAM,uBAAG,gCAAqB,UAAW,IAAI,CAAC,EAEjD,GAAI,CAAC,YAAY,OAAQ,MAAO,GAGhC,MAAM,cAAgB,YAAY,IAAK,GAAM,EAAE,YAAY,EAC3D,MAAM,UAAY,MAAM,aACrB,OAAO,CAAE,GAAI,iBAAM,GAAI,OAAQ,iBAAM,MAAO,CAAC,EAC7C,KAAK,gBAAK,EACV,SAAM,4BAAQ,iBAAM,GAAI,aAAa,CAAC,EAEzC,MAAM,QAAU,CAAC,GAAG,IAAI,IAAI,UAAU,IAAK,GAAM,EAAE,MAAM,EAAE,OAAO,OAAO,CAAC,CAAC,EAC3E,MAAM,SAAW,QAAQ,OAAS,EAC9B,MAAM,aAAG,OAAO,CAAE,GAAI,iBAAM,GAAI,gBAAiB,iBAAM,eAAgB,CAAC,EAAE,KAAK,gBAAK,EAAE,SAAM,4BAAQ,iBAAM,GAAI,OAAO,CAAC,EACtH,CAAC,EACL,MAAM,QAAU,OAAO,YAAY,SAAS,IAAK,GAAM,CAAC,EAAE,GAAI,CAAC,CAAC,CAAC,EACjE,MAAM,YAAc,OAAO,YAAY,UAAU,IAAK,GAAM,CAAC,EAAE,GAAI,EAAE,MAAM,CAAC,CAAC,EAG7E,MAAM,cAAgB,MAAM,aACzB,OAAO,CAAE,aAAc,2BAAgB,YAAa,CAAC,EACrD,KAAK,0BAAe,EACpB,SACC,2BACE,uBAAG,2BAAgB,SAAU,IAAI,EACjC,yBAAM,KAAK,QAAQ,UAAU,2BAAgB,UAAU,GACzD,CACF,EACF,MAAM,gBAAkB,IAAI,IAAI,cAAc,IAAK,GAAM,EAAE,YAAY,CAAC,EAExE,IAAI,QAAU,EAEd,UAAW,YAAY,YAAa,CAElC,MAAM,WAAa,YAAY,SAAS,YAAY,EACpD,GAAI,CAAC,YAAc,CAAC,QAAQ,UAAU,GAAG,gBAAiB,SAG1D,GAAI,SAAS,eAAiB,KAAK,WAAY,SAG/C,GAAI,CAAC,gBAAgB,IAAI,SAAS,YAAY,EAAG,SAGjD,GAAI,SAAS,YAAc,SAAS,WAAW,OAAS,EAAG,CACzD,GAAI,CAAC,SAAS,WAAW,SAAS,KAAK,QAAS,EAAG,QACrD,CAGA,GAAI,SAAS,WAAa,SAAS,UAAU,OAAS,GAAK,KAAK,SAAU,CACxE,GAAI,CAAC,SAAS,UAAU,SAAS,KAAK,QAAQ,EAAG,QACnD,CAGA,MAAM,WAAa,KAAK,OAAS,OAAO,KAAK,MAAM,EAAI,KACvD,GAAI,SAAS,WAAa,aAAe,MAAQ,WAAa,OAAO,SAAS,SAAS,EAAG,SAC1F,GAAI,SAAS,WAAa,aAAe,MAAQ,WAAa,OAAO,SAAS,SAAS,EAAG,SAG1F,IAAI,YAAc,SAAS,gBAC3B,GAAI,SAAS,YAAc,MAAO,CAChC,YAAc,EACd,MAAM,aACH,OAAO,+BAAoB,EAC3B,IAAI,CAAE,gBAAiB,EAAG,UAAW,KAAM,CAAC,EAC5C,SAAM,uBAAG,gCAAqB,GAAI,SAAS,EAAE,CAAC,CACnD,CACA,GAAI,aAAe,SAAS,oBAAqB,SAGjD,KAAM,CAAC,aAAa,EAAI,MAAM,aAC3B,OAAO,CAAE,GAAI,kBAAO,EAAG,CAAC,EACxB,KAAK,iBAAM,EACX,SAAM,2BAAI,uBAAG,kBAAO,OAAQ,KAAK,EAAE,KAAG,uBAAG,kBAAO,aAAc,SAAS,YAAY,CAAC,CAAC,EACxF,GAAI,cAAe,SAGnB,MAAM,MAAQ,SAAS,cAAgB,KAAK,QAAU,IACtD,MAAM,QAAU,SAAS,gBAAkB,yRAE3C,MAAM,aAAG,OAAO,iBAAM,EAAE,OAAO,CAC7B,OAAQ,KAAK,GACb,aAAc,SAAS,aACvB,MAAO,MAAM,SAAS,EACtB,QACA,OAAQ,SACV,CAAC,EAGD,MAAM,aACH,OAAO,+BAAoB,EAC3B,IAAI,CACH,gBAAiB,YAAc,EAC/B,UAAW,KACb,CAAC,EACA,SAAM,uBAAG,gCAAqB,GAAI,SAAS,EAAE,CAAC,EAEjD,SACF,CAEA,OAAO,OACT,CArHsB","names":["import_db"],"ignoreList":[],"sources":["/opt/canhelp/apps/api/src/routes/auto-response.ts"],"sourcesContent":[null]}}