{"version":3,"mappings":"2NAiBA,GAAaA,IAAW,KAAlB,KAAOA,EAAW,CA6BtBC,YAAoBC,EAA0BC,EAA0B,CAApD,KAAAD,OAA0B,KAAAC,eA5B9C,KAAAC,UAAYC,EAAYC,IAAM,OAC9B,KAAAC,aAAeC,EACf,KAAAC,KAAOC,EAA4B,IAAI,EAEvC,KAAAC,YAAcD,EAAsB,EAAE,EACtC,KAAAE,aAAeC,EAAa,KAAKF,WAAW,EAC5C,KAAAG,QAAUJ,EAAsB,EAAE,EAClC,KAAAK,SAAWF,EAAa,KAAKC,OAAO,EACpC,KAAAE,UAAYN,EAAsB,EAAE,EACpC,KAAAO,WAAaJ,EAAa,KAAKG,SAAS,EAExC,KAAAE,cAAgBR,EAAO,CAAC,EACxB,KAAAS,eAAiBN,EAAa,KAAKK,aAAa,EAChD,KAAAE,SAAWV,EAAO,CAAC,EACnB,KAAAW,UAAYR,EAAa,KAAKO,QAAQ,EACtC,KAAAE,WAAaZ,EAAO,CAAC,EACrB,KAAAa,YAAcV,EAAa,KAAKS,UAAU,EAE1C,KAAAE,QAAUd,EAAgB,EAAK,EAC/B,KAAAe,SAAWZ,EAAa,KAAKW,OAAO,EACpC,KAAAE,QAAUhB,EAA2B,IAAI,EACzC,KAAAiB,SAAWd,EAAa,KAAKa,OAAO,EACpC,KAAAE,SAAWlB,EAAwB,IAAI,EACvC,KAAAmB,SAAWnB,EAAgB,EAAK,EAChC,KAAAoB,YAAcpB,EAAsB,IAAI,EAExC,KAAAqB,YAAcrB,EAAgB,EAAK,CAGnC,EAEAsB,IAAIC,EAAiB,CACf,KAAKxB,KAAI,IAAO,KAAKF,aAAa2B,UACpC,KAAKvB,YAAW,EAAGwB,KAAKF,CAAI,EAC5BG,aAAaC,QAAQ,sBAAuBC,KAAKC,UAAU,KAAK5B,YAAW,CAAE,CAAC,GACrE,KAAKF,KAAI,IAAO,KAAKF,aAAaiC,cAC3C,KAAK1B,QAAO,EAAGqB,KAAKF,CAAI,EACxBG,aAAaC,QAAQ,iBAAkBC,KAAKC,UAAU,KAAKzB,QAAO,CAAE,CAAC,IAErE,KAAKE,UAAS,EAAGmB,KAAKF,CAAI,EAC1BG,aAAaC,QAAQ,mBAAoBC,KAAKC,UAAU,KAAKvB,UAAS,CAAE,CAAC,EAE7E,EAEAyB,KAAKC,EAAmBC,EAAe,CACrC,GAAMlC,GAAO,KAAKA,KAAI,EAChBmC,EAAanC,IAAS,KAAKF,aAAa2B,SAC1CW,EAOJ,GANIpC,EACFoC,EAAOD,EAAa,KAAKjC,YAAW,EAAG,KAAKmB,YAAW,CAAG,EAAI,KAAKhB,QAAO,EAAG,KAAKgB,YAAW,CAAG,EAEhGe,EAAO,KAAK7B,UAAS,EAAG,KAAKc,YAAW,CAAG,EAGzCe,EAAM,CACR,GAAMC,GAAgBJ,EAAQI,cACxBC,EAAkBC,OAAON,GAASK,iBAAiBE,QAAQ,MAAO,EAAE,CAAC,EACrEC,EAAWR,EAAQQ,SAEzB,GAAIN,EAAY,CACd,GAAMO,GAAWJ,EAAkBD,EAAgB,IAAQI,EAC3DR,EAAQU,MAAQP,EAAKQ,KAAQF,CAC/B,MAAO,CACL,GAAMG,GAAUR,EAAgB,KAAKpB,QAAO,GAAIoB,cAAiBC,EAAmBG,EACpFR,EAAQU,MAAQP,EAAKQ,KAAQC,CAC/B,EAEAT,EAAKU,SAAWb,EAChBG,EAAKW,yBAA2Bb,CAClC,EAEI,KAAKlC,KAAI,IAAO,KAAKF,aAAa2B,UACpC,KAAKhB,cAAcuC,IAAI,KAAK9C,YAAW,EAAG+C,IAAKC,GAAWA,EAAEJ,SAASH,KAAK,EAAEQ,OAAO,CAACC,EAAQC,IAAWD,EAAIC,EAAG,CAAC,CAAC,EAChH1B,aAAaC,QAAQ,sBAAuBC,KAAKC,UAAU,KAAK5B,YAAW,CAAE,CAAC,GACrE,KAAKF,KAAI,IAAO,KAAKF,aAAaiC,cAC3C,KAAKpB,SAASqC,IAAI,KAAK3C,QAAO,EAAG4C,IAAKC,GAAWA,EAAEJ,SAASH,KAAK,EAAEQ,OAAO,CAACC,EAAQC,IAAWD,EAAIC,EAAG,CAAC,CAAC,EACvG1B,aAAaC,QAAQ,iBAAkBC,KAAKC,UAAU,KAAKzB,QAAO,CAAE,CAAC,IAErE,KAAKQ,WAAWmC,IAAI,KAAKzC,UAAS,EAAG0C,IAAKC,GAAWA,EAAEJ,SAASH,KAAK,EAAEQ,OAAO,CAACC,EAAQC,IAAWD,EAAIC,EAAG,CAAC,CAAC,EAC3G1B,aAAaC,QAAQ,mBAAoBC,KAAKC,UAAU,KAAKvB,UAAS,CAAE,CAAC,EAE7E,EAEA+C,OAAOlB,EAAWpC,EAA0B,CAC1C,GAAIA,IAAS,KAAKF,aAAa2B,SAAU,CACvC,GAAM8B,GAAQ,KAAKrD,YAAW,EAAGsD,QAAQpB,CAAI,EACzCmB,IAAU,IACZ,KAAKrD,YAAW,EAAGuD,OAAOF,EAAO,CAAC,EAEpC5B,aAAaC,QAAQ,sBAAuBC,KAAKC,UAAU,KAAK5B,YAAW,CAAE,CAAC,CAChF,UAAWF,IAAS,KAAKF,aAAaiC,aAAc,CAClD,GAAMwB,GAAQ,KAAKlD,QAAO,EAAGmD,QAAQpB,CAAI,EACrCmB,IAAU,IACZ,KAAKlD,QAAO,EAAGoD,OAAOF,EAAO,CAAC,EAEhC5B,aAAaC,QAAQ,iBAAkBC,KAAKC,UAAU,KAAKzB,QAAO,CAAE,CAAC,CACvE,MAAO,CACL,GAAMkD,GAAQ,KAAKhD,UAAS,EAAGiD,QAAQpB,CAAI,EACvCmB,IAAU,IACZ,KAAKhD,UAAS,EAAGkD,OAAOF,EAAO,CAAC,EAElC5B,aAAaC,QAAQ,mBAAoBC,KAAKC,UAAU,KAAKvB,UAAS,CAAE,CAAC,CAC3E,EACF,CAEAmD,KAAKzC,EAAsBjB,EAAqB2D,EAA+B,CACzE3D,GACF,KAAKA,KAAKgD,IAAIhD,CAAI,EACpB,KAAKiB,QAAQ+B,IAAI/B,CAAO,EACxB,KAAKF,QAAQiC,IAAI,EAAI,EAEjBW,GACF,KAAKrC,YAAY0B,IAAI,EAAI,CAC7B,EAEAY,WAAW3C,EAAsBsC,EAAevD,EAAmB,CAC7DA,GACF,KAAKA,KAAKgD,IAAIhD,CAAI,EAEpB,KAAKoB,SAAS4B,IAAI,EAAI,EACtB,KAAK/B,QAAQ+B,IAAI/B,CAAO,EACxB,KAAKI,YAAY2B,IAAIO,CAAK,EAC1B,KAAKpC,SAAS6B,IAAI/B,EAAQ6B,QAAS,EACnC,KAAK/B,QAAQiC,IAAI,EAAI,CACvB,EAEAa,MAAI,CACF,KAAK5C,QAAQ+B,IAAI,IAAI,EACrB,KAAK7B,SAAS6B,IAAI,IAAI,EACtB,KAAKhD,KAAKgD,IAAI,IAAI,EAClB,KAAK5B,SAAS4B,IAAI,EAAK,EACvB,KAAKjC,QAAQiC,IAAI,EAAK,CACxB,EAEAc,SAASC,EAAmB/D,EAAkB,CAE5C,GAAMgE,GAA0B,GAC1BC,EAAsBC,GACnBA,EAASjB,IAAKkB,IAAoB,CACvCC,WAAYD,EAAEC,WACdC,YAAa,KACbC,mBAAoB,KAEpBC,kBAAmBJ,EAAEpB,0BAA0ByB,KAAKC,GAAKA,EAAEC,QAAUP,EAAErB,UAAUT,aAAa,GAAGsC,SAAWR,EAAES,wBAC9GC,4BAA6BV,EAAErB,UAAUL,SACzCqC,iBAAkB,KAAKC,0CAA0CZ,CAAC,EAClEa,MAAOb,EAAEa,MACTC,OAAQd,EAAEc,OACVC,UAAWf,EAAEe,UACbC,YAAahB,EAAEiB,eACfC,OAAQlB,EAAErB,UAAUT,eAAeiD,SAAQ,EAC3CC,MAAOpB,EAAErB,UAAUR,gBACnBkD,aAAcrB,EAAEqB,aAChBC,cAAetB,EAAES,wBACjBhC,KAAMuB,EAAEvB,KACR8C,aAAevB,EAAErB,UAAUT,cAAiB8B,EAAEvB,KAASuB,EAAE9B,cACzDsD,aAAcxB,EAAErB,UAAUH,OAC1B,EAGA3C,IAASD,EAAa0B,SACxBuC,EAAWtC,KAAK,GAAGuC,EAAmB,KAAK/D,YAAW,CAAE,CAAC,EAChDF,IAASD,EAAagC,cAC/BiC,EAAWtC,KAAK,GAAGuC,EAAmB,KAAK5D,QAAO,CAAE,CAAC,EAGvD,GAAMuF,GAAiB,CACrBC,OAAQ,GACRC,WAAY,GACZC,OAAQ/B,GAEVgC,EAAe,KAAKC,aAAaL,CAAI,CAAC,EAAEM,KAAYhD,GAAKiD,EAAA,sBACvD,GAAMC,0CAAeC,CACfC,EAA0B,GAAIC,GAAa,UAAWH,EAAc,KAAM,EAAE,EAClF,KAAK1G,aAAa8G,cAAcC,KAAKH,CAAuB,EAE5D,GAAMI,GAAiB1G,IAASD,EAAa0B,SAAW,sBAAwB,iBAChFE,aAAagF,WAAWD,CAAc,EAElC1G,IAASD,EAAa0B,SACxB,KAAKvB,YAAY8C,IAAI,EAAE,EACdhD,IAASD,EAAagC,cAC/B,KAAK1B,QAAQ2C,IAAI,EAAE,EAGrB,KAAMgD,GAAe,KAAKY,4BAA4B1D,EAAGa,CAAI,CAAC,CAChE,GAAC,CACH,EAEA8C,cAAc9C,EAAiB,CAC7B,GAAMC,GAA0B,GAC1BC,EAAsBC,GACnBA,EAASjB,IAAKkB,IAAoB,CACvCE,YAAaF,EAAEE,YACfQ,4BAA6BV,EAAErB,UAAUL,SACzCqC,iBAAkBX,EAAErB,UAAUL,SAC9BuC,MAAOb,EAAEa,MACTC,OAAQd,EAAEc,OACVC,UAAWf,EAAEe,UACbC,YAAahB,EAAEiB,eACfC,OAAQlB,EAAErB,UAAUT,eAAeiD,SAAQ,EAC3CC,MAAOpB,EAAErB,UAAUR,gBACnBmD,cAAetB,EAAE7B,gBACjBM,KAAMuB,EAAEvB,KACR8C,aAAevB,EAAErB,UAAUT,cAAiB8B,EAAEvB,KAASuB,EAAE9B,cACzDsD,aAAcxB,EAAErB,UAAUH,OAC1B,EAGJqB,EAAWtC,KAAK,GAAGuC,EAAmB,KAAK1D,UAAS,CAAE,CAAC,EAEvD,GAAMqF,GAAiB,CACrBC,OAAQ,GACRC,WAAY,GACZC,OAAQ/B,GAGVgC,EAAe,KAAKC,aAAaL,CAAI,CAAC,EAAEM,KAAYhD,GAAKiD,EAAA,sBACvD,GAAMC,0CAAeC,CACfC,EAA0B,GAAIC,GAAa,UAAWH,EAAc,KAAM,EAAE,EAClF,KAAK1G,aAAa8G,cAAcC,KAAKH,CAAuB,EAE5D3E,aAAagF,WAAW,kBAAkB,EAE1C,KAAKpG,UAAUyC,IAAI,EAAE,EAErBE,EAAE4D,QAAQC,GAAQ,CAChBA,EAAMC,uBAAyB,EACjC,EAAC,EACD,KAAMhB,GAAe,KAAKY,4BAA4B1D,EAAGa,CAAI,CAAC,CAChE,GAAC,CACH,EAGAkC,aAAaL,EAAc,CACzB,MAAO,MAAKnG,KAAKwH,KAAoB,KAAKtH,UAAY,SAAUiG,CAAI,CACtE,EAEAgB,4BAA4BM,EAAkCnD,EAAiB,CAC7E,GAAIoD,GAAgC,GACpCD,EAAkBJ,QAAQ5D,GAAI,CAC5BiE,GACEjE,EAAE+B,OACA,IACA/B,EAAEgC,WACDhC,EAAEiC,YAAc,IAAMjC,EAAEiC,YAAc,IAAM,IAC7C,MACAjC,EAAE2B,4BACF,MACA3B,EAAEqC,MACF,KAAOrC,EAAEN,KAAO,kBAAeM,EAAEmC,OAAS,SAChD,EAAC,EAED,GAAI+B,GAEJA,EAAO,CACLC,KAAM,iBACNC,iBAAkBvD,GAAMwD,iBAAiBC,MACzCC,yBAA0B1D,GAAMwD,iBAAiBG,eACjDC,MAAO,wBACPC,SAAU7D,GAAM6D,SAChBC,gBAAiB9D,GAAM8D,gBACvBC,cAAe/D,GAAMgE,iBACrBC,gBAAiBjE,GAAMiE,gBACvBC,gBAAiBlE,GAAMmE,cAAgB,IAAMnE,GAAMoE,WACnDC,OAAQrE,GAAMoE,WAAa,IAAMpE,GAAMmE,cAAgB,KAAOnE,GAAMgE,iBAAmB,IACvFM,aAActE,GAAMuE,aACpBC,eAAgBpB,EAChBqB,mBAAoBzE,GAAMyE,mBAC1BC,aAAc1E,GAAMwD,iBAAiBmB,cACrCC,aAAc9G,KAAKC,UAAUoF,CAAiB,GAGhD,GAAM0B,GAAU,GAAIC,GAAW,EAAG7F,IAAI,eAAgB,kBAAkB,EACxE,MAAO,MAAKvD,KAAKwH,KAAK,KAAKtH,UAAY,gCAAiCyH,EAAM,CAC5EwB,QAASA,EACTE,QAAS,WACV,CACH,EAEQ/D,0CAA0CZ,EAAc,CAE9D,GAAM4E,GAAqBxG,OAAO4B,EAAErB,SAAUR,gBAAiBE,QAAQ,MAAO,EAAE,CAAC,EAE3EwG,EAA6B7E,EAAErB,SAAUT,cAEzC4G,EAAe9E,EAAErB,UAAUL,SAE3ByG,EAAuBH,EAAqBC,EAA8BC,EAG1EE,EAAqB5G,OAAO4B,EAAES,wBAAyBpC,QAAQ,MAAO,EAAE,CAAC,EAEzE4G,EAA6BjF,EAAE9B,cAE/BgH,EAAsBF,EAAqBC,EAKjD,MAF6CF,GAAsBG,CAIrE,cAAAC,IAAA,UAAAC,CAAA,aAAAA,CAAA,EA/SWhK,GAAWiK,EAAAC,CAAA,EAAAD,EAAAE,CAAA,kBAAAC,KAAA,CAAAC,CAAA,EAAAC,KAAA,CAAXtK,EAAWuK,QAAXvK,EAAW+J,KAAAS,WAFV,MAAM,WAEPxK,EAAW,aAAAyK,CAAA,IAAA5G,CAAA","names":["CartService","constructor","http","toastService","apiGccUrl","environment","api","typeCampagne","TypeCampagne","type","signal","primeurCart","primeurCart$","toObservable","memCart","memCart$","tarifCart","tarifCart$","totalPrimeurs","totalPrimeurs$","totalMem","totalMem$","totalTarif","totalTarif$","visible","visible$","product","product$","formData","editMode","indexToEdit","s_isPageVin","add","data","Primeurs","push","localStorage","setItem","JSON","stringify","MiseEnMarche","edit","newData","newFormats","isPrimeurs","item","centilisation","conditionnement","Number","replace","quantity","qtyEq75","total","prix","qtyCol","cartData","formatsByConditionnement","set","map","x","reduce","a","b","remove","index","indexOf","splice","show","isPageVin","showToEdit","hide","saveCart","user","cartLignes","processProductCart","products","p","idCampagne","idCatalogue","idLigneMiseEnAvant","idConditionnement","find","f","value","idCondi","conditionnementCampagne","quantiteDansConditionnement","quantiteCommande","getQteCommandeeCorrespondantCondiCampagne","idVin","nomVin","millesime","appellation","nomAppellation","centil","toString","condi","nbBouteilles","condiCampagne","prixUnitaire","prixCommande","cart","statut","isCampagne","lignes","firstValueFrom","CreatePanier","then","__async","messageToast","$localize","saveSuccessToastMessage","ToastMessage","toastMessage$","next","cartSessionKey","removeItem","SendMailsClientValidateCart","saveCartTarif","forEach","ligne","isDemandeCommandeTarif","post","panierLignesSaved","commandesClientsForClientMail","body","from","toMailCommercial","utilisateurInfo","email","envoiNomPropreCommercial","envoiNomPropre","sujet","idClient","clientFirmeLogo","societeClient","nomSocieteClient","signatureClient","prenomNomClient","prenomContact","nomContact","client","toMailClient","emailContact","commandeClient","salutationsContact","idCommercial","idUtilisateur","lignesPanier","headers","HttpHeaders","observe","nbBtlCondiCommande","centilisationCondiCommande","qteCommandee","volumeTotalCommande","nbBtlCondiCampagne","centilisationCondiCampagne","volumeTotalCampagne","ɵfac","i","ɵɵinject","HttpClient","ToastService","ɵprov","g","token","factory","providedIn","$"],"ignoreList":[],"sources":["src/app/services/cart.service.ts"],"sourcesContent":["import {Injectable, signal} from '@angular/core';\r\nimport {toObservable} from \"@angular/core/rxjs-interop\";\r\nimport {CartData} from \"../models/Cart/CartData\";\r\nimport {ProductCart} from \"../models/Cart/ProductCart\";\r\nimport {CartFull, CartLigne} from \"../models/Cart/CartFull\";\r\nimport {HttpClient, HttpHeaders} from \"@angular/common/http\";\r\nimport {environment} from \"../../environments/environment\";\r\nimport {firstValueFrom} from \"rxjs\";\r\nimport {PanierLigne} from \"../models/Cart/PanierLigne\";\r\nimport {User} from \"../models/User/User\";\r\nimport {TypeCampagne} from \"../models/Campagne/TypeCampagne\";\r\nimport {ToastMessage} from \"../models/toastMessage\";\r\nimport {ToastService} from \"./toast.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CartService {\r\n apiGccUrl = environment.api + 'bff/';\r\n typeCampagne = TypeCampagne;\r\n type = signal(null);\r\n\r\n primeurCart = signal([]);\r\n primeurCart$ = toObservable(this.primeurCart);\r\n memCart = signal([]);\r\n memCart$ = toObservable(this.memCart);\r\n tarifCart = signal([]);\r\n tarifCart$ = toObservable(this.tarifCart);\r\n\r\n totalPrimeurs = signal(0);\r\n totalPrimeurs$ = toObservable(this.totalPrimeurs);\r\n totalMem = signal(0);\r\n totalMem$ = toObservable(this.totalMem);\r\n totalTarif = signal(0);\r\n totalTarif$ = toObservable(this.totalTarif);\r\n\r\n visible = signal(false);\r\n visible$ = toObservable(this.visible);\r\n product = signal(null);\r\n product$ = toObservable(this.product);\r\n formData = signal(null)\r\n editMode = signal(false);\r\n indexToEdit = signal(null)\r\n\r\n s_isPageVin = signal(false);\r\n\r\n constructor(private http: HttpClient, private toastService: ToastService) {\r\n }\r\n\r\n add(data: ProductCart) {\r\n if (this.type() === this.typeCampagne.Primeurs) {\r\n this.primeurCart().push(data);\r\n localStorage.setItem('primeursCartSession', JSON.stringify(this.primeurCart()));\r\n } else if (this.type() === this.typeCampagne.MiseEnMarche) {\r\n this.memCart().push(data);\r\n localStorage.setItem('memCartSession', JSON.stringify(this.memCart()));\r\n } else {\r\n this.tarifCart().push(data);\r\n localStorage.setItem('tarifCartSession', JSON.stringify(this.tarifCart()));\r\n }\r\n }\r\n\r\n edit(newData: CartData, newFormats: any) {\r\n const type = this.type();\r\n const isPrimeurs = type === this.typeCampagne.Primeurs;\r\n let item;\r\n if (type) {\r\n item = isPrimeurs ? this.primeurCart()[this.indexToEdit()!] : this.memCart()[this.indexToEdit()!];\r\n } else {\r\n item = this.tarifCart()[this.indexToEdit()!]\r\n }\r\n\r\n if (item) {\r\n const centilisation = newData.centilisation!;\r\n const conditionnement = Number(newData?.conditionnement?.replace(/\\D/g, \"\"));\r\n const quantity = newData.quantity!;\r\n\r\n if (isPrimeurs) {\r\n const qtyEq75 = (conditionnement * centilisation / 0.75) * quantity;\r\n newData.total = item.prix! * qtyEq75;\r\n } else {\r\n const qtyCol = (centilisation / this.product()?.centilisation! * conditionnement) * quantity;\r\n newData.total = item.prix! * qtyCol;\r\n }\r\n\r\n item.cartData = newData;\r\n item.formatsByConditionnement = newFormats;\r\n }\r\n\r\n if (this.type() === this.typeCampagne.Primeurs) {\r\n this.totalPrimeurs.set(this.primeurCart().map((x: any) => x.cartData.total).reduce((a: any, b: any) => a + b, 0));\r\n localStorage.setItem('primeursCartSession', JSON.stringify(this.primeurCart()));\r\n } else if (this.type() === this.typeCampagne.MiseEnMarche) {\r\n this.totalMem.set(this.memCart().map((x: any) => x.cartData.total).reduce((a: any, b: any) => a + b, 0));\r\n localStorage.setItem('memCartSession', JSON.stringify(this.memCart()));\r\n } else {\r\n this.totalTarif.set(this.tarifCart().map((x: any) => x.cartData.total).reduce((a: any, b: any) => a + b, 0));\r\n localStorage.setItem('tarifCartSession', JSON.stringify(this.tarifCart()));\r\n }\r\n }\r\n\r\n remove(item: any, type?: TypeCampagne | null) {\r\n if (type === this.typeCampagne.Primeurs) {\r\n const index = this.primeurCart().indexOf(item);\r\n if (index !== -1)\r\n this.primeurCart().splice(index, 1);\r\n\r\n localStorage.setItem('primeursCartSession', JSON.stringify(this.primeurCart()));\r\n } else if (type === this.typeCampagne.MiseEnMarche) {\r\n const index = this.memCart().indexOf(item);\r\n if (index !== -1)\r\n this.memCart().splice(index, 1);\r\n\r\n localStorage.setItem('memCartSession', JSON.stringify(this.memCart()));\r\n } else {\r\n const index = this.tarifCart().indexOf(item);\r\n if (index !== -1)\r\n this.tarifCart().splice(index, 1);\r\n\r\n localStorage.setItem('tarifCartSession', JSON.stringify(this.tarifCart()));\r\n }\r\n }\r\n\r\n show(product: ProductCart, type?: TypeCampagne, isPageVin?: boolean | undefined) {\r\n if (type)\r\n this.type.set(type);\r\n this.product.set(product);\r\n this.visible.set(true);\r\n\r\n if (isPageVin)\r\n this.s_isPageVin.set(true);\r\n }\r\n\r\n showToEdit(product: ProductCart, index: number, type?: TypeCampagne) {\r\n if (type) {\r\n this.type.set(type);\r\n }\r\n this.editMode.set(true);\r\n this.product.set(product);\r\n this.indexToEdit.set(index);\r\n this.formData.set(product.cartData!);\r\n this.visible.set(true);\r\n }\r\n\r\n hide() {\r\n this.product.set(null);\r\n this.formData.set(null);\r\n this.type.set(null);\r\n this.editMode.set(false);\r\n this.visible.set(false);\r\n }\r\n\r\n saveCart(user: User | null, type: TypeCampagne) {\r\n\r\n const cartLignes: CartLigne[] = [];\r\n const processProductCart = (products: ProductCart[]) => {\r\n return products.map((p: ProductCart) => ({\r\n idCampagne: p.idCampagne,\r\n idCatalogue: null,\r\n idLigneMiseEnAvant: null,\r\n //p.formatsByConditionnement tjrs undefined...\r\n idConditionnement: p.formatsByConditionnement?.find(f => f.value === p.cartData?.centilisation)?.idCondi ?? p.conditionnementCampagne,\r\n quantiteDansConditionnement: p.cartData?.quantity,\r\n quantiteCommande: this.getQteCommandeeCorrespondantCondiCampagne(p),\r\n idVin: p.idVin,\r\n nomVin: p.nomVin,\r\n millesime: p.millesime,\r\n appellation: p.nomAppellation,\r\n centil: p.cartData?.centilisation?.toString(),\r\n condi: p.cartData?.conditionnement,\r\n nbBouteilles: p.nbBouteilles,\r\n condiCampagne: p.conditionnementCampagne,\r\n prix: p.prix,\r\n prixUnitaire: (p.cartData?.centilisation! * p.prix!) / p.centilisation!,\r\n prixCommande: p.cartData?.total,\r\n }));\r\n };\r\n\r\n if (type === TypeCampagne.Primeurs) {\r\n cartLignes.push(...processProductCart(this.primeurCart()));\r\n } else if (type === TypeCampagne.MiseEnMarche) {\r\n cartLignes.push(...processProductCart(this.memCart()));\r\n }\r\n\r\n const cart: CartFull = {\r\n statut: false,\r\n isCampagne: true,\r\n lignes: cartLignes\r\n };\r\n firstValueFrom(this.CreatePanier(cart)).then(async (x) => {\r\n const messageToast = $localize`:@@demandesAchatsEnregistrees: Votre demande d'achat nous a bien été transmise.`\r\n const saveSuccessToastMessage = new ToastMessage('success', messageToast, null, '')\r\n this.toastService.toastMessage$.next(saveSuccessToastMessage);\r\n\r\n const cartSessionKey = type === TypeCampagne.Primeurs ? 'primeursCartSession' : 'memCartSession';\r\n localStorage.removeItem(cartSessionKey);\r\n\r\n if (type === TypeCampagne.Primeurs) {\r\n this.primeurCart.set([]);\r\n } else if (type === TypeCampagne.MiseEnMarche) {\r\n this.memCart.set([]);\r\n }\r\n\r\n await firstValueFrom(this.SendMailsClientValidateCart(x, user));\r\n });\r\n }\r\n\r\n saveCartTarif(user: User | null) {\r\n const cartLignes: CartLigne[] = [];\r\n const processProductCart = (products: ProductCart[]) => {\r\n return products.map((p: ProductCart) => ({\r\n idCatalogue: p.idCatalogue,\r\n quantiteDansConditionnement: p.cartData?.quantity,\r\n quantiteCommande: p.cartData?.quantity,\r\n idVin: p.idVin,\r\n nomVin: p.nomVin,\r\n millesime: p.millesime,\r\n appellation: p.nomAppellation,\r\n centil: p.cartData?.centilisation?.toString(),\r\n condi: p.cartData?.conditionnement,\r\n condiCampagne: p.conditionnement,\r\n prix: p.prix,\r\n prixUnitaire: (p.cartData?.centilisation! * p.prix!) / p.centilisation!,\r\n prixCommande: p.cartData?.total,\r\n }));\r\n };\r\n\r\n cartLignes.push(...processProductCart(this.tarifCart()));\r\n\r\n const cart: CartFull = {\r\n statut: false,\r\n isCampagne: false,\r\n lignes: cartLignes\r\n };\r\n\r\n firstValueFrom(this.CreatePanier(cart)).then(async (x) => {\r\n const messageToast = $localize`:@@demandesAchatsEnregistrees: Votre demande d'achat nous a bien été transmise.`\r\n const saveSuccessToastMessage = new ToastMessage('success', messageToast, null, '')\r\n this.toastService.toastMessage$.next(saveSuccessToastMessage);\r\n\r\n localStorage.removeItem('tarifCartSession');\r\n\r\n this.tarifCart.set([]);\r\n\r\n x.forEach(ligne => {\r\n ligne.isDemandeCommandeTarif = true;\r\n });\r\n await firstValueFrom(this.SendMailsClientValidateCart(x, user));\r\n });\r\n }\r\n\r\n //HTTP\r\n CreatePanier(cart: CartFull) {\r\n return this.http.post(this.apiGccUrl + 'Panier', cart);\r\n }\r\n\r\n SendMailsClientValidateCart(panierLignesSaved: PanierLigne[], user: User | null) {\r\n let commandesClientsForClientMail = '';\r\n panierLignesSaved.forEach(x => {\r\n commandesClientsForClientMail +=\r\n x.nomVin\r\n + ' '\r\n + x.millesime\r\n + (x.appellation ? '(' + x.appellation + ')' : '')\r\n + ' : '\r\n + x.quantiteDansConditionnement\r\n + ' x '\r\n + x.condi\r\n + ' (' + x.prix + '€/col. de ' + x.centil + 'l)
';\r\n });\r\n\r\n let body;\r\n\r\n body = {\r\n from: 'infos@cvbg.com',\r\n toMailCommercial: user?.utilisateurInfo?.email,\r\n envoiNomPropreCommercial: user?.utilisateurInfo?.envoiNomPropre,\r\n sujet: 'CVBG - Votre commande',\r\n idClient: user?.idClient,\r\n clientFirmeLogo: user?.clientFirmeLogo,\r\n societeClient: user?.nomSocieteClient,\r\n signatureClient: user?.signatureClient,\r\n prenomNomClient: user?.prenomContact + ' ' + user?.nomContact,\r\n client: user?.nomContact + ' ' + user?.prenomContact + ' (' + user?.nomSocieteClient + ')',\r\n toMailClient: user?.emailContact,\r\n commandeClient: commandesClientsForClientMail,\r\n salutationsContact: user?.salutationsContact,\r\n idCommercial: user?.utilisateurInfo?.idUtilisateur,\r\n lignesPanier: JSON.stringify(panierLignesSaved)\r\n }\r\n\r\n const headers = new HttpHeaders().set('Content-Type', 'application/json');\r\n return this.http.post(this.apiGccUrl + 'Panier/ValidationPanierClient', body, {\r\n headers: headers,\r\n observe: 'response'\r\n })\r\n }\r\n\r\n private getQteCommandeeCorrespondantCondiCampagne(p: ProductCart) {\r\n // Commande\r\n const nbBtlCondiCommande = Number(p.cartData!.conditionnement!.replace(/\\D/g, \"\"));\r\n\r\n const centilisationCondiCommande = p.cartData!.centilisation!;\r\n\r\n const qteCommandee = p.cartData?.quantity!;\r\n\r\n const volumeTotalCommande = (nbBtlCondiCommande * centilisationCondiCommande) * qteCommandee;\r\n\r\n // Campagne\r\n const nbBtlCondiCampagne = Number(p.conditionnementCampagne!.replace(/\\D/g, \"\"));\r\n\r\n const centilisationCondiCampagne = p.centilisation!;\r\n\r\n const volumeTotalCampagne = nbBtlCondiCampagne * centilisationCondiCampagne;\r\n\r\n // RES\r\n const nbCondiCampagneCorrespondantCommande = volumeTotalCommande / volumeTotalCampagne;\r\n\r\n return nbCondiCampagneCorrespondantCommande;\r\n\r\n }\r\n}\r\n"]}