{"version":3,"mappings":"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,WACTC,UAAW,aACXR,WAAY,cACZrR,SAAU,WACVrV,KAAM,UACP,EACDmnB,MAAO,CACLC,UAAW,aACXH,QAAS,WACTC,UAAW,aACXR,WAAY,cACZrR,SAAU,WACVrV,KAAM,UACP,EACDqnB,YAAa,CACX9B,YAAa,cACbwB,aAAc,WACf,EACDO,qBAAsB,CACpBC,WAAY,kBACZC,UAAW,gBACZ,EACD,kBAAmB,CACjBC,UAAW,gBACXC,gBAAiB,mBACjBC,QAAS,uBACTC,eAAgB,qBACjB,EACDC,QAAS,CACPC,UAAW,gBACXC,SAAU,WACZ,CACF,EAGaC,GAA+B,CAAC,kBAAmB,YAAa,aAAc,eAAgB,YAAY,EAG1GC,GAAiC,CAAC,YAAa,gBAAiB,kBAAmB,sBAAuB,QAAS,WAAY,WAAW,EAI1IC,GAAmC,CAC9C,mBACA,oBACA,oBACA,mBACA,aACA,gBACA,WACA,oBACA,kBACA,YACA,eACA,OACA,iBACA,OACA,UACA,aACA,WACA,oBACA,cACA,oBACA,UACA,iBACA,QACA,WACA,QACA,WACA,kBACA,kBACA,gBACA,YACA,aACA,aACA,aACA,WACA,YACA,OACA,YACA,SACA,QACA,UACA,eACA,WACA,gBACA,iBACA,WACA,aACA,YACA,OACA,aACA,aACA,kBACA,kBACA,UACA,SACA,cACA,cACA,WACA,YACA,SACA,YACA,YACA,WACA,gBACA,gBACA,0BACA,SACA,aACA,UACA,cACA,aACA,eACA,QACA,eACA,eACA,UACA,uBACA,gBACA,YACA,oBACA,kBACA,cACA,mBACA,aACA,sBACA,gBACA,eACA,WACA,WACA,YACA,iBACA,SACA,YACA,uBACA,WACA,cACA,YACA,UACA,WACA,eACA,mBACA,0BACA,oBACA,aACA,qBACA,aACA,kBACA,QACA,QACA,YACA,iBACA,SACA,OACA,SACA,SACA,WACA,YACA,SACA,OACA,OACA,kBACA,0BACA,sBACA,oBACA,4BACA,yBACA,iBACA,uBACA,mBACA,iBACA,2BACA,yBACA,sBACA,sBACA,4BACA,wBACA,kCACA,2BACA,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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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AAa59E;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAkGb69E,GAAO79E;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAuHP89E,GAAQ99E;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAuHR+9E,GAAe/9E;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,ECxbfg+E,GAASh+E;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,ECATi+E,GAAej+E;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA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","names":["CONFIG_REQUEST_SUCCESS","CONFIG_REQUEST_FAIL","CONFIG_REQUEST","configRequest","type","configSuccess","config","data","configFail","error","enviroments","DEV","isTablet","userAgent","navigator","toLowerCase","test","PARTNER","BUILDER","DIVISION","COMMUNITY","PLAN","SPEC","STATUS","SEARCH","MOVEINDATE","OTHER","TYPE","BATHS","BEDS","GARAGES","STATES","BRANDS","MARKETS","PRODUCTS","CUSTOMERS","CYCLES","PAGE_NUMBER","PAGE_SIZE","SORT","PUSH_STATE","REPLACE_STATE","GO","GO_BACK","GO_FORWARD","CHANGE_LOCATION","LAST_LOCATION","NEXT_LOCATION","goBack","pushState","href","force","ctrl","replaceState","saveLastLocation","pathname","search","hash","current","last","queries","parse","saveNextLocation","changeLocation","arrayToObject","array","reduce","memo","obj","arrayToObjectByField","field","item","arrayEmpty","Array","length","objectEmpty","object","Object","keys","stringEmpty","string","String","empty","mapObject","func","constructor","map","key","cloneOld","JSON","stringify","clone","level","undefined","value","versionType","UNCHANGE","MAJOR","MINOR","PATH","BUILD","marketingStatusText","ComingSoon","leadsModalSteps","OVERVIEW","SIGN","USERS","ErrorMessages","UserWrongBuilder","bhiContent","NEWAD","RECLEADS","WHATNEW","BOOSTYOURPERFORMANCE","WELCOMEMESSAGE","spotlightStatus","CLAIMED","AVAILABLE","UNAVAILABLE","SELECTED","YOURS","PENDING","NOTAPPLICABLE","statusName","APPROVED","SUBMITTED","DISAPPROVED","permissionsGroups","AdminListingsDataLocks","PlanLevelOverrides","permissionType","Read","Write","Nothing","permissionId","MarketingHeadline","builderTypeDescription","CSL","CST","MFR","PRD","orgTypeCode","basicRedesignPartners","NewHomeSource","id","name","BuilderHomeSite","guidedTourPartners","UTour","NterNow","SmartRent","billingStatusNames","None","Active","Pending","Closed","CloseOut","DisplayNotBill","NhcSmall","NhcSpecial","regions","USA","CAN","activityTypeCode","IN","OUT","RWD","URL","RLS","RLP","recLeadSelectionNames","Selected","Unselected","builderServiceCode","DigitalDashboardReport","DigitalDashboardDivisionAccess","BDXtractorDataEntry","ShowBuilderShowcase","BuilderCallTracking","RETSMLSDataEntry","SmartTouchLead","PartnerFeedExclude","AllowUTMTracking","AccessAugmentedLead","SoldDataCollection","AccessLeadAPI","Diagnostic","NonDiagnostic","NHSProSoldDataCollection","UploadSoldData","PublishReviews","TrustBuilderSyndication","LAaaS","MigrationStatusCode","SourceSpecHomesFromListHub","SoldDataVersion","SelfGuidedTour","CanadianData","DisplayCommunityAppointmentScheduler","SendTextReminder","ZeroPriceListing","BasePriceSuppression","SurveyIncludeImages","RCMLeadProgram","userServiceCode","RCMLeadManageSelections","leadDeliveryMethods","Email","FTP","listinTypeText","N","B","M","planTypeText","SF","MF","statusUIText","statusIds","Inactive","SpecOnly","Submitted","Approved","Archived","Deleted","specType","Model","homeStatusMessage","ReadyToBuild","text","color","ReadytoMoveIn","UnderConstruction","planDisplayNameText","Condo","Townhome","Townhouse","Duplex","Multi","Carriage","Gardenhouse","Gardenhome","Cape","Ranch","Tiny","planAmenityNames","CovPorch","Flexspace","Wraparound","planSectionsNames","Single","planBuildingMethodsNames","Manufactured","statusText","agentLevel","CORP","DIV","MRKT","greenLevel","agentType","CoOp","Agent","leadRecipientType","Default","Copy","phoneTypes","Tracking","Phone","Fax","invoicesTypes","PastDue","Current","Paid","imageType","AGT","ASL","BAA","BKL","BRD","BVT","CBR","CML","CMP","CMT","COM","CVT","EBR","EDC","EDS","EDX","ELE","EVW","FCI","FLP","GEC","GHH","GOG","GPR","GSM","GWC","INT","LOT","LST","LTI","MAP","MED","PBD","SML","SVT","VIR","imageTypeNames","mpcImageTypeNames","imageStatus","ProcessDone","libraryStatus","ALL","ACTIVE","INACTIVE","brandStatus","PUBLISHED","UNPUBLISHED","planLibraryType","listHubStatus","NotLoaded","NoZipMatch","NoPlanMatch","Success","brandMedia","RssUrl","Facebook","TwitterWidget","listHubFilterField","MlsNames","OfficeIds","OfficeNames","BrokerNames","BuilderNames","Description","changeHistoryFieldNames","builder","corporatereportingrecipient","buildercorporatedistribution","agentpolicybuilderoptin","agentpolicymarketoptin","optintype","submittername","filepath","ListHubBuilderFilter","community","number","buildercommunitynumber","marketingheadline","url","buildercommunitydescription","listingtypeflag","squarefeetlow","squarefeethigh","pricelow","pricehigh","hidepriceoverride","hoursofoperation","outofcommunity","communityenvisionurl","communityschedulerurl","bctype","communitytypecode","communitydistrict","school","statusid","agentcommission","ratetype","payouttiming","commissionbasis","totaltaxrate","salesofficeaddress1","salesofficeaddress2","salesofficelatitude","salesofficelongitude","salesofficezip","salesofficecity","salesofficestate","salesofficesomarketname","communitylocationlatitude","communitylocationlongitude","communitylocationzip","communitylocationcity","zcommunitylocationstate","communitylocationcommmarketname","communitylocationaddress1","communitylocationaddress2","drivingdirections","salesofficeemail","salesofficetrk","salesofficetrkareacode","salesofficephn","salesofficephnareacode","salesofficephnextension","salesofficefax","salesofficefaxareacode","salesagentlastname","salesagenttitle","salesagentnumber","salesagentextension","salesagentemail","golfcourse","coworkingspaces","doggroomingroom","dogpark","garden","guardedgate","hammockpark","playlawn","splashpad","totlot","waterpark","ziplining","discgolf","fitnesscenter","golfsimulator","heatedoutdoorpoolandspa","hottub","indoorpool","lappool","outdoorpool","pickleball","puttinggreen","sauna","sportscourts","sportsfields","yogastudio","conservationarea","fishing","golfcartpathoraccess","mountainviews","oceanview","outdoorrecreation","waterfrontviews","woodedareas","activityorartstudio","amenitycenter","amphitheater","ballroom","bbqareas","billiards","bocceballcourt","cabana","cardrooms","conferenceroomorhall","cornhole","eventcenter","eventlawn","firepit","gameroom","horseshoepit","outdoorfireplace","outdoorpatiowithfirepit","pavillionorramada","picnicarea","shuffleboardcourts","playground","waterfrontlots","communitycenter","additionalcomments","includebrochurewithhome","schedulerurl","agentpromosdatalock","agentcommissiondatalock","webarchpromosdatalock","consumerpromosdatalock","brochuresdatalock","communitylocationdatalock","eventsdatalock","feesandratesdatalock","hothomesdatalock","imagesdatalock","interactivemediadatalock","videosdatalock","linkedtovideosdatalock","marketingheadlinedatalock","envisionurldatalock","openamenitiesdatalock","preferredcommunityimagedatalock","registrationformdatalock","salesofficedatalock","schoolsdatalock","standardamenitiesdatalock","testimonialsdatalock","utilitiesdatalock","appointmentschedulerdatalock","servicearearadius","mlsproviderid","suppressplanprice","suppressspecprice","phoneaddress","areacode","extension","plan","squarefeet","basementincluded","priceexcludesland","masterbedlocation","baseprice","basepricecolumn","previouspricecolumn","previousprice","typecode","display","planviewerurl","envisiondesigncenterurl","virtualtoururl","buildingmethod","dimensionheight","dimensionlength","dimensionwidth","modelyear","sectioncount","halfbaths","baths","stories","garages","baywindows","breakfastarea","rvgarage","coveredpatio","deck","disabledaccess","dock","flexroom","greenconstruction","keepingroom","multigenerational","mudroom","outdoorkitchen","patio","playroom","porch","skylight","sprinklersystem","vaultedceilings","walkinclosets","bonusroom","diningroom","familyroom","livingroom","guestroom","loft","mediaroom","office","study","sunroom","architecturestyle","atticincluded","coolingsystem","exteriortype","fireplaces","floortype","heatingfuel","heatingsystem","hersscore","kitchencountertopmaterial","parkingtype","quarterbaths","rooftype","roomsbelowgrade","sqftabovegrade","sqftbelowgrade","threequarterbaths","squarefeetabovegrade","squarefeetbelowgrade","totalrooms","windowinsulationtype","windowmaterialtype","wiredtype","listcode","interiorsdatalock","elevationdatalock","floorplansdatalock","virtualtourdatalock","spec","lotsqft","moveindate","specsalestatus","spectype","lotnumbe","streetaddress2","streetaddress1","city","postalCode","viewerurl","coveredfrontporch","wraparoundporch","flexspace","multiplelistingservice","addressdatalock","selfguidedtourdatalock","lot","mlsnumber","parcelnumber","sizesqft","sizeacre","streetaddress","brand","emailaddress","weburl","description","overviewbullets","rssurl","facebookheaderscript","facebookpluginhtml","twitterwidget","websitefaqurl","agentpolicies","buyerregistration","planoption","price","sequence","brochure","contact","lastname","interactivemedia","displayonwebarch","displayonnhs","useflashflag","websiteurl","embedcode","image","imagedescription","imagetypecode","originalpath","promotion","enddate","startdate","event","eventdate","testimonial","homeownerassociation","monthlyfee","yearlyfee","partnerid","builderprovided","toururl","propertynumber","listhub","filtersql","isactive","changeHistoryIntFormatFields","changeHistoryMoneyFormatFields","changeHistoryBooleanFormatFields","dataLocksFields","Community","AgentCommission","AgentPromos","Brochures","CommunityLocation","ConsumerPromos","Events","FeesAndRates","HotHomes","Images","InteractiveMedia","LinkedToVideos","OpenAmenities","PreferredCommunityImage","RegistrationForm","SalesOffice","Schools","StandardAmenities","Testimonials","Utilities","Videos","WebArchPromos","AppointmentScheduler","EnvisionUrl","BasePrice","Plan","Elevation","FloorPlans","Interiors","mainDetails","VirtualTour","Spec","Address","MainDetails","Builder","GreenPrograms","decomposeDate","date","d","Date","month","getMonth","day","getDate","year","getFullYear","isNaN","convertTo12HourTime","time","removeSeconds","replace","toString","match","slice","join","datesCompare","a","b","condition","addHours","hours","setHours","getHours","debounce","callback","wait","timeout","args","clearTimeout","setTimeout","apply","context","debounceEvent","target","composedPath","copy","refs","deepCompare","other","sorted","cyclic","omit","initial","is","isCyclicEqual","deepRefCompare","deepArrayCompare","deepObjectCompare","Function","every","includes","sort","index","push","hasChanged","newVal","oldVal","deepInclude","_item","caseInsensitive","asorted","some","__item","values","_instanceof","parent","circular","depth","prototype","includeNonEnumerable","allParents","allChildren","Infinity","_clone","child","proto","Map","Set","Promise","resolve","reject","then","err","isArray","FormData","File","Error","create","getPrototypeOf","indexOf","forEach","keyChild","valueChild","set","entryChild","add","i","getOwnPropertyDescriptor","e","TypeError","ReferenceError","getOwnPropertySymbols","symbols","symbol","descriptor","enumerable","defineProperty","allPropertyNames","getOwnPropertyNames","propertyName","deepMerge","obj1","obj2","keepExistent","keepEmptyObject","arrayPropertyToMerge","p","mergeByProperty","source","prop","sourceElement","targetElement","find","assign","encryptAES","getRandom16DigitsInt","iv","cryptojs","enc","Utf8","encrypted","AES","encrypt","keySize","mode","CBC","padding","pad","Pkcs7","window","btoa","b64Encode","unescape","encodeURIComponent","b64Decode","decodeURIComponent","escape","atob","parseInt","factor","Math","random","encryptBdxLiveAES","userObject","extend","areArray","partsRegex","findRegex","objectPath","get","path","split","filters","exec","pairs","filter","Boolean","firstField","firstPath","_value","newItem","splice","Number","has","deleteByPath","currentObject","parts","pop","part","objectToDotNotation","result","dotPathArr","val","isObj","concat","moneyFormater","Intl","NumberFormat","style","currency","minimumFractionDigits","moneyDecimalFormater","money1DecimalFormater","dateLocalFormater","DateTimeFormat","dateFormater","hour","minute","second","hour12","timeZone","dateNumericalFormater","dateLongTextFormater","dateShortTextFormater","dateShortFormater","timeFormater","numberFormater","monthYearFormater","formatNumber","thousand","decimal","negative","formatDecimals","_isDecimalPart","parsed","parseFloat","_negative","_number","trim","RegExp","decimals","opts","reverse","processedParts","char","flat","groupByProperty","objectsByKeyValue","groupByFunction","f","out","by","hasOwnProp","isPrimitive","loopObject","basicMask","input","mask","definitions","element","inputElement","IMask","runPhoneMaskFormat","regularExp","maskNumbersOnly","acceptDecimal","addEventListener","charCode","keyCode","preventDefault","clipboardData","getData","arr","remove","orderBy","fields","orders","reduceRight","orderByField","orientation","toUpperCase","next","currentValue","nextValue","invalid","localeCompare","numeric","sensitivity","reverseEntries","entries","stringToPrimitive","uniq","uniqBy","fn","uniqPrimitive","from","unquotedStringify","condFunc","readyFunc","checkInterval","checkFunc","plural","word","pluralWords","sis$","reg","pattern","singular","singularWords","s$","toLowerCamelCase","p1","p2","capitalize","chunk","charAt","substring","toUpperCamelCase","splitCamelCase","str","randomWord","size","substr","JSONText","isDevMode","document","location","hostname","isNullish","params","_defineProperty","GraphQLQuery","operations","generateOperation","operationConfig","operation","argument","entry","getSubQuery","_convertField","getQuery","setArguments","_operation","getOperation","_setArguments","setArgumentsAll","_setArgumentsAll","addFields","_fields","_addFields","setFields","_setFields","_getOperation","getOperationNames","_args","_field","_name","fieldName","prev","curr","gql","templateParts","variables","zipper","n","qif","flag","resolver","Partner","model","query","schema","partnerSchema","urlKey","describerFields","relation","relationId","BuilderModel","corpOnly","builderSchema","corporateDistributionDefinition","email","ftpServerUrl","ftpUserName","ftpPassword","leadFormatType","leadDeliveryMethod","apiToken","allowLeadApiAccess","allowAccessAugmentedLeadData","deliverLeadsToCorpRecipientOnly","userSchema","Entity","idAttribute","planSchema","specSchema","lotSchema","listHubSchema","brandSchema","processStrategy","entity","questions","question","answer","spotlightSchema","agentSchema","agentPolicySchema","buyerPolicySchema","invoiceSchema","videosSchema","mergeStrategy","currentEntity","newEntity","thumbnailUrl","leadRecipientSchema","imagesSchema","corporateDistribution","divisionSchema","roleGroupSchema","userPermissionSchema","permissionSchema","serviceSchema","changeHistorySchema","bdxTypeSchema","schoolDistrictSchema","schoolSchema","mlsNameSchema","loaderDataSchema","interactiveMediaSchema","planOptionSchema","amenitySchema","utilitySchema","brochureSchema","greenProgramSchema","testimonialSchema","isVideoTestimonial","hasOwnProperty","call","originalPath","promotionSchema","communities","eventSchema","communitySchema","promotions","results","events","activeEvents","activePromotions","mlsNameId","arrayOfBuilders","builders","divisions","parentBuilderId","builderObject","Union","define","partner","parentBuilder","plans","textTestimonials","videoTestimonials","specs","lots","pciImage","images","videos","schools","mlsName","openAmenities","utilities","schoolDistricts","interactiveMedias","brochures","greenPrograms","childCommunities","parentCommunity","childPlans","planOptions","parentPlan","corporations","users","agentPolicies","buyerPolicies","modelRequestSchema","brands","builderAgents","listHubBuilderFilters","invoices","partners","userPermissions","roleGroups","permissions","services","bdxTypes","changeHistory","mlsNames","loaderData","leadRecipients","spotlightOrders","modelMutateSchema","updatePlan","insertPlan","updateSpec","insertSpec","updateLot","insertLot","updateBuilder","updateImage","insertImage","updateVideo","insertVideo","updateCommunity","insertCommunity","insertPromotion","updatePromotion","insertInteractiveMedia","updateInteractiveMedia","insertEvent","updateEvent","insertCustomOpenAmenity","updateCustomOpenAmenity","deleteCustomOpenAmenity","insertUtility","updateUtility","deleteUtility","insertTestimonial","updateTestimonial","deleteTestimonial","insertBrochure","updateBrochure","deleteBrochure","updateGreenProgram","associateParentPlan","assignPlansToCommunities","breakParentPlanInheritance","updateUser","updateBrand","navigationSchema","division","agent","PRIMITIVE_TO_STRING","FILTER_OPTIONS","DEFINED","NOT_DEFINED","EQUALS","NOT_EQUALS","CONTAINS","OBJ_CONTAINS","SORTING_OPTIONS","BY_FIELD","CURRENT_VALUE","NEXT_VALUE","BY_FUNC","processArray","sorts","status","SYSTEM_STATUS","SORTS","action","FILTERS","_status","param","entitiesSelector","state","app","entities","entitySelector","entityById","selector","schemaDenormalizer","entityRawById","modelsSelector","def","createSelector","models","denormalized","denormalize","MODEL_ENTITIES","modelById","ENTITIES","selectorByFlags","$flags","getCurrentUser","authentication","user","getPermissions","getServices","getContacts","contacts","getProducts","portalProducts","getActivities","activities","isCorpLevel","builderId","corpLevelFlag","isSingleDivisionUser","isInternalBuilder","currentUser","getUserPermissions","subject","permissionValueToActions","accessCode","getUserServices","serviceValueToActions","getUserActivities","userActivities","activityDate","userId","__existingContactGroups","getUserContacts","sortCategories","sortContactsPerRole","productGroupName","groupAlreadyExists","g","c","findIndex","groups","newObj","group","category","displayOrder","content","products","groupName","productName","actions","userDenormalizeSelector","userContextPartnerSelector","userContextBuilderSelector","userContextDivisionSelector","userContextCommunitiesSelector","userContextSelector","userDivisionIdsSelector","divisionContext","LOGIN_REQUEST","LOGIN_SUCCESS","LOGIN_FAIL","LOGOUT","REVALIDATE","USER_ACTIVITY_REQUEST","USER_ACTIVITY_SUCCESS","USER_ACTIVITY_FAIL","RECOVER_PASSWORD_REQUEST","RECOVER_PASSWORD_SUCCESS","RECOVER_PASSWORD_FAIL","RECOVER_USERNAME_REQUEST","RECOVER_USERNAME_SUCCESS","RECOVER_USERNAME_FAIL","BdxError","appMessage","_appMessage","AuthenticationError","InvalidEntityError","NetworkError","ServerError","serverName","_serverName","serverStack","formatServerStackTrace","errorblackList","convertToCustomError","handled","stackTrace","customError","serverMsg","message","logExtraInfo","response","StatusCode","LastErrorMessage","newError","errorMessage","logErrorType","isInValidToken","initialJwtTime","localStorage","getItem","floor","refreshToken","axios","interceptors","use","retry","__retryCount","retryDelay","post","withCredentials","headers","catch","dispatch","requestLogout","getClient","localApi","baseUrl","formData","appApiBaseUrl","apiBaseUrl","options","baseURL","crossorigin","transformRequest","client","request","originalRequest","useRefreshToken","setItem","handleErrors","startStack","stack","returnedError","settings","delete","head","put","patch","appApiClient","axiosClient","API_LOGIN","API_RECOVER_PASSWORD","API_USERNAME_PASSWORD","API_GET_USER_INFO_QUERY","API_INSERT_USER_ACTIVITY","typeCode","requestLogin","apiClient","requestUserInformation","insertActivityMutation","requestRecoverPassword","requestRecoverUsername","USER_DETAIL_REQUEST","USER_DETAIL_SUCCESS","USER_DETAIL_FAIL","USER_PERMISSIONS_REQUEST","USER_PERMISSIONS_SUCCESS","USER_PERMISSIONS_FAIL","USER_DETAIL_SAVE_REQUEST","USER_DETAIL_SAVE_SUCCESS","USER_DETAIL_SAVE_FAIL","USER_ROLES_REQUEST","USER_ROLES_SUCCESS","USER_ROLES_FAIL","UPDATE_USER_SERVICE_REQUEST","UPDATE_USER_SERVICE_SUCCESS","UPDATE_USER_SERVICE_FAIL","API_GET_USER_FIELDS","API_GET_USER_BASIC_FIELDS","API_GET_PERMISSIONS_QUERY","roleId","API_GET_ROLES_QUERY","API_SAVE_USER_QUERY","firstName","lastName","phone","password","userDivisions","service","servicesMutation","permission","permissionMutation","getUsersBasicInfoByBuilderId","updateUserServiceMutation","userIds","serviceName","mutation","requestPermissionsInformation","requestRolesInformation","updateUserMutation","EDIT_ENTITY","DELETE_ENTITY","CREATE_ENTITY","FORM_CHANGE","CANCEL_EDIT","DISCARD_ALL","SAVE_ENTITY","UPDATE_ENTITY","FORM_SAVE_REQUEST","FORM_SAVE_SUCCESS","FORM_SAVE_FAIL","deleteEntity","entityId","changes","meta","createEntity","editEntity","formChange","exclude","excludeActionDebounce","saveEntity","cancelEdit","discardAll","MutationRequestAction","required","noEntity","loadingByEntity","FormMutationRequest","FormMutationSuccess","FormMutationFail","title","convertErrorMessage","MutationSuccessAction","MutationFailAction","errorTransformer","MutationModelRequestAction","$bulk","MutationModelSuccessAction","MutationModelFailAction","k","MODEL_REQUEST_CHANNEL","MODEL_REQUEST_LATEST","MODEL_REQUEST_CHANNEL_SUCCESS","MODEL_REQUEST_LATEST_SUCCESS","MODEL_REQUEST_CHANNEL_FAIL","MODEL_REQUEST_LATEST_FAIL","MODEL_ENTITY_FLUSH","CLEAR_FLAG","modelsChannelSuccess","modelsLatestSuccess","modelsChannelFail","modelsLatestFail","QueryRequestAction","extractContinueWithParams","QuerySuccessAction","QueryFailAction","modelsEntityFlush","property","clearFlags","userDetailRequest","updatePermissionsAndServices","User","userDetailSuccess","userDetailFail","userPermissionsRequest","userPermissionsSuccess","userPermissionsFail","userSaveRequest","userSaveSuccess","userSaveFail","userRolesSuccess","userRolesFail","updateUserServiceRequest","updateUserServiceSuccess","updateUserServiceFail","UserModel","update","dateLastChanged","loginFail","loginFailUserRequired","loginFailPasswordRequired","loginRequestSuccess","revalidate","userActivityRequest","activityCode","userActivitySuccess","userActivityFail","recoverPasswordRequest","recoverPasswordSuccess","recoverPasswordFail","recoverUsernameFailEmailRequired","recoverUsernameRequest","recoverUsernameSuccess","recoverUsernameFail","createQueryParam","getQueryParam","setQueryParam","removeQueryParam","searchParams","URLSearchParams","origin","history","hasQueryParam","searchParamsToString","requestModel","signal","cancelToken","token","multipleAttempts","generator","handleError","maxTries","excludeExceptionTypes","getModels","success","fail","continueWith","transformResults","Axios","CancelToken","Result","cancelled","cancel","RetryError","BuilderContextError","getModelsRetry","checkResponse","getModelsChannel","actionTake","channel","actionChannel","buffers","expanding","take","modelsSagas","takeLatest","BUILDER_CONTEXT_REQUEST","BUILDER_CONTEXT_SUCCESS","BUILDER_CONTEXT_FAIL","DIVISION_CONTEXT_REQUEST","DIVISION_CONTEXT_SUCCESS","DIVISION_CONTEXT_FAIL","COMMUNITY_CONTEXT_REQUEST","COMMUNITY_CONTEXT_SUCCESS","COMMUNITY_CONTEXT_FAIL","PLAN_CONTEXT_REQUEST","PLAN_CONTEXT_SUCCESS","PLAN_CONTEXT_FAIL","SPEC_CONTEXT_REQUEST","SPEC_CONTEXT_SUCCESS","SPEC_CONTEXT_FAIL","LOT_CONTEXT_REQUEST","LOT_CONTEXT_SUCCESS","LOT_CONTEXT_FAIL","BRAND_CONTEXT_REQUEST","BRAND_CONTEXT_SUCCESS","BRAND_CONTEXT_FAIL","AGENT_CONTEXT_REQUEST","AGENT_CONTEXT_SUCCESS","AGENT_CONTEXT_FAIL","CONTEXT_LOADING","DivisionContext","DivisionContextQuery","requestArguments","BuilderContext","BuilderContextQuery","CommunityContext","communityId","CommunityContextQuery","PlanContext","planId","PlanContextQuery","SpecContext","specId","SpecContextQuery","LotContext","lotId","LotContextQuery","BrandContext","brandId","BrandContextQuery","AgentContext","AgentContextQuery","COMMUNITY_DETAIL_REQUEST","COMMUNITY_DETAIL_SUCCESS","COMMUNITY_DETAIL_FAIL","COMMUNITY_PERFORMANCE_REQUEST","COMMUNITY_PERFORMANCE_SUCCESS","COMMUNITY_PERFORMANCE_FAIL","COMMUNITY_DISPLAY_REQUEST","COMMUNITY_DISPLAY_SUCCESS","COMMUNITY_DISPLAY_FAIL","COMMUNITY_DETAIL_SAVE_REQUEST","COMMUNITY_DETAIL_SAVE_SUCCESS","COMMUNITY_DETAIL_SAVE_FAIL","COMMUNITY_SCHOOLS_REQUEST","COMMUNITY_SCHOOLS_SUCCESS","COMMUNITY_SCHOOLS_FAIL","MARKET_SCHOOL_DISTRICTS_REQUEST","MARKET_SCHOOL_DISTRICTS_SUCCESS","MARKET_SCHOOL_DISTRICTS_FAIL","COMMUNITY_IMAGES_QUERY_REQUEST","COMMUNITY_IMAGES_QUERY_SUCCESS","COMMUNITY_IMAGES_QUERY_FAIL","COMMUNITY_VIDEOS_QUERY_REQUEST","COMMUNITY_VIDEOS_QUERY_SUCCESS","COMMUNITY_INTERACTIVE_MEDIA_QUERY_REQUEST","COMMUNITY_INTERACTIVE_MEDIA_QUERY_SUCCESS","COMMUNITY_INTERACTIVE_MEDIA_QUERY_FAIL","COMMUNITY_PARTNER_REQUEST","COMMUNITY_PARTNER_FAIL","ACTIVATE_WEBARCH_COMMUNITIES_REQUEST","MLS_NAMES_REQUEST","MLS_NAMES_SUCCESS","MLS_NAMES_FAIL","COMMUNITY_STATUS_UPDATE_REQUEST","COMMUNITY_STATUS_UPDATE_SUCCESS","COMMUNITY_STATUS_UPDATE_FAIL","Query","corpBuilderId","countEntities","entityFields","typeCodes","page","top","sortColumns","excludeCounter","brandVideoCouter","videoCounterQuery","VideoQueryFields","VideosEntitiesFields","VideosQuery","UpdateMutation","videoId","loadStatusId","getSitePage","VideosUpdateMutation","InsertMutation","originalUrl","localPath","fileSize","file","VideosInsertMutation","UpdateBulkMutation","items","VideosUpdateBulkMutation","CopyBulkMutation","VideosCopyBulkMutation","preferredFlag","onlyCounter","ImageQueryFields","ImageEntitiesFields","ImagesQuery","imageId","imageTitle","imageDescription","imageTypeCode","imageSequence","clickthruUrl","ImagesUpdateMutation","processorStatusId","ImagesInsertMutation","ImagesUpdateBulkMutation","ImagesCopyBulkMutation","InteractiveMediaQueryFields","InteractiveMediaSaveMutation","added","modified","deleted","websiteUrl","embedCode","displayOn","flash","API_GET_COMMUNITY_CONTEXT_FIELDS","API_GET_COMMUNITY_FIELDS","API_GET_COMMUNITY_DATALOCKS_FIELDS","API_GET_COMMUNITY_INFO_QUERY","getDisplayOn","API_GET_COMMUNITY_INNER_DISPLAYON_FIELDS","API_GET_COMMUNITY_SCHOOLS_FIELDS","API_GET_COMMUNITY_DISPLAYON_QUERY","API_GET_COMMUNITY_PERFORMANCE","API_GET_COMMUNITY_SCHOOLS_QUERY","marketId","zip","API_GET_MARKET_SCHOOL_DISTRICTS_QUERY","schoolDistrictFields","schoolDistrictFilters","queryMarket","queryZip","API_SAVE_COMMUNITY_QUERY","ownerPartnerId","displayBrandName","billingStatus","listingType","marketingStatus","marketingHeadline","priceOverrideRemoveFlag","priceSuppressionPlanFlag","priceSuppressionSpecFlag","priceLow","priceHigh","squareFeetLow","squareFeetHigh","envisionUrl","schedulerUrl","marketIsNewRetirement","salesAgents","channelDisplay","salesOffice","isNew","outOfCommunity","serviceRadius","streetAddress1","salesAddress1","streetAddress2","salesAddress2","salesZip","salesCity","coordinates","latitude","salesLatitude","longitude","salesLongitude","drivingDirections","phones","commAddress1","commAddress2","commZip","commCity","commLatitude","commLongitude","displayOnNhs","displayOnWeb","displayOnNhsPro","displayOnKiosk","displayOnSales","displayOnRdc","salesOfficeFields","abs","areaCode","locationFields","displayFields","queryFields","emptySalesAgents","agentMutation","schoolId","districtId","agents","contactId","deleteAssociatedFile","API_GET_COMMUNITY_VIDEOS_QUERY","API_GET_COMMUNITY_IMAGES_QUERY","API_GET_INTERACTIVE_MEDIA_QUERY","API_GET_PARTNERS_BY_COMMUNITY_QUERY","API_INSERT_ACTIVATE_COMMUNITY","partnerIds","requestMlsNames","updateCommunityStatusMutation","requestCommunityApi","requestCommunityDisplayOnApi","requestCommunityPerformanceApi","updateCommunityMutation","insertCommunityMutation","saveCommunityMutation","requestMarketSchoolDistrict","CommunityPartnersQuery","requestCommunitySchoolsQuery","CommunityImagesQuery","CommunityVideosQuery","CommunityInteractiveMediaQuery","communityDetailRequest","loadZipLocations","communityDetailSuccess","communityDetailFail","communityPerformanceSuccess","communityPerformanceFail","communityDisplayChannelRequest","communityDisplayChannelSuccess","communityDisplayChannelFail","communitySaveRequest","onlyChangesInArrays","arrayOnlyChanges","communitySaveSuccess","communitySaveFail","convertCommunityErrorMessage","communitySchoolsQueryRequest","communitySchoolsQuerySuccess","communitySchoolsQueryFail","marketSchoolDistrictsQuerySuccess","marketSchoolDistrictsQueryFail","communityImagesQueryRequest","communityImagesQuerySuccess","communityImagesQueryFail","communityVideosQueryRequest","communityVideosQuerySuccess","communityInteractiveMediaQueryRequest","communityInteractiveMediaQuerySuccess","communityInteractiveMediaQueryFail","communityPartnerRequest","communityPartnerFail","activateWebArchCommunityRequest","mlsNamesRequest","mlsNamesSuccess","mlsNamesFail","updateCommunityStatusRequest","updateCommunityStatusSuccess","updateCommunityStatusFail","CommunityModel","Division","save","communityContextRequest","listingPerformance","communityPartners","BULK_PRICE_PLAN_FIELDS","BASIC_BULK_PLAN_FIELDS","BASIC_PLAN_FIELDS","CHILD_PLANS_FIELDS","API_GET_PLAN_FIELDS","API_GET_PLAN_CONTEXT_FIELDS","getCommLocation","API_GET_PLAN_DATALOCKS_FIELDS","API_GET_PLAN_INFO_QUERY","API_UPDATE_PLAN_QUERY","parentFlag","basePrice","previousPrice","priceExcludesLand","squareFeet","masterBedLocation","beds","halfBaths","dimensions","width","numberSections","modelYear","buildingMethod","basementIncluded","livingAreas","amenities","virtualTourUrl","planViewerUrl","envisionDesignCenterUrl","distributionOnlyFields","hotHome","returnBasicFields","isBulkUpdate","distributionFields","architectureStyles","coolingSystems","exteriorTypes","floorTypes","heatingFuels","heatingSystems","kitchenCountertopMaterials","parkingTypes","roofTypes","wiredTypes","windowInsulationTypes","windowMaterialTypes","totalRooms","threeQuarterBaths","sqftBelowGrade","sqftAboveGrade","roomsBelowGrade","quarterBaths","hersScore","atticIncluded","planOptionsFieldsMutation","PlanOptionsFields","brochureMutation","brochureId","brochureUrl","urlType","edited","brochuresWithFiles","fieldsToReturn","openAmenityMutation","amenity","optionId","API_BREAK_INHERITANCE_PLAN_QUERY","requestPlanApi","updatePlanMutation","insertPlanMutation","savePlanMutation","breakInheritanceMutation","PlanImages","fixApiPlan","PlanImagesQuery","PlanVideos","PlanVideosQuery","PlanInteractiveMedia","PlanInteractiveMediaQuery","PlanOptions","PlanOptionsQuery","mutations","contextRequest","planContextRequest","isHome","altParent","lookup","template","dateCreated","appliances","daysOnMarket","viewTypes","waterFront","API_GET_SPEC_CONTEXT_FIELDS","API_GET_BULK_PRICE_FIELDS","API_GET_BULK_SPEC_FIELDS","API_GET_SPEC_FIELDS","API_GET_SPEC_DATALOCKS_FIELDS","API_GET_SPEC_INFO_QUERY","API_UPDATE_SPEC_QUERY","yearBuilt","saleStatus","moveInDate","lotSqFt","lotNumber","mlsNumber","guidedTour","zipLocationFields","guidedTourFields","tourUrl","propertyNumber","builderProvided","requestSpecApi","updateSpecMutation","insertSpecMutation","saveSpecMutation","SpecImages","SpecImagesQuery","SpecVideos","SpecVideosQuery","SpecInteractiveMedia","SpecInteractiveMediaQuery","specContextRequest","API_GET_LOT_CONTEXT_FIELDS","API_GET_LOT_FIELDS","insertLotMutation","API_UPDATE_LOT_QUERY","updateLotMutation","parcelNumber","sizeAcre","sizeSqFt","requestLotApi","lotBasicInfo","LotImagesQuery","LotImages","LotInteractiveMediaQuery","LotVideos","lotsQuery","LotVideosQuery","Lot","lotContextRequest","getCommunityById","getCommunityPlans","_state","parentPlanId","builderName","getCommunitySpecs","getCommunityLots","getCommunities","isMpc","getPlanById","getPlanChildren","getPlans","isWebArchPlan","displayChannelSelection","displayOnWebArch","getSpecById","getBrandById","Brand","getBrands","getLotById","brandEntitySelector","brandInfoSelector","q","getCorporateBrands","corporateId","BRAND_FIELDS","BRAND_MAIN_FIELDS","BRAND_TESTIMONIAL_FIELDS","BRAND_QUESTIONS_FIELDS","brandTreeViewQuery","divisionIds","isExternalUser","brandDetail","header","section","insertBrandMutationApi","UPDATE_BRAND_QUERY","updateBrandMutationApi","showcase","testimonials","showcaseInfo","emailAddress","webUrl","websiteFaqUrl","overview","o","socialMediaChecked","rssUrl","facebookHeaderScript","facebookPluginHTML","twitterWidget","copiedTestimonials","copied","brandTestimonials","answerId","testimonialsMutation","copyTestimonialsMutation","BrandImagesQuery","brandImages","BrandVideosQuery","brandVideos","BrandTestimonialsQuery","attribution","brandModalTestimonialsQuery","testimonialType","pageNumber","pageSize","builderArgument","baseSelector","brandContextRequest","divisionContextRequest","divisionContextSuccess","divisionContextFail","builderContextRequest","builderContextSuccess","builderContextFail","communityContextSuccess","communityContextFail","planContextSuccess","planContextFail","specContextSuccess","specContextFail","lotContextSuccess","lotContextFail","brandContextSuccess","brandContextFail","agentContextRequest","agentContextSuccess","agentContextFail","contextLoading","loading","DivisionModel","divOnly","entityIdByFormIdSelector","formId","entityIdByModelSelector","editEntitySelector","forms","editEntityByModelSelector","_model","editEntitiesSelector","editEntitiesDifferencesSelector","arrayFieldsRestriction","fieldForcedDependencies","sourceEntity","editedEntity","changesAnalizer","diff","change","isPathAnArray","comm","arrayIndex","arrayRootPath","currentPathIndex","lastIndexOf","arrayFieldInIndex","changesInArrayLevel","dependencyValue","globalEditStateSelector","__unsaved","selectorWithForms","__deleted","__edited","__created","formEntity","combinedEntity","$fromForm","getErrorInfo","modelName","errors","getErrors","isAppLoading","excludedActions","loadings","getLoading","getLoadings","getFormsLoadings","watchActions","getLoadingSafe","loadingsToDotNotation","key2","getLoadingsSafe","loadingEntityBased","LISTING_DATACOMPLETENESS_REQUEST","LISTING_DATACOMPLETENESS_SUCCESS","LISTING_DATACOMPLETENESS_FAIL","listingCompletenessSelector","communityScore","homeScore","commScoreFinal","homeScoreFinal","round","listingEntitySelector","getBuilderById","isCorpPlanLibrary","libraryType","buildeId","getDivisionById","divisionId","getBuilderMarkets","markets","getBuilderDivisions","getBuilderDivisionsByParentId","isCorp","isDataFeedBuilder","autoFeedFlag","isBuilderDataFeedByListingId","isBuilderManufactureByListingId","isMpcBuilder","isOnlyMPC","navigationPathSelector","navigation","global","listModeSelector","listMode","navOpenSelector","opened","navFloatSelector","float","navForcedSelector","locationForced","navCollapsedSelector","collapsed","navPartnerIdContextSelector","navBuilderIdContextSelector","navDivisionIdContextSelector","navCommunityIdContextSelector","navPlanIdContextSelector","navSpecIdContextSelector","navbuilderDivisionsSelector","builderDivisions","navContextSelector","navPartnerContextSelector","navBuilderContextSelector","navDivisionContextSelector","navCommunityContextSelector","navPlanContextSelector","navPartnerSearchBoxSelector","nestedComboBox","partnerSearchBox","navBuilderSearchBoxSelector","builderSearchBox","navDivisionComboBoxSelector","divisionComboBox","navCommunityComboBoxSelector","communityComboBox","navPlanComboBoxSelector","planComboBox","specComboBox","communityTreeView","navCommunityTreeViewFilter","communityTreeViewFilter","contextIsPresent","contextSelector","contextIsLoading","partnerContext","partnerUser","partnerNav","builderContext","builderUser","builderNav","divisionUser","divisionNav","communityContext","getDivisionCommunities","listingTypes","mpcId","parentCommunityId","someDivisionIsWebArch","someDivisionIsManufacturer","isAllDivisionsMPC","isMpcUser","state_","isInternalUser","checkSecurity","command","loginUrl","store","getState","__vitePreload","isAuthRequired","credentials","AUTO_LOGIN","redirect","username","keepMe","lastLocation","getLastLocation","accessToken","checkContextSecurityResponse","failFunc","isExternal","keyName","contextParentBuilderId","contextCorpId","contextBuilderId","corpId","at","WRONG_BUILDER","Location","modal","component","menu","isMenu","justForward","getPageName","createLocation","linkName","storep","extraParams","dispatchEvent","CustomEvent","composed","bubbles","detail","route","findRouteByPath","toUrl","toRoute","children","getRouter","urlForName","convertObjectToQueryStrings","toLink","html","toRedirect","s","_decorate","customElement","_initialize","_LitElement","BdxRouteForward","F","kind","LitElement","APP_MAIN","animate","NOT_FOUND","LOGIN","DASHBOARD","DETAILS","MANAGE_LEAD_REC","LEAD_RECIPIENTS_BUILDER","all","MANAGE_LEAD_RECIPIENTS","default","CORPORATE_LEAD_RECIPIENTS","ADVANCED_SETTINGS_LEAD_RECIPIENTS","COMMUNITY_QUICK_EDIT_TABLE","BDX_QUICK_EDIT","BDX_QUICK_EDIT_COMMUNITY","BDX_QUICK_EDIT_PLANS","BDX_QUICK_EDIT_SPECS","PLAN_QUICK_EDIT_TABLE","SPEC_QUICK_EDIT_TABLE","LISTINGS","LIBRARIES","MANAGE","SERVICES","REPORTING","SETUP","ADMIN","GREEN_PROGRAM","PROMOTIONS_LIBRARY","startDate","EVENTS_LIBRARY","PLAN_LIBRARY","PLAN_PARENT","PLAN_PARENT_MAIN","PLAN_PARENT_NEW","disableMenu","PLAN_PARENT_IMAGES","PLAN_PARENT_VIDEOS","PLAN_PARENT_INTERACTIVE_MEDIA","PLAN_PARENT_ASSIGNED_COMMUNITIES","visible","COMMUNITY_DETAIL","COMMUNITY_DETAIL_NEW","COMMUNITY_DETAIL_MAIN","COMMUNITY_SCHOOLS","COMMUNITY_AMENITIES_UTILITIES","COMMUNITY_MARKETING","COMMUNITY_IMAGE","COMMUNITY_VIDEO","COMMUNITY_INTERACTIVE_MEDIA","COMMUNITY_LOTS","COMMUNITY_MANAGE_HOMES","MPC_DETAIL","MPC_DETAIL_NEW","MPC_DETAIL_MAIN","MPC_SCHOOLS","MPC_AMENITIES_UTILITIES","MPC_MARKETING","MPC_LINKED_COMMUNITIES","MPC_IMAGE","MPC_VIDEO","PLAN_DETAIL","PLAN_DETAIL_NEW","PLAN_DETAIL_MAIN","PLAN_IMAGE","PLAN_VIDEO","PLAN_INTERACTIVE_MEDIA","PLAN_OPTIONS","SPEC_DETAIL","SPEC_DETAIL_NEW","SPEC_DETAIL_MAIN","SPEC_IMAGE","SPEC_VIDEO","SPEC_INTERACTIVE_MEDIA","LOT_DETAIL","LOT_DETAIL_MAIN","LOT_IMAGE","LOT_VIDEO","LOT_INTERACTIVE_MEDIA","LOT_DETAIL_NEW","USER_MANAGEMENT","MULTI_SELECT_COMBO_BOX_DEMO","MONEY_FIELD_DEMO","EFLYER","NEW_EFLYER","BILLING","DueDate","DIVISION_TESTIMONIALS","DIVISION_LEAD_RECIPIENT","CORPORATION_MAIN_DETAILS","SOLD_DATA_UPLOAD","CORPORATION_MANAGE_DIVISION","LISTHUB","BRAND","BRAND_MAIN","BRAND_IMAGES","BRAND_VIDEOS","BRAND_TESTIMONIALS","BRAND_FAQ","SPOTLIGHT","SPOTLIGHT_LANDING","SPOTLIGHT_MANAGER","BUILDER_AGENT","AGENT_MAIN","AGENT_POLICIES","AGENT_BUYER_POLICIES","CORPORATION_DATAFEED_OVERRIDES","CORPORATION_LEAD_RECIPIENT","MPCS","COMMUNITIES","SPECS","PlanName","LOADER_DATA","MLS_MANAGEMENT","LEAD_MANAGEMENT","CO_OP_CONFIRMATION_REPORT","GEOGRAPHY","CONTRACTSIGNEE","ModalService","modalService","show","importFn","isCancelButtonVisible","confirmLabel","buttonsPosition","subscribe","SEELEADAUG","COMMUNITY_ROUTES_WIZARD","MPC_ROUTES_WIZARD","COMMUNITY_ROUTES_EDIT","MPC_ROUTES_EDIT","SPEC_ROUTES","LOT_ROUTES","PLAN_ROUTES","PLAN_PARENT_ROUTES","PLAN_PARENT_ROUTES_EDIT","BRAND_ROUTES","AGENT_ROUTES","lastUnique","excludeLogin","router","lastLocationUrl","getCurrentLocation","getParameters","getCurrentRoute","SET_PARAMS","SET_PARAM","setParams","setParam","SEARCH_REQUEST","NAV_OPEN","NAV_FLOAT","NAV_FORCED","NAV_COLLAPSE","NAV_PARTNER_CONTEXT","NAV_BUILDER_CONTEXT","NAV_DIVISON_CONTEXT","NAV_COMMUNITY_CONTEXT","NAV_PLAN_CONTEXT","NAV_SPEC_CONTEXT","NAV_FULL_CONTEXT","NAV_PARTNER_SEARCH_BOX_REQUEST","NAV_PARTNER_SEARCH_BOX_SUCCESS","NAV_PARTNER_SEARCH_BOX_FAIL","NAV_BUILDER_SEARCH_BOX_REQUEST","NAV_BUILDER_SEARCH_BOX_SUCCESS","NAV_BUILDER_SEARCH_BOX_FAIL","NAV_DIVISION_COMBO_BOX_REQUEST","NAV_DIVISION_COMBO_BOX_SUCCESS","NAV_DIVISION_COMBO_BOX_FAIL","NAV_COMMUNITY_COMBO_BOX_REQUEST","NAV_COMMUNITY_COMBO_BOX_SUCCESS","NAV_PLAN_COMBO_BOX_REQUEST","NAV_PLAN_COMBO_BOX_SUCCESS","NAV_PLAN_COMBO_BOX_FAIL","NAV_FULL_TREE_VIEW_REQUEST","NAV_FULL_TREE_VIEW_SUCCESS","NAV_FULL_TREE_VIEW_FAIL","NAV_COMMUNITY_TREE_VIEW_FILTER","NAV_COMMUNITY_TREE_VIEW_REQUEST","NAV_COMMUNITY_TREE_VIEW_SUCCESS","NAV_COMMUNITY_TREE_VIEW_FAIL","NAV_PLAN_TREE_VIEW_REQUEST","NAV_PLAN_TREE_VIEW_SUCCESS","NAV_PLAN_TREE_VIEW_FAIL","NAV_SPEC_TREE_VIEW_REQUEST","NAV_SPEC_TREE_VIEW_SUCCESS","NAV_SPEC_TREE_VIEW_FAIL","NAV_LOT_TREE_VIEW_REQUEST","NAV_LOT_TREE_VIEW_SUCCESS","NAV_LOT_TREE_VIEW_FAIL","VIEW_CONTEXT_LOADING","TOGGLE_LIST_MODE","NavFullTreeView","NavFullTreeViewQuery","NavCommunityTreeView","NavCommunityTreeViewQuery","NavPlanTreeView","NavPlanTreeViewQuery","NavSpecTreeView","NavSpecTreeViewQuery","NavLotTreeView","NavLotTreeViewQuery","NavPartnerSearchBox","NavPartnerSearchBoxQuery","NavBuilderSearchBox","divisionOrgTypeCodes","hasOnlySoldData","NavBuilderSearchBoxQuery","NavCommunityComboBoxQuery","NavCommunityComboBox","NavDivisionComboBox","hasPlanLibrary","withoutChannelDisplay","orgTypeCodes","NavDivisionComboBoxQuery","NavPlanComboBox","NavPlanComboBoxQuery","navPartnerContext","navBuilderContext","navDivisionContext","navCommunityContext","navPlanContext","navSpecContext","navFullContext","navOpen","navFloat","navForced","navCollapsed","navPartnerSearchBoxRequest","navPartnerSearchBoxSuccess","navPartnerSearchBoxFail","navBuilderSearchBoxRequest","navBuilderSearchBoxSuccess","navBuilderSearchBoxFail","navDivisionComboBoxRequest","navDivisionComboBoxSuccess","navDivisionComboBoxFail","navCommunityComboBoxRequest","navCommunityComboBoxSuccess","navPlanComboBoxRequest","navPlanComboBoxSuccess","navPlanComboBoxFail","navFullTreeViewRequest","navFullTreeViewSuccess","navFullTreeViewFail","navCommunityTreeViewRequest","navCommunityTreeViewSuccess","navCommunityTreeViewFail","navPlanTreeViewRequest","navPlanTreeViewSuccess","navPlanTreeViewFail","navSpecTreeViewRequest","navSpecTreeViewSuccess","navSpecTreeViewFail","navLotTreeViewRequest","navLotTreeViewSuccess","navLotTreeViewFail","afterActions","actionEffectMiddleware","afterActionToRun","afterAction","trigger","handler","unsubscribe","useActionEffect","_trigger","_afterAction","pageLocationSelector","pageLocation","getParam","caslPermissions","Ability","ability","PermissionType","READ","WRITE","BDXLivePermission","USERADDBDXINTERNALUSERS","USERADDBDXEXTERNALUSERS","USERADDUSERSSAMEORLOWERPERMISSIONS","MENUPARTNERDROPDOWN","MENUCORPORATIONDROPDOWM","MENUALLOTHERELEMENTS","COMMADDNEWCOMMUNITIES","COMMUPDATENUMBER","COMMACTIVEINACTIVEARCHIVECOMMUNTIES","COMMSALESCONTACTS","COMMSCHOOLSTAB","COMMMAINTABGEOCODES","COMMMAINTABDISPLAYON","COMMIMAGESTAB","COMMALLOTHERFIELDSCOMMUNITYDETAILSPAGE","COMMMAINDETAILSTAB","COMMVIDEOTAB","COMMINTERACTIVEMEDIATAB","COMMAMENITIESUTILITIESTAB","COMMMARKETINGTAB","COMMPROMOTIONSLIBRARY","COMMEVENTSLIBRARY","COMMGREENPROGRAMS","COMMDIVISIONTESTIMONIALS","COMMMANAGEHOMESTAB","COMMREPROVISIONCALLTRACKINGNUMBER","PLANS","PLLIBRARYPLANS","PLCOMMUNITYPLANS","PLADDNEWPLANS","PLANUPDATENUMBER","PLACTIVEINACTIVEARCHIVESTATUS","PLPRICE","PLIMAGES","PLALLOTHERFIELDS","PLMAINDETAILSTAB","PLVIDEOSTAB","PLINTERACTIVEMEDIATAB","PLPLANOPTIONSTAB","SPADDNEWSPECS","SPUPDATENUMBER","SPACTIVEINACTIVEARCHIVE","SPPRICE","SPIMAGESTAB","SPALLOTHERFIELDS","SPVIDEOSTAB","SPINTERACTIVEMEDIATAB","SPMAINDETAILS","ALBUILDERSHOWCASE","ALAGENTPOLICIES","ALDATAFEEDOVERRIDES","ALAGENTCOOPCONFIRMATIONREPORT","ALCORPORATELEADRECIPIENTS","ALIMAGEERRORREPORT","ALVIDEOERRORREPORT","BSEFLYERS","BSBUILDERREVIEWSPORTAL","BSCONSUMEROPTIXAUGMENTEDLEADCONTRACTSIGNEE","BSSHOPPERPROFILECONSUMEROPTIXAUGMENTEDLEADDATA","BSUPLOADSOLDDATA","BSGRAPHICSSIGNINTOBASECAMP","REPEXECUTIVEDASHBOARD","REPBDXLISTINGSDASHBOARD","REPADVERTISINGDASHBOARD","REPLISTINGSPERFORMANCEDETAILS","REPDIGITALDASHBOARD","REPBDXLEADCONTACTDETAILS","REPCALLTRACKINGDETAILS","REPMPCLISTINGPERFORMANCE","REPMPCLEADPERFORMANCE","REPMPCLEADCONTACTDETAILS","REPCOMMUNITYDATACOMPLETENESS","REPPLANSPECDATACOMPLETENESS","CORPORATESETUP","MANAGEDIVISIONS","BILLINGINVOICES","DATALOCKMARKETINGHEADLINE","DATALOCKIMAGES","DATALOCKVIDEOS","DATALOCKSCHOOLS","DATALOCKPROMOTIONS","DATALOCKEVENTS","DATALOCKTESTIMONIALS","DATALOCKBROCHURES","DATALOCKHOTHOMES","DATALOCKGUIDEDTOURS","DATALOCKSCHEDULER","DATALOCKENVISION","TRUSTBUILDERMODAL","MPCLINKEDCOMMUNITIESTAB","MPCMARKETINGTAB","MPCAMENITIESUTILITIESTAB","MPCVIDEOSTAB","MPCALLOTHERFIELDSDETAILSPAGE","MPCDETAILSIMAGESTAB","MPCMAINDETAILSTAB","MPCDETAILSMAINTABREPROVISIONCALLTRACKINGNUMBER","MPCDETAILSMAINTABGEOCODES","MPCDETAILSMAINTABDISPLAYONS","MPCDETAILSSCHOOLSTAB","MPCDETAILSSALESCONTACTS","MPCUPDATENUMBER","MPCACTIVEINACTIVEARCHIVE","MPCADDNEW","ADVANCEDSETTINGSTAB","LOTS","LOTSADDNEW","LOTSMAINDETAILS","LOTSUPDATENUMBER","LOTSPRICE","LOTSSTATUS","ACCESSLOADERDATAREPORT","PLDELETEBUTTON","COMMARCHIVEDSTATUS","MLSNAMEPAGE","PREVIEWLINK","PRICEOVERRIDE","LISTHUBCONFIGURATOR","RECOMMENDEDLEADS","CORPSPOTLIGHTMENU","SPOTLIGHTCALENDAR","SPOTLIGHTORDERS","SPOTLIGHTDELETESPOTS","SPOTLIGHTACCESSNEWPERIOD","recordPageView","gtag","page_title","page_path","init","outlet","Router","routes","getRoutes","exploreRoutes","found","exploreChildren","addRoutes","setRoutes","ready","syncLocation","popState","PopStateEvent","dispatchChange","getPageNameFromFriendlyUrl","pathName","segment","startRouterListener","_store","parsedValue","requestAnimationFrame","listen","getParentRoutes","currentRoute","getFullPath","routeParams","parsedParams","fromEntries","paramName","auth","navigationPartner","partnerId","userPartner","can","userBuilder","navigationBuilder","isUserCorpLevel","navigationDivision","userCommunity","navigationCommunity","navigationPlan","normalizrMiddleware","normalizedData","normalize","normalized","flagsMiddleware","errorLoggingMiddleware","matches","actionsList","actionList","logError","actionObject","shift","routerMiddleware","currentLocation","open","go","goForward","initialState","routerReducer","produce","draft","initialPath","nextLocation","lastUniqueLocation","currentUrlparts","lastUrlparts","CLEAR_ERRORS","APP_NOTIFICATION","APP_RESET","LEFT_NAV_VISIBILITY_CHANGED","RUN_ASYNC_REQUEST","RUN_ASYNC_SUCCESS","RUN_ASYNC_FAIL","loadingReducer","objId","requestName","requestState","successReducer","errorReducer","_action","holder","globalReducer","notification","leftMenuVisible","formReducer","edit","__lastChanged","modelObject","__commited","now","_entity","valid","deletedEntity","changeEntity","itemId","givenId","cancelEntity","authInitial","authReducer","configReducer","AppSettings","CONTENT_REQUEST_SUCCESS","CONTENT_REQUEST_FAIL","CONTENT_REQUEST","defaultState","expiration","contentReducer","sectionName","modelsReducer","draftEntities","GET_BUILDER_DIVISIONS_REQUEST","GET_BUILDER_DIVISIONS_SUCCESS","GET_BUILDER_DIVISIONS_FAIL","GET_BUILDER_DISPLAY_CHANNEL_REQUEST","GET_BUILDER_DISPLAY_CHANNEL_SUCCESS","GET_BUILDER_DISPLAY_CHANNEL_FAIL","GET_PARENT_DIVISIONS_REQUEST","GET_PARENT_DIVISIONS_SUCCESS","GET_PARENT_DIVISIONS_FAIL","GET_BUILDER_COUNT_REQUEST","GET_BUILDER_COUNT_SUCCESS","GET_BUILDER_COUNT_FAIL","UPDATE_BUILDER_SERVICE_REQUEST","UPDATE_BUILDER_SERVICE_SUCCESS","UPDATE_BUILDER_SERVICE_FAIL","GET_BUILDER_PRODUCTS_REQUEST","GET_BUILDER_PRODUCTS_SUCCESS","GET_BUILDER_PRODUCTS_FAIL","GET_BUILDER_SPOTLIHGT_INFO_REQUEST","GET_BUILDER_SPOTLIHGT_INFO_SUCCESS","GET_BUILDER_SPOTLIHGT_INFO_FAIL","GET_BUILDER_MISSED_RECLEADS_REQUEST","GET_BUILDER_MISSED_RECLEADS_SUCCESS","GET_BUILDER_MISSED_RECLEADS_FAIL","navigationReducer","MANAGE_COMMUNITIES_GRID_REQUEST","MANAGE_COMMUNITIES_GRID_SUCCESS","MANAGE_COMMUNITIES_GRID_ERROR","MANAGE_COMMUNITIES_STATUS_FACETS_REQUEST","MANAGE_COMMUNITIES_STATUS_FACETS_SUCCESS","MANAGE_COMMUNITIES_STATUS_FACETS_ERROR","MANAGE_COMMUNITIES_STATES_FACETS_REQUEST","MANAGE_COMMUNITIES_STATES_FACETS_SUCCESS","MANAGE_COMMUNITIES_STATES_FACETS_ERROR","MANAGE_COMMUNITIES_BRANDS_FACETS_REQUEST","MANAGE_COMMUNITIES_BRANDS_FACETS_SUCCESS","MANAGE_COMMUNITIES_BRANDS_FACETS_ERROR","MANAGE_COMMUNITIES_MARKETS_FACETS_REQUEST","MANAGE_COMMUNITIES_MARKETS_FACETS_SUCCESS","MANAGE_COMMUNITIES_MARKETS_FACETS_ERROR","MANAGE_COMMUNITIES_CLEAN_FACETS","PLAN_LIBRARY_QUERY_REQUEST","PLAN_LIBRARY_QUERY_SUCCESS","PLAN_LIBRARY_QUERY_FAIL","PLAN_LIBRARY_DELETE_REQUEST","PLAN_LIBRARY_DELETE_SUCCESS","PLAN_LIBRARY_DELETE_FAIL","CHANGE_HISTORY_REQUEST","CHANGE_HISTORY_SUCCESS","CHANGE_HISTORY_FAIL","MANAGE_SPECS_GRID_REQUEST","MANAGE_SPECS_GRID_SUCCESS","MANAGE_SPECS_GRID_ERROR","MANAGE_SPECS_STATUS_FACETS_REQUEST","MANAGE_SPECS_STATUS_FACETS_SUCCESS","MANAGE_SPECS_STATUS_FACETS_ERROR","MANAGE_SPECS_MARKETS_FACETS_REQUEST","MANAGE_SPECS_MARKETS_FACETS_SUCCESS","MANAGE_SPECS_MARKETS_FACETS_ERROR","MANAGE_SPECS_CLEAN_FACETS","COMMUNITY_AVAILABLE_LIBRARY_PLANS_REQUEST","COMMUNITY_AVAILABLE_LIBRARY_PLANS_SUCCESS","COMMUNITY_AVAILABLE_LIBRARY_PLANS_FAIL","COMMUNIIES_QUICK_EDIT_REQUEST","COMMUNIIES_QUICK_EDIT_SUCCESS","COMMUNIIES_QUICK_EDIT_FAIL","COMMUNIIES_QUICK_EDIT_DELETE_REQUEST","COMMUNIIES_QUICK_EDIT_DELETE_SUCCESS","COMMUNIIES_QUICK_EDIT_DELETE_FAIL","PLANS_QUICK_EDIT_REQUEST","PLANS_QUICK_EDIT_SUCCESS","PLANS_QUICK_EDIT_FAIL","PLANS_QUICK_EDIT_DELETE_REQUEST","PLANS_QUICK_EDIT_DELETE_SUCCESS","PLANS_QUICK_EDIT_DELETE_FAIL","COMMUNITIES_QUICK_EDIT_UPDATE_REQUEST","COMMUNITIES_QUICK_EDIT_UPDATE_SUCCESS","COMMUNITIES_QUICK_EDIT_UPDATE_FAIL","PLANS_QUICK_EDIT_UPDATE_REQUEST","PLANS_QUICK_EDIT_UPDATE_SUCCESS","PLANS_QUICK_EDIT_UPDATE_FAIL","SPECS_QUICK_EDIT_UPDATE_REQUEST","SPECS_QUICK_EDIT_UPDATE_SUCCESS","SPECS_QUICK_EDIT_UPDATE_FAIL","SPECS_QUICK_EDIT_REQUEST","SPECS_QUICK_EDIT_SUCCESS","SPECS_QUICK_EDIT_FAIL","SPECS_QUICK_EDIT_DELETE_REQUEST","SPECS_QUICK_EDIT_DELETE_SUCCESS","SPECS_QUICK_EDIT_DELETE_FAIL","COMMUNITY_TESTIMONIALS_REQUEST","COMMUNITY_TESTIMONIALS_SUCCESS","COMMUNITY_TESTIMONIALS_FAIL","COMMUNITY_TESTIMONIALS_INSERT_MUTATION_REQUEST","COMMUNITY_TESTIMONIALS_INSERT_MUTATION_SUCCESS","COMMUNITY_TESTIMONIALS_INSERT_MUTATION_FAIL","COMMUNITY_TESTIMONIALS_UPDATE_MUTATION_REQUEST","COMMUNITY_TESTIMONIALS_UPDATE_MUTATION_SUCCESS","COMMUNITY_TESTIMONIALS_UPDATE_MUTATION_FAIL","COMMUNITY_TESTIMONIALS_DELETE_MUTATION_REQUEST","COMMUNITY_TESTIMONIALS_DELETE_MUTATION_SUCCESS","COMMUNITY_TESTIMONIALS_DELETE_MUTATION_FAIL","BUILDER_TESTIMONIALS_REQUEST","BUILDER_TESTIMONIALS_SUCCESS","BUILDER_TESTIMONIALS_FAIL","COMMUNITY_BROCHURES_REQUEST","COMMUNITY_BROCHURES_SUCCESS","COMMUNITY_BROCHURES_FAIL","COMMUNITY_BROCHURES_INSERT_MUTATION_REQUEST","COMMUNITY_BROCHURES_INSERT_MUTATION_SUCCESS","COMMUNITY_BROCHURES_INSERT_MUTATION_FAIL","COMMUNITY_BROCHURES_UPDATE_MUTATION_REQUEST","COMMUNITY_BROCHURES_UPDATE_MUTATION_SUCCESS","COMMUNITY_BROCHURES_UPDATE_MUTATION_FAIL","COMMUNITY_BROCHURES_DELETE_MUTATION_REQUEST","COMMUNITY_BROCHURES_DELETE_MUTATION_SUCCESS","COMMUNITY_BROCHURES_DELETE_MUTATION_FAIL","COMMUNITY_INCLUDE_BROCHURE_UPDATE_MUTATION_REQUEST","COMMUNITY_INCLUDE_BROCHURE_UPDATE_MUTATION_SUCCESS","COMMUNITY_INCLUDE_BROCHURE_UPDATE_MUTATION_FAIL","COMMUNITY_PROMOTIONS_REQUEST","COMMUNITY_PROMOTIONS_SUCCESS","COMMUNITY_PROMOTIONS_FAIL","COMMUNITY_PROMOTIONS_INSERT_MUTATION_REQUEST","COMMUNITY_PROMOTIONS_INSERT_MUTATION_SUCCESS","COMMUNITY_PROMOTIONS_INSERT_MUTATION_FAIL","COMMUNITY_PROMOTIONS_UPDATE_MUTATION_REQUEST","COMMUNITY_PROMOTIONS_UPDATE_MUTATION_SUCCESS","COMMUNITY_PROMOTIONS_UPDATE_MUTATION_FAIL","COMMUNITY_PROMOTIONS_DELETE_MUTATION_REQUEST","COMMUNITY_PROMOTIONS_DELETE_MUTATION_SUCCESS","COMMUNITY_PROMOTIONS_DELETE_MUTATION_FAIL","COMMUNITY_EVENTS_REQUEST","COMMUNITY_EVENTS_SUCCESS","COMMUNITY_EVENTS_FAIL","COMMUNITY_EVENTS_INSERT_MUTATION_REQUEST","COMMUNITY_EVENTS_INSERT_MUTATION_SUCCESS","COMMUNITY_EVENTS_INSERT_MUTATION_FAIL","COMMUNITY_EVENTS_UPDATE_MUTATION_REQUEST","COMMUNITY_EVENTS_UPDATE_MUTATION_SUCCESS","COMMUNITY_EVENTS_UPDATE_MUTATION_FAIL","COMMUNITY_EVENTS_DELETE_MUTATION_REQUEST","COMMUNITY_EVENTS_DELETE_MUTATION_SUCCESS","COMMUNITY_EVENTS_DELETE_MUTATION_FAIL","COMMUNITY_GREEN_PROGRAMS_REQUEST","COMMUNITY_GREEN_PROGRAMS_SUCCESS","COMMUNITY_GREEN_PROGRAMS_FAIL","BUILDER_GREEN_PROGRAMS_REQUEST","BUILDER_GREEN_PROGRAMS_SUCCESS","BUILDER_GREEN_PROGRAMS_FAIL","GREEN_PROGRAM_UPDATE_MUTATION_REQUEST","GREEN_PROGRAM_UPDATE_MUTATION_SUCCESS","GREEN_PROGRAM_UPDATE_MUTATION_FAIL","LIBRARY_EVENTS_REQUEST","LIBRARY_EVENTS_SUCCESS","LIBRARY_EVENTS_FAIL","LIBRARY_DIVISIONAL_EVENTS_REQUEST","LIBRARY_DIVISIONAL_EVENTS_SUCCESS","LIBRARY_DIVISIONAL_EVENTS_FAIL","LIBRARY_EVENTS_SLIDE_COMMS_REQUEST","LIBRARY_EVENTS_COMMUNITIES_SUCCESS","LIBRARY_EVENTS_GET_COMMS_FAIL","LIBRARY_EVENTS_MULTIPLE_UPDATE_REQUEST","LIBRARY_EVENTS_MULTIPLE_UPDATE_SUCCESS","LIBRARY_EVENTS_MULTIPLE_UPDATE_FAIL","LIBRARY_EVENTS_DELETE_REQUEST","LIBRARY_EVENTS_DELETE_SUCCESS","LIBRARY_EVENTS_DELETE_FAIL","LIBRARY_EVENTS_UPDATE_REQUEST","LIBRARY_EVENTS_UPDATE_SUCCESS","LIBRARY_EVENTS_UPDATE_FAIL","LIBRARY_EVENTS_INSERT_REQUEST","LIBRARY_EVENTS_INSERT_SUCCESS","LIBRARY_EVENTS_INSERT_FAIL","LIBRARY_PROMOS_REQUEST","LIBRARY_PROMOS_SUCCESS","LIBRARY_PROMOS_FAIL","LIBRARY_DIVISIONAL_PROMOS_REQUEST","LIBRARY_DIVISIONAL_PROMOS_SUCCESS","LIBRARY_DIVISIONAL_PROMOS_FAIL","LIBRARY_PROMOS_SLIDE_COMMS_REQUEST","LIBRARY_PROMOS_COMMUNITIES_SUCCESS","LIBRARY_PROMOS_GET_COMMS_FAIL","LIBRARY_PROMOS_MULTIPLE_UPDATE_REQUEST","LIBRARY_PROMOS_MULTIPLE_UPDATE_SUCCESS","LIBRARY_PROMOS_MULTIPLE_UPDATE_FAIL","LIBRARY_PROMOS_DELETE_REQUEST","LIBRARY_PROMOS_DELETE_SUCCESS","LIBRARY_PROMOS_DELETE_FAIL","LIBRARY_PROMOS_UPDATE_REQUEST","LIBRARY_PROMOS_UPDATE_SUCCESS","LIBRARY_PROMOS_UPDATE_FAIL","LIBRARY_PROMOS_INSERT_REQUEST","LIBRARY_PROMOS_INSERT_SUCCESS","LIBRARY_PROMOS_INSERT_FAIL","SEARCH_SUCCESS","SEARCH_FAIL","LEAD_RECIPIENTS_STATUS_FACETS_REQUEST","LEAD_RECIPIENTS_STATUS_FACETS_SUCCESS","LEAD_RECIPIENTS_STATUS_FACETS_FAIL","LEAD_RECIPIENTS_STATES_FACETS_REQUEST","LEAD_RECIPIENTS_STATES_FACETS_SUCCESS","LEAD_RECIPIENTS_STATES_FACETS_FAIL","MANAGE_LEAD_RECIPIENTS_REQUEST","MANAGE_LEAD_RECIPIENTS_SUCCESS","MANAGE_LEAD_RECIPIENTS_FAIL","LEAD_RECIPIENTS_REQUEST","LEAD_RECIPIENTS_SUCCESS","LEAD_RECIPIENTS_FAIL","ASSIGN_LEAD_RECIPIENTS_REQUEST","ASSIGN_LEAD_RECIPIENTS_SUCCESS","ASSIGN_LEAD_RECIPIENTS_FAIL","LEAD_RECIPIENTS_CORPORATE_REQUEST","LEAD_RECIPIENTS_CORPORATE_SUCCESS","LEAD_RECIPIENTS_CORPORATE_FAIL","LEAD_RECIPIENTS_CORPORATE_UPDATE_REQUEST","LEAD_RECIPIENTS_CORPORATE_UPDATE_SUCCESS","LEAD_RECIPIENTS_CORPORATE_UPDATE_FAIL","LEAD_RECIPIENTS_ADVANCED_SETTINGS_REQUEST","LEAD_RECIPIENTS_ADVANCED_SETTINGS_SUCCESS","LEAD_RECIPIENTS_ADVANCED_SETTINGS_FAIL","LEAD_RECIPIENTS_USE_DIVISION_RECIPIENT_REQUEST","LEAD_RECIPIENTS_USE_DIVISION_RECIPIENT_SUCCESS","LEAD_RECIPIENTS_USE_DIVISION_RECIPIENT_FAIL","MANAGE_MPCS_STATUS_FACETS_REQUEST","MANAGE_MPCS_STATUS_FACETS_SUCCESS","MANAGE_MPCS_STATUS_FACETS_ERROR","MANAGE_MPCS_STATES_FACETS_REQUEST","MANAGE_MPCS_STATES_FACETS_SUCCESS","MANAGE_MPCS_STATES_FACETS_ERROR","MANAGE_MPCS_BRANDS_FACETS_REQUEST","MANAGE_MPCS_BRANDS_FACETS_SUCCESS","MANAGE_MPCS_BRANDS_FACETS_ERROR","MANAGE_MPCS_MARKETS_FACETS_REQUEST","MANAGE_MPCS_MARKETS_FACETS_SUCCESS","MANAGE_MPCS_MARKETS_FACETS_ERROR","MANAGE_MPCS_GRID_REQUEST","MANAGE_MPCS_GRID_SUCCESS","MANAGE_MPCS_GRID_ERROR","MANAGE_MPCS_CLEAN_FACETS","BILLING_PRODUCTS_FACETS_REQUEST","BILLING_PRODUCTS_FACETS_SUCCESS","BILLING_PRODUCTS_FACETS_ERROR","BILLING_CUSTOMERS_FACETS_REQUEST","BILLING_CUSTOMERS_FACETS_SUCCESS","BILLING_CUSTOMERS_FACETS_ERROR","BILLING_CYCLES_FACETS_REQUEST","BILLING_CYCLES_FACETS_SUCCESS","BILLING_CYCLES_FACETS_ERROR","BILLING_GRID_REQUEST","BILLING_GRID_SUCCESS","BILLING_GRID_FAIL","BILLING_COUNTS_REQUEST","BILLING_COUNTS_SUCCESS","BILLING_COUNTS_FAIL","AGENT_DETAIL_REQUEST","AGENT_DETAIL_SUCCESS","AGENT_DETAIL_FAIL","GREEN_PROGRAMS_REQUEST","GREEN_PROGRAMS_SUCCESS","GREEN_PROGRAMS_FAIL","handleMultipleEntities","searchReducer","total","count","marketing","divisionals","divisionalsCount","slideOut","planCount","planLibrary","communityCount","quickEditCommunities","specCount","quickEditSpecs","quickEditPlans","assignablePlanLibrary","manageCommunities","facets","communityCounts","manageSpecs","specCounts","specMarkets","manageMpcs","invoicesCounts","billing","counts","types","greenProgramsCount","LOCATION_ZIP_REQUEST","LOCATION_ZIP_SUCCESS","LOCATION_ZIP_FAIL","locationsReducer","zipLocations","currentGeoIds","loc","geoLocationId","PlanLibraryQuery","direction","apiFieldToSortField","PlanLibraryFields","PlanLibraryDelete","setPlanLibraryBaths","setPlanLibraryBeds","setPlanLibraryGarages","setPlanLibrarySearch","setPlanLibraryPagination","setPlanLibraryPageNumber","clearPlanLibraryFilters","setPlanLibrarySort","planLibraryQueryRequest","planLibraryQuerySuccess","planLibraryQueryFail","planLibraryDeleteRequest","ids","planLibraryDeleteSuccess","planLibraryDeleteFail","getPlanLibrarySearch","planLibrarySagas","PLAN_LIBRARY_CHILD_PLANS_REQUEST","PLAN_LIBRARY_CHILD_PLANS_SUCCESS","PLAN_LIBRARY_CHILD_PLANS_FAIL","communityFields","basePlanFields","planLibraryChildPlans","planLibraryChildPlanRequest","planLibraryChildPlanSuccess","planLibraryChildPlanFail","assignedCommunitiesSagas","navPlanListViewQuery","planTreeFragment","NAV_PLAN_LIST_VIEW_FILTER","NAV_PLAN_LIST_VIEW_REQUEST","NAV_PLAN_LIST_VIEW_SUCCESS","PARENT_PAGE_NAVIGATING_FLAG","navPlanListViewFilter","navPlanListViewRequest","navPlanListViewSuccess","planParentSagas","CommunitiesSearch","criteria","Communities","onlyManageLocally","states","SearchArguments","StatusFacetsSearch","StatesFacetsSearch","BrandsFacetsSearch","MarketsFacetsSearch","manageCommunitiesGridRequest","manageCommunitiesGridSuccess","manageCommunitiesGridFail","manageCommunitiesStatusFacetsRequest","manageCommunitiesStatusFacetsSuccess","manageCommunitiesStatusFacetsFail","manageCommunitiesStatesFacetsRequest","manageCommunitiesStatesFacetsSuccess","manageCommunitiesStatesFacetsFail","manageCommunitiesBrandsFacetsRequest","manageCommunitiesBrandsFacetsSuccess","manageCommunitiesBrandsFacetsFail","manageCommunitiesMarketsFacetsRequest","manageCommunitiesMarketsFacetsSuccess","manageCommunitiesMarketsFacetsFail","setManageCommunitiesSort","setManageCommunitiesSearch","setManageCommunitiesPageNumber","setManageCommunitiesFacet","facetName","facetValue","setManageCommunitiesPagination","cleanManageCommunitiesFacets","getStatusFacetsResults","approved","inactive","submitted","archived","disapproved","managedLocally","getStatesFacetsResults","statesTotalCount","getBrandsFacetsResults","brandsTotalCount","brandTotal","elem","m","getMarketsFacetsResults","market","marketTotalCount","marketTotal","getCommunitiesSearch","manageCommunitiesSagas","manageMpcsStatusFacetsRequest","manageMpcsStatusFacetsSuccess","manageMpcsStatusFacetsFail","manageMpcsStatesFacetsRequest","manageMpcsStatesFacetsSuccess","manageMpcsStatesFacetsFail","manageMpcsBrandsFacetsRequest","manageMpcsBrandsFacetsSuccess","manageMpcsBrandsFacetsFail","manageMpcsMarketsFacetsRequest","manageMpcsMarketsFacetsSuccess","manageMpcsMarketsFacetsFail","manageMpcsGridRequest","manageMpcsGridSuccess","manageMpcsGridFail","cleanManageMpcsFacets","setManageMpcsSort","setManageMpcsFacet","setManageMpcsSearch","setManageMpcsPageNumber","setManageMpcsPagination","manageMpcsSagas","SpecsSearch","Specs","prepareMoveInDate","start","end","manageSpecsGridRequest","manageSpecsGridSuccess","manageSpecsGridFail","manageSpecsStatusFacetsRequest","manageSpecsStatusFacetsSuccess","manageSpecsStatusFacetsFail","manageSpecsMarketsFacetsRequest","manageSpecsMarketsFacetsSuccess","manageSpecsMarketsFacetsFail","setManageSpecsMoveIndate","setManageSpecsFacet","setManageSpecsSearch","setManageSpecsSort","setManageSpecsPageNumber","setManageSpecsPagination","cleanManageSpecsFacets","active","getSpecsSearch","manageSpecsSagas","commitEntity","mutateModels","runBeforeSuccess","mutationData","formMutateModels","formDataIndex","mapData","files","filesParams","removeMutationUpperLevel","reformatMutationString","mutationsQuery","entityHasFormData","finalMutation","append","transformedEntities","getMetaName","metaName","parentEntityName","forceEntityNameToParent","entityName","objToAdd","formsChannel","formMutationsChannel","mutateBulkModels","formsBulkChannel","genericFormSagas","resolveApiSortForCommunity","apiPath","CommunitiesQuickEditQuery","order","CommunitiesQuickEditDelete","resolveApiSortForPlans","PlansQuickEditQuery","PlansQuickEditDelete","processCoordinate","coordinate","specsQuickEditUpdate","plansQuickEditUpdate","communitiesQuickEditUpdate","fullNumber","phoneNumber","agentId","agentName","agentTitle","agentEmail","agentPhone","agentExtension","resolveApiSortForSpecs","SpecsQuickEditQuery","SpecsQuickEditDelete","requestCommunitiesQuickEditQuery","requestPlansQuickEditQuery","requestSpecsQuickEditQuery","setQuickEditCommunitiesPagination","setQuickEditCommunitiesPageNumber","setQuickEditCommunitiesSearch","setQuickEditCommunitiesStatus","setQuickEditCommunitiesSort","requestQuickEditCommunities","requestQuickEditCommunitiesSuccess","requestQuickEditCommunitiesFail","deleteQuickEditCommunitiesRequest","deleteQuickEditCommunitiesSuccess","deleteQuickEditCommunitiesFail","setQuickEditPlansPagination","setQuickEditPlansPageNumber","setQuickEditPlansSearch","setQuickEditPlansStatus","setQuickEditPlansSort","requestQuickEditPlans","requestQuickEditPlansSuccess","requestQuickEditPlansFail","deleteQuickEditPlansRequest","deleteQuickEditPlansSuccess","deleteQuickEditPlansFail","setQuickEditSpecsPagination","setQuickEditSpecsPageNumber","setQuickEditSpecsSearch","setQuickEditSpecsStatus","setQuickEditSpecsSort","requestQuickEditSpecs","requestQuickEditSpecsSuccess","requestQuickEditSpecsFail","deleteQuickEditSpecsRequest","deleteQuickEditSpecsSuccess","deleteQuickEditSpecsFail","convertCommunityError","COMMUNITIES_QUICK_EDIT_UPDATE_ERROR","communitiesQuickEditUpdateRequest","communitiesQuickEditUpdateSuccess","communitiesQuickEditUpdateFail","PLANS_QUICK_EDIT_UPDATE_ERROR","plansQuickEditUpdateRequest","plansQuickEditUpdateSuccess","plansQuickEditUpdateFail","convertSpecError","SPECS_QUICK_EDIT_UPDATE_ERROR","specsQuickEditUpdateRequest","specsQuickEditUpdateSuccess","specsQuickEditUpdateFail","getQuickEditData","emptyResult","deleteQuickEditData","quickEditSagas","communityByIdQuery","leadRecipientsStatus","leadRecipientsStates","leadRecipientsCorporate","leadRecipientsAdvancedSettings","communityByIdLeadRecipients","manageLeadRecipients","useDivisionRecipient","useBuilderDefault","assignLeadRecipients","addNew","deliveryFormat","corporate","firstId","firstType","secondId","secondType","leadRecipientsDistributionUpdate","accessLeadAPI","setupMethodBasedArguments","testFtpCredentials","testFTP","setLeadRecipientsFacet","leadRecipientsStatusFacetsRequest","leadRecipientsStatusFacetsSuccess","leadRecipientsStatusFacetsFail","leadRecipientsStatesFacetsRequest","leadRecipientsStatesFacetsSuccess","leadRecipientsStatesFacetsFail","leadRecipientsCorporateRequest","leadRecipientsCorporateSuccess","leadRecipientsCorporateFail","leadRecipientsAdvancedSettingsRequest","leadRecipientsAdvancedSettingsSuccess","leadRecipientsAdvancedSettingsFail","LEAD_RECIPIENT_FAIL_ERROR","leadRecipientsCorporateUpdateRequest","leadRecipientsCorporateUpdateSuccess","leadRecipientsCorporateUpdateFail","setLeadRecipientsSort","setLeadRecipientsSize","setLeadRecipientsSearch","setLeadRecipientsPage","manageLeadRecipientsRequest","manageLeadRecipientsSuccess","manageLeadRecipientsFail","leadRecipientsRequest","leadRecipientsSuccess","leadRecipientsFail","assignLeadRecipientsRequest","assignLeadRecipientsSuccess","assignLeadRecipientsFail","useDivisionRecipientRequest","useDivisionRecipientSuccess","useDivisionRecipientFail","clear","clearChannel","leadRecipientsSagas","resetApp","runAsyncRequest","runAsyncSuccess","runAsyncFail","clearErrors","REFRESH","jwtDecode","base64","getUserContext","userInfoResponse","userName","nhsUserBuilderId","roleGroup","roleName","logInActivities","dDRMonthlyApproval","fullName","role","configureErrorLogging","signIn","requestUser","encryptedUser","UserName","UserId","Roles","expMins","userid","removeItem","logout","sessionStorage","cookie","persistor","flush","purge","versionChangeType","version","redirectOrRefresh","newUrl","reload","select","serviceWorker","getRegistrations","registrations","unregisterPromises","registration","unregister","unregistered","cacheNames","caches","cacheName","recoverPassword","recoverUsername","userActivity","userActivityLogOut","insertUserActivity","activityData","fork","authSagas","takeEvery","globalSagas","SearchQuery","includeCounts","sortBy","searchRequest","sortFields","searchSuccess","searchFail","getGridSearch","searchSagas","API_GET_CHANGE_HISTORY_FIELDS","changeHistorySearchApi","entityIds","searchTerm","changedEntities","excludedEntities","endDate","changeHistoryRequest","changeHistorySuccess","historyData","changeHistoryFail","getChangeHistorySearch","changeHistorySagas","DATA_LOCKS_REQUEST","DATA_LOCKS_SUCCESS","DATA_LOCKS_FAIL","DATA_LOCKS_SAVE_REQUEST","DATA_LOCKS_SAVE_SUCCESS","DATA_LOCKS_SAVE_FAIL","BUILDER_DATA_LOCKS_SAVE_REQUEST","BUILDER_DATA_LOCKS_SAVE_SUCCESS","BUILDER_DATA_LOCKS_SAVE_FAIL","dataLocksQueryApi","dataLocksMutationApi","dataLocks","builderDataLocksMutationApi","dataLocksRequest","dataLocksRequestSuccess","dataLocksRequestFail","dataLocksSaveRequest","dataLocksSaveSuccess","dataLocksSaveFail","builderDataLocksSaveRequest","builderDataLocksSaveSuccess","builderDataLocksSaveFail","dataLocksSagas","API_CONTENT","requestContentApi","contentRequest","contentSuccess","contentFail","INCREMENT_BOOST_PERF_FIRST_SLIDE","incrementBootPerfFirstSlide","max","requestContent","contentSagas","listingDataCompletenessRequest","listingDataCompletenessSuccess","listingDataCompletenessFail","requestListingCompletenessApi","requestListingCompleteness","response2","scoreCardCommunity","scoreHomes","specScore","planScore","listingDetailSagas","searchZipRequest","searchZipSuccess","searchZipFail","MANAGE_HOMES_SPECS_REQUEST","MANAGE_HOMES_SPECS_SUCCESS","MANAGE_HOMES_SPECS_FAIL","MANAGE_HOMES_PLANS_REQUEST","MANAGE_HOMES_PLANS_SUCCESS","MANAGE_HOMES_PLANS_FAIL","manageHomesPlans","manageHomesSpecs","manageHomesSpecsRequest","manageHomesSpecsSuccess","manageHomesSpecsFail","manageHomesPlansRequest","manageHomesPlansSuccess","manageHomesPlansFail","manageHomesSagas","STANDARD_AMENITIES_REQUEST","STANDARD_AMENITIES_SUCCESS","STANDARD_AMENITIES_FAIL","COMMUNITY_SERVICES_REQUEST","COMMUNITY_SERVICES_SUCCESS","COMMUNITY_SERVICES_FAIL","COMMUNITY_HOA_REQUEST","COMMUNITY_HOA_SUCCESS","COMMUNITY_HOA_FAIL","OPEN_AMENITIES_REQUEST","OPEN_AMENITIES_SUCCESS","OPEN_AMENITIES_FAIL","OPEN_AMENITIES_INSERT_MUTATION_REQUEST","OPEN_AMENITIES_INSERT_MUTATION_SUCCESS","OPEN_AMENITIES_INSERT_MUTATION_FAIL","OPEN_AMENITIES_UPDATE_MUTATION_REQUEST","OPEN_AMENITIES_UPDATE_MUTATION_SUCCESS","OPEN_AMENITIES_UPDATE_MUTATION_FAIL","OPEN_AMENITIES_DELETE_MUTATION_REQUEST","OPEN_AMENITIES_DELETE_MUTATION_SUCCESS","OPEN_AMENITIES_DELETE_MUTATION_FAIL","UTILITIES_REQUEST","UTILITIES_SUCCESS","UTILITIES_FAIL","UTILITIES_INSERT_MUTATION_REQUEST","UTILITIES_INSERT_MUTATION_SUCCESS","UTILITIES_INSERT_MUTATION_FAIL","UTILITIES_UPDATE_MUTATION_REQUEST","UTILITIES_UPDATE_MUTATION_SUCCESS","UTILITIES_UPDATE_MUTATION_FAIL","UTILITIES_DELETE_MUTATION_REQUEST","UTILITIES_DELETE_MUTATION_SUCCESS","UTILITIES_DELETE_MUTATION_FAIL","AGENT_COMMISSION_REQUEST","AGENT_COMMISSION_SUCCESS","AGENT_COMMISSION_FAIL","AMENITIES_UTILITIES_MUTATE_REQUEST","AMENITIES_UTILITIES_MUTATE_SUCCESS","AMENITIES_UTILITIES_MUTATE_FAIL","standardAmenitiesFields","communityServicesFields","communityHoaFields","communityOpenAmenitiesFields","communityOpenAmenitiesOperation","communityUtilitiesFields","communityUtilitiesOperation","communityAgentCommissionFields","standardAmenities","communityServices","communityHoa","communityOpenAmenities","communityOpenAmenitiesInsertMutation","communityOpenAmenitiesUpdateMutation","communityOpenAmenitiesDeleteMutation","communityUtilities","communityUtilitiesInsertMutation","communityUtilitiesUpdateMutation","communityUtilitiesDeleteMutation","communityAgentCommission","amenitiesUtilitiesMutation","healthFitnessAmenities","communityServicesAmenities","socialActivitiesAmenities","localAreaAmenities","totalTaxRate","homeOwnerAssociation","agentCommission","_communityServices","monthlyFee","yearlyFee","commission","rateType","basis","payoutTiming","additionalComments","communityService","standardAmenitiesRequest","standardAmenitiesSuccess","standardAmenitiesFail","communityServicesRequest","communityServicesSuccess","communityServicesFail","communityHoaRequest","communityHoaSuccess","communityHoaFail","openAmenitiesRequest","openAmenitiesSuccess","openAmenitiesFail","openAmenitiesInsertMutateRequest","openAmenitiesInsertMutateSuccess","openAmenitiesInsertMutateFail","openAmenitiesUpdateMutateRequest","openAmenitiesUpdateMutateSuccess","openAmenitiesUpdateMutateFail","openAmenitiesDeleteMutateRequest","openAmenitiesDeleteMutateSuccess","openAmenitiesDeleteMutateFail","utilitiesRequest","utilitiesSuccess","utilitiesFail","utilitiesInsertMutateRequest","utilitiesInsertMutateSuccess","utilitiesInsertMutateFail","utilitiesUpdateMutateRequest","utilitiesUpdateMutateSuccess","utilitiesUpdateMutateFail","utilitiesDeleteMutateRequest","utilitiesDeleteMutateSuccess","utilitiesDeleteMutateFail","agentCommissionRequest","agentCommissionSuccess","agentCommissionFail","amenitiesUtilitiesMutateRequest","amenitiesUtilitiesMutateSuccess","amenitiesUtilitiesMutateFail","amenitiesUtilitiesSagas","CommunityTestimonialsSearch","BuilderTestimonialsSearch","communityTestimonialInsertMutation","textTestimonialInsert","videoTestimonialInsert","communityTestimonialUpdateMutation","textTestimonialUpdate","videoTestimonialUpdate","communityTestimonialDeleteMutation","textTestimonialsDelete","videoTestimonialsDelete","CommunityBrochuresSearch","communityBrochureInsertMutation","communityBrochureUpdateMutation","communityBrochureDeleteMutation","communityIncludeBrochureWithHomeUpdateMutation","includeBrochureWithHome","CommunityPromotionsSearch","PromoEventFragment","BuilderFragment","communityPromotionInsertMutation","isDivisional","homeShopperIncentive","setupDateFormat","handleCommsAssociation","communityPromoLockHandler","communityPromotionUpdateMutation","communityPromotionDeleteMutation","CommunityEventsSearch","communityEventInsertMutation","eventDate","startTime","endTime","communityEventLockHandler","communityEventUpdateMutation","communityEventDeleteMutation","CommunityGreenProgramsSearch","GreenFragment","GreenProgramUpdateMutation","programId","commId","BuilderGreenProgramsSearch","getPromoLockType","communityTestimonialsRequest","communityTestimonialsSuccess","communityTestimonialsFail","communityTestimonialsInsertMutateRequest","communityTestimonialsInsertMutateSuccess","communityTestimonialsInsertMutateFail","communityTestimonialsUpdateMutateRequest","communityTestimonialsUpdateMutateSuccess","communityTestimonialsUpdateMutateFail","communityTestimonialsDeleteMutateRequest","communityTestimonialsDeleteMutateSuccess","communityTestimonialsDeleteMutateFail","builderTestimonialsRequest","builderTestimonialsSuccess","builderTestimonialsFail","COMMUNITY_MARKETING_FAIL_ERROR","convertBrochureErrorMessage","communityBrochuresRequest","communityBrochuresSuccess","communityBrochuresFail","communityBrochuresInsertMutateRequest","communityBrochuresInsertMutateSuccess","communityBrochuresInsertMutateFail","communityBrochuresUpdateMutateRequest","communityBrochuresUpdateMutateSuccess","communityBrochuresUpdateMutateFail","communityBrochuresDeleteMutateRequest","communityBrochuresDeleteMutateSuccess","communityBrochuresDeleteMutateFail","communityIncludeBrochureWithHomeUpdateMutationRequest","communityIncludeBrochureWithHomeUpdateMutationSuccess","communityIncludeBrochureWithHomeUpdateMutationFail","communityPromotionsRequest","communityPromotionsSuccess","communityPromotionsFail","communityPromotionsInsertMutateRequest","communityPromotionsInsertMutateSuccess","communityPromotionsInsertMutateFail","communityPromotionsUpdateMutateRequest","communityPromotionsUpdateMutateSuccess","communityPromotionsUpdateMutateFail","communityPromotionsDeleteMutateRequest","communityPromotionsDeleteMutateSuccess","communityPromotionsDeleteMutateFail","communityEventsRequest","communityEventsSuccess","communityEventsFail","communityEventsInsertMutateRequest","communityEventsInsertMutateSuccess","communityEventsInsertMutateFail","communityEventsUpdateMutateRequest","communityEventsUpdateMutateSuccess","communityEventsUpdateMutateFail","communityEventsDeleteMutateRequest","communityEventsDeleteMutateSuccess","communityEventsDeleteMutateFail","communityGreenProgramsRequest","communityGreenProgramsSuccess","communityGreenProgramsFail","builderGreenProgramsRequest","builderGreenProgramsSuccess","greens","builderGreenProgramsFail","greenProgramUpdateMutateRequest","greenProgramUpdateMutateSuccess","greenProgramUpdateMutateFail","getBuilderGreenProgramsResults","programs","communityMarketingSagas","communityAvailableLibraryPlans","countOnly","standaloneAvailableLibraryPlansRequest","communityAvailableLibraryPlansRequest","communityAvailableLibraryPlansSuccess","communityAvailableLibraryPlansFail","fromPlanLibrary","LINKED_TO_VIDEOS_INSERT_MUTATION_REQUEST","LINKED_TO_VIDEOS_INSERT_MUTATION_SUCCESS","LINKED_TO_VIDEOS_INSERT_MUTATION_FAIL","LINKED_TO_VIDEOS_UPDATE_MUTATION_REQUEST","LINKED_TO_VIDEOS_UPDATE_MUTATION_SUCCESS","LINKED_TO_VIDEOS_UPDATE_MUTATION_FAIL","LINKED_TO_VIDEOS_DELETE_MUTATION_REQUEST","LINKED_TO_VIDEOS_DELETE_MUTATION_SUCCESS","LINKED_TO_VIDEOS_DELETE_MUTATION_FAIL","linkedToVideosInsertMutateRequest","linkedToVideosInsertMutateSuccess","linkedToVideosInsertMutateFail","linkedToVideosUpdateMutateRequest","linkedToVideosUpdateMutateSuccess","linkedToVideosUpdateMutateFail","linkedToVideosDeleteMutateRequest","linkedToVideosDeleteMutateSuccess","linkedToVideosDeleteMutateFail","MPC_LINKED_COMMUNITIES_REQUEST","MPC_LINKED_COMMUNITIES_SUCCESS","MPC_LINKED_COMMUNITIES_FAIL","MPC_LINKED_COMMUNITIES_UNLINK_MUTATION_REQUEST","MPC_LINKED_COMMUNITIES_UNLINK_MUTATION_SUCCESS","MPC_LINKED_COMMUNITIES_UNLINK_MUTATION_FAIL","COMMUNITIES_BY_MILES_REQUEST","COMMUNITIES_BY_MILES_SUCCESS","COMMUNITIES_BY_MILES_FAIL","ASSIGN_TO_MASTER_PLANNED_COMMUNITY_REQUEST","ASSIGN_TO_MASTER_PLANNED_COMMUNITY_SUCCESS","ASSIGN_TO_MASTER_PLANNED_COMMUNITY_FAIL","mpcLinkedCommunities","assignToMasterPlannedCommunity","mpcUnlinkCommunities","communitiesByMiles","distance","firstRequest","mpcLinkedCommunitiesRequest","mpcLinkedCommunitiesSuccess","mpcLinkedCommunitiesFail","mpcLinkedCommunitiesUnlinkRequest","mpcLinkedCommunitiesUnlinkSuccess","mpcLinkedCommunitiesUnlinkFail","communitiesByMilesRequest","communitiesByMilesSuccess","communitiesByMilesFail","assignToMasterPlannedCommunityRequest","assignToMasterPlannedCommunitySuccess","assignToMasterPlannedCommunityFail","mpcLinkedCommunitiesSagas","requestCommunity","zipLocation","zips","responseDisplay","lisingPerformanceSelection","requestCommunityChannelDisplay","requestCommunityPerformance","requestSchoolDistricts","transformSchoolsResults","schoolDistrictsByZip","zipDistrictsIds","sd","requestCommunityPartners","communityPartnersSelection","communityDetailSagas","passwordConfirm","emailConfirm","responseRoles","requestPermissions","requestRoles","transformUserServiceResults","currentUserId","userDetailSagas","PLAN_DETAIL_REQUEST","PLAN_DETAIL_SUCCESS","PLAN_DETAIL_FAIL","PLAN_DETAIL_SAVE_REQUEST","PLAN_DETAIL_SAVE_SUCCESS","PLAN_DETAIL_SAVE_FAIL","PLAN_DETAIL_BREAK_INHERITANCE_REQUEST","PLAN_DETAIL_BREAK_INHERITANCE_SUCCESS","PLAN_DETAIL_BREAK_INHERITANCE_FAIL","PLAN_DISTRIBUTION_REQUEST","PLAN_DISTRIBUTION_SUCCESS","PLAN_DISTRIBUTION_FAIL","PLAN_IMAGES_QUERY_REQUEST","PLAN_IMAGES_QUERY_SUCCESS","PLAN_IMAGES_QUERY_FAIL","PLAN_VIDEOS_QUERY_REQUEST","PLAN_VIDEOS_QUERY_SUCCESS","PLAN_VIDEOS_QUERY_FAIL","PLAN_INTERACTIVE_MEDIA_QUERY_REQUEST","PLAN_INTERACTIVE_MEDIA_QUERY_SUCCESS","PLAN_INTERACTIVE_MEDIA_QUERY_FAIL","PLAN_OPTIONS_QUERY_REQUEST","PLAN_OPTIONS_QUERY_SUCCESS","PLAN_OPTIONS_QUERY_FAIL","planDetailRequest","getCommunityLocation","planDetailSuccess","planDetailFail","planDistributionFieldsSuccess","planDistributionFieldsFail","planSaveRequest","planSaveSuccess","planSaveFail","convertPlanErrorMessage","planBreakInheritance","planBreakInheritanceSuccess","planBreakInheritanceFail","planImagesQueryRequest","planImagesQuerySuccess","planImagesQueryFail","planVideosQueryRequest","planVideosQuerySuccess","planVideosQueryFail","planInteractiveMediaQueryRequest","planInteractiveMediaQuerySuccess","planInteractiveMediaQueryFail","planOptionsQueryRequest","planOptionsQuerySuccess","planOptionsQueryFail","PLAN_DETAIL_RESYNC_REQUEST","PLAN_DETAIL_RESYNC_SUCCESS","PLAN_DETAIL_RESYNC_FAIL","SYNC_STANDALONE_TO_LIBRARY_REQUEST","SYNC_STANDALONE_TO_LIBRARY_SUCCESS","SYNC_STANDALONE_TO_LIBRARY_FAIL","resyncPlanMutation","syncStandaloneToLibraryMutation","standaloneId","libraryId","planResyncRequest","planResyncSuccess","resyncPlan","planResyncFail","standAloneSyncError","syncStandaloneToLibraryRequest","syncStandaloneToLibrarySuccess","syncStandaloneToLibraryFail","requestPlanSync","planSyncSagas","imageThumbnailMedium","processingImage","enviromentsPrefixes","clearEnviromentPrefixes","formatImageUrl","imageUrl","forceProd","transformListingImage","newImage","noImage","planEntitySelector","planInfoSelector","entityEdit","originalPlan","planData","planName","communityName","communityStatus","divisionName","partnerName","divisionsCount","transformPlan","builderPlanLibrary","src","thumbnail","method","planOptionsSelector","PLAN_ASSIGNABLE_COMMUNITIES_REQUEST","PLAN_ASSIGNABLE_COMMUNITIES_SUCCESS","PLAN_ASSIGNABLE_COMMUNITIES_FAIL","planAssignableCommunities","planAssignableCommunitiesRequest","planAssignableCommunitiesSuccess","planAssignableCommunitiesFail","communityAssignSagas","requestPlan","isEditing","planCommunity","zipCode","breakInheritance","breakInheritanceChannel","planDetailSagas","SPEC_DETAIL_REQUEST","SPEC_DETAIL_SUCCESS","SPEC_DETAIL_FAIL","SPEC_DETAIL_SAVE_REQUEST","SPEC_DETAIL_SAVE_SUCCESS","SPEC_DETAIL_SAVE_FAIL","SPEC_IMAGES_QUERY_REQUEST","SPEC_IMAGES_QUERY_SUCCESS","SPEC_IMAGES_QUERY_FAIL","SPEC_VIDEOS_QUERY_REQUEST","SPEC_VIDEOS_QUERY_SUCCESS","SPEC_VIDEOS_QUERY_FAIL","SPEC_INTERACTIVE_MEDIA_QUERY_REQUEST","SPEC_INTERACTIVE_MEDIA_QUERY_SUCCESS","SPEC_INTERACTIVE_MEDIA_QUERY_FAIL","specDetailRequest","specDetailSuccess","specDetailFail","specSaveRequest","specSaveSuccess","specSaveFail","convertSpecErrorMessage","specImagesQueryRequest","specImagesQuerySuccess","specImagesQueryFail","specVideosQueryRequest","specVideosQuerySuccess","specVideosQueryFail","specInteractiveMediaQueryRequest","specInteractiveMediaQuerySuccess","specInteractiveMediaQueryFail","requestSpec","specDetailSagas","IMAGES_QUERY_REQUEST","IMAGES_QUERY_SUCCESS","IMAGES_QUERY_FAIL","IMAGES_MUTATE_REQUEST","IMAGES_MUTATE_SUCCESS","IMAGES_MUTATE_FAIL","IMAGES_INSERT_REQUEST","IMAGES_INSERT_SUCCESS","IMAGES_INSERT_FAIL","IMAGES_COPY_REQUEST","IMAGES_COPY_SUCCESS","IMAGES_COPY_FAIL","imagesQueryRequest","imagesQuerySuccess","imagesQueryFail","imagesMutationRequest","imagesMutationSuccess","imagesMutationFail","imagesInsertSuccess","imagesInsertFail","imagesCopyRequest","imagesCopySuccess","imagesCopyFail","convertImageErrorMessage","cloneImages","overrides","cloneImagesChannel","imageSagas","VIDEOS_QUERY_REQUEST","VIDEOS_QUERY_SUCCESS","VIDEOS_QUERY_FAIL","VIDEOS_MUTATE_REQUEST","VIDEOS_MUTATE_SUCCESS","VIDEOS_MUTATE_FAIL","VIDEOS_INSERT_REQUEST","VIDEOS_INSERT_SUCCESS","VIDEOS_INSERT_FAIL","VIDEOS_COPY_REQUEST","VIDEOS_COPY_SUCCESS","VIDEOS_COPY_FAIL","videosQueryRequest","videosQuerySuccess","videosQueryFail","videosMutationRequest","videosMutationSuccess","videosMutationFail","videosInsertSuccess","videosInsertFail","videosCopyRequest","videosCopySuccess","videosCopyFail","convertVideoErrorMessage","cloneVideos","cloneVideosChannel","videoSagas","API_GET_ZIP_INFO_QUERY","requestSearchZipInformation","requestZipInformation","mergedZips","locationSagas","PromotionsSearch","SearchPromotions","excludeCommunityId","excludeDivisionals","hasPDF","PromoFragment","PromotionsUpdate","Update","isBuilderDataFeed","PromotionsInsert","Insert","PromotionsDelete","Delete","AllDivisionCommunitiesQuery","AllDivisionCommunities","Promotion","contentSrc","insert","flyer","promotionsLibraryRequest","promotionsLibrarySuccess","promotionsLibraryFail","promotionsDivisionalLibraryRequest","promotionsDivisionalLibrarySuccess","promotionsDivisionalLibraryFail","promotionsLibraryGetCommunitiesRequest","promotionsLibraryGetCommunitiesSuccess","promotionsLibraryGetCommunitiesFail","promotionsLibraryMultipleUpdateSuccess","promotionsLibraryMultipleUpdateFail","promotionsLibraryDeleteRequest","promotionsLibraryDeleteSuccess","promotionsLibraryDeleteFail","promotionUpdateRequest","promotionUpdateSuccess","promotionUpdateFail","promotionInsertRequest","promotionInsertSuccess","promotionInsertFail","setPromotionsLibraryFilter","setPromotionsLibraryPageNumber","setPromotionsLibraryPagination","setPromotionsLibrarySort","setPromotionsLibrarySearch","clearPromotionsLibraryFilters","getLibrarySearch","promosSagas","EventsSearch","SearchEvents","EventFragment","EventsUpdate","EventsInsert","EventsDelete","Event","eventsLibraryRequest","eventsLibrarySuccess","eventsLibraryFail","eventsDivisionalLibraryRequest","eventsDivisionalLibrarySuccess","eventsDivisionalLibraryFail","eventsLibraryGetCommunitiesRequest","eventsLibraryGetCommunitiesSuccess","eventsLibraryGetCommunitiesFail","eventsLibraryMultipleUpdateSuccess","eventsLibraryMultipleUpdateFail","eventsLibraryDeleteRequest","eventsLibraryDeleteSuccess","eventsLibraryDeleteFail","eventUpdateRequest","eventUpdateSuccess","eventUpdateFail","eventInsertRequest","eventInsertSuccess","eventInsertFail","setEventsLibraryFilter","setEventsLibraryPageNumber","setEventsLibraryPagination","setEventsLibrarySort","setEventsLibrarySearch","clearEventsLibraryFilters","eventsSagas","BDX_TYPE_REQUEST","BDX_TYPE_SUCCESS","BDX_TYPE_FAIL","BdxTypes","PlanAmenities","LivingAreas","PlanDisplay","PlanType","InteractiveMediaType","MasterBedLocation","NumberSectionsEnum","BuildingMethodEnum","ArchitectureStyle","CoolingSystem","ExteriorType","FloorType","HeatingFuel","HeatingSystem","KitchenCountertopMaterial","Appliances","ParkingType","RoofType","WindowInsulationType","WindowMaterialType","WiredType","ViewType","BillingStatus","BcType","SaleStatus","SpecType","CommunityType","LocalAreaAmenities","HealthFitnessAmenities","CommunityServicesAmenities","SocialActivitiesAmenities","CommunityServiceType","RateType","CommissionBasis","PayoutTiming","OpenAmenityGroup","UtilitiesTypes","PlanOption","LeadDeliveryFormat","BDX_TYPES_QUERY","BdxTypeQuery","bdxTypeRequest","bdxTypeSuccess","enumValues","r","bdxTypeFail","bdxTypesSagas","contextSagas","PCI_MODAL_IMAGES_REQUEST","PCI_MODAL_IMAGES_SUCCESS","PCI_MODAL_IMAGES_FAIL","PCI_MODAL_SET_REQUEST","PCI_MODAL_SET_SUCCESS","PCI_MODAL_SET_FAIL","PciModalImagesRequest","PciModalImagesRequestQuery","requestParams","PciModalSetMutation","oldPci","newPci","pciModalImagesRequest","pciModalImagesSuccess","pciModalImagesFail","pciModalSetRequest","pciModalSetSuccess","pciModalSetFail","pciSagas","INTERACTIVE_MEDIA_QUERY_REQUEST","INTERACTIVE_MEDIA_QUERY_SUCCESS","INTERACTIVE_MEDIA_QUERY_FAIL","INTERACTIVE_MEDIA_UPDATE_REQUEST","INTERACTIVE_MEDIA_UPDATE_SUCCESS","INTERACTIVE_MEDIA_UPDATE_FAIL","INTERACTIVE_MEDIA_INSERT_REQUEST","INTERACTIVE_MEDIA_INSERT_SUCCESS","INTERACTIVE_MEDIA_INSERT_FAIL","INTERACTIVE_MEDIA_SAVE_REQUEST","INTERACTIVE_MEDIA_SAVE_SUCCESS","INTERACTIVE_MEDIA_SAVE_FAIL","interactiveMediaQuerySuccess","interactiveMediaQueryFail","interactiveMediaInsertSuccess","interactiveMediaInsertFail","interactiveMediaUpdateSuccess","interactiveMediaUpdateFail","interactiveMediaSaveRequest","interactiveMediaSaveSuccess","interactiveMediaSaveFail","interactiveMediaSagas","API_CONFIG","requestConfig","getConfiguration","configSagas","ASSIGN_PLANS_COMMUNITIES_REQUEST","ASSIGN_PLANS_COMMUNITIES_SUCCESS","ASSIGN_PLANS_COMMUNITIES_FAIL","BREAK_PLANS_INHERITANCE_REQUEST","BREAK_PLANS_INHERITANCE_SUCCESS","BREAK_PLANS_INHERITANCE_FAIL","PLAN_LIBRARY_ASSIGNED","UPDATE_PLANS_STATUS_REQUEST","UPDATE_PLANS_STATUS_SUCCESS","UPDATE_PLANS_STATUS_FAIL","assignPlansCommunities","communityIds","planIds","isFinite","breakPlansInheritance","updatePlansStatus","assignPlansCommunitiesRequest","assignPlansCommunitiesSuccess","assignPlansCommunitiesFail","breakPlansInheritanceRequest","breakPlansInheritanceSuccess","breakPlansInheritanceFail","planLibraryAssigned","assignedPlans","updatePlansStatusRequest","updatePlansStatusSuccess","updatePlansStatusFail","plansSagas","getBuilderDivisionsQuery","updateBuilderServiceQuery","getBuilderDisplayChannelQuery","divisionsByBuilder","getBuilderCount","getBuilderSpotlightInfo","getBuilderMissedRecleads","getBuilderDivisionsRequest","getBuilderDivisionsSuccess","getBuilderDivisionsFail","getBuilderDisplayChannelRequest","getBuilderDisplayChannelSuccess","getBuilderDisplayChannelFail","getParentDivisionsRequest","getParentDivisionsSuccess","getParentDivisionsFail","getbuilderCountRequest","getbuilderCountSuccess","getbuilderCountFail","updateBuilderServiceRequest","updateBuilderServiceSuccess","updateBuilderServiceFail","getbuilderProductsSuccess","getbuilderProductsFail","getbuilderSpotlightInfoRequest","getbuilderSpotlightInfoSuccess","getbuilderSpotlightInfoFail","getbuilderMissedRecleadsRequest","getbuilderMissedRecleadsSuccess","getbuilderMissedRecleadsFail","objectReverse","transformBuilderServiceResults","updateBuilderService","serviceId","optIn","recommendedLeadsSign","builderSagas","LOT_DETAIL_REQUEST","LOT_DETAIL_SUCCESS","LOT_DETAIL_FAIL","LOT_DETAIL_SAVE_REQUEST","LOT_DETAIL_SAVE_SUCCESS","LOT_DETAIL_SAVE_FAIL","LOT_HEADER_REQUEST","LOT_HEADER_SUCCESS","LOT_HEADER_FAIL","LOT_IMAGES_QUERY_REQUEST","LOT_IMAGES_QUERY_SUCCESS","LOT_IMAGES_QUERY_FAIL","LOT_VIDEOS_QUERY_REQUEST","LOT_VIDEOS_QUERY_SUCCESS","LOT_VIDEOS_QUERY_FAIL","LOT_INTERACTIVE_MEDIA_QUERY_REQUEST","LOT_INTERACTIVE_MEDIA_QUERY_SUCCESS","LOT_INTERACTIVE_MEDIA_QUERY_FAIL","LOTS_REQUEST","LOTS_SUCCESS","LOTS_FAIL","lotDetailRequest","lotDetailSuccess","lotDetailFail","lotSaveRequest","lotSaveSuccess","lotSaveFail","convertLotErrorMessage","lotHeaderRequest","lotHeaderSuccess","lotHeaderFail","lotImagesQueryRequest","lotImagesQuerySuccess","lotImagesQueryFail","lotInteractiveMediaQueryRequest","lotInteractiveMediaQuerySuccess","lotInteractiveMediaQueryFail","lotVideosQueryRequest","lotVideosQuerySuccess","lotVideosQueryFail","lotsRequest","lotsSuccess","lotsFail","lotDetailSagas","LOADER_DATA_GRID_REQUEST","LOADER_DATA_GRID_SUCCESS","LOADER_DATA_GRID_FAIL","requestLoaderDataApi","loaderDataRequest","loaderDataSuccess","loaderDataFail","loaderDataSagas","requestMlsNamesApi","mlsNamesSaveMutation","updated","MLS_MANAGEMENT_GRID_REQUEST","MLS_MANAGEMENT_GRID_SUCCESS","MLS_MANAGEMENT_GRID_FAIL","mlsNamesSagas","BRAND_DETAIL_REQUEST","BRAND_DETAIL_SUCCESS","BRAND_DETAIL_FAIL","BRAND_DETAIL_SAVE_REQUEST","BRAND_DETAIL_SAVE_SUCCESS","BRAND_DETAIL_SAVE_FAIL","BRAND_IMAGES_QUERY_REQUEST","BRAND_IMAGES_QUERY_SUCCESS","BRAND_IMAGES_QUERY_FAIL","BRAND_VIDEOS_QUERY_REQUEST","BRAND_VIDEOS_QUERY_SUCCESS","BRAND_VIDEOS_QUERY_FAIL","BRAND_TESTIMONIALS_REQUEST","BRAND_TESTIMONIALS_SUCCESS","BRAND_TESTIMONIALS_FAIL","BRAND_TREE_VIEW_REQUEST","BRAND_TREE_VIEW_SUCCESS","BRAND_TREE_VIEW_FAIL","brandTreeViewRequest","brandTreeViewSuccess","brandTreeViewFail","brandDetailRequest","brandDetailSuccess","brandDetailFail","brandImagesQueryRequest","brandImagesQuerySuccess","brandImagesQueryFail","brandVideosQueryRequest","brandVideosQuerySuccess","brandVideosQueryFail","brandTestimonialsRequest","brandTestimonialsSuccess","brandTestimonialsFail","brandSaveRequest","brandSaveSuccess","eflyers","updateEflyer","insertEflyer","brandSaveFail","brandSagas","agentByBuilderId","dataLock","policy","mapsPolicyData","filePath","flyerImages","formatedName","fileName","pdfUrl","AGENT_FIELDS","AGENT_POLICIES_FIELDS","BUYER_POLICY_FIELDS","BUILDER_LOCATION_FIELDS","agentDetail","requestBuilderData","agentsGetDivisionsData","UPDATE_AGENT_MUTATION","submitterName","agentInfo","updateAgentMutationApi","updateAgentPolicyMutationApi","UPDATE_POLICY_MUTATION","isAgent","policyFields","DELETE_AGENT_POLICY_MUTATION","DELETE_BUYER_POLICY_MUTATION","agentDetailRequest","agentDetailSuccess","agentDetailFail","agentSagas","LISTHUB_DETAIL_REQUEST","LISTHUB_DETAIL_SUCCESS","LISTHUB_DETAIL_FAIL","getListHubFiltersDataById","ListHub","getListHubBuilderData","listHubData","filterSql","isActive","manualLock","newFilters","in","LISTHUB_BUILDER_FIELDS","LISTHUB_RESULTS_FIELDS","listHubDetail","listHub","isManualLock","officeNames","officeIds","brokerNames","builderNames","sortField","sortOrder","filterText","listHubTypeAhead","mlsFilter","listHubCheckFilters","filterNames","filtersCheckQuery","filterQuery","filterName","filterValue","UPDATE_LISTHUB_FILTER_MUTATION","filtersData","setListHubFilterMutationApi","listhubData","listHubDetailRequest","listHubDetailSuccess","listHubDetailFail","listHubSagas","FacetsSearch","searchArguments","facet","CorporationCounts","typesFragment","RequestEmail","InvoicesQuery","Invoices","GridCounts","customers","cycles","emailMessage","product","customer","cycle","billingProductsFacetsRequest","billingProductsFacetsSuccess","billingProductsFacetsFail","billingCustomersFacetsRequest","billingCustomersFacetsSuccess","billingCustomersFacetsFail","billingCyclesFacetsRequest","billingCyclesFacetsSuccess","billingCyclesFacetsFail","setBillingFacet","billingGridRequest","billingGridSuccess","billingGridFail","billingCountsRequest","billingCountsSuccess","billingCountsFail","getFacetsResults","billingSagas","SPOTLIGHT_ORDERS_REQUEST","SPOTLIGHT_ORDERS_SUCCESS","SPOTLIGHT_ORDERS_FAIL","spotlightOrderById","orderId","extraFilters","spotlightOrdersByBuilderAndMarket","getSpotlightData","marketRates","showNewPeriod","totalSpotPerType","months","datesObj","monthList","createListAvailableMonths","details","yearMonth","spotYear","spotMonth","spotDate","groupType","spotType","chipsStatus","spotlightChipsStatus","resultData","groupByListingType","resultGroup","dataColums","dt","spotlightData","verifyStatus","columsDate","spotStatus","spotBuilderId","getSpotlightDateRange","period","periodsForward","periodsBackward","totalNewNextPeriods","startMonth","startDay","startYear","nextOpenMonth","nextOpenDay","currentDate","firstMonthOfPeriod","lastMonthIfPeriod","setFullYear","today","toLocaleDateString","newOpenDate","currentYear","spotlightCanSeeNewPeriod","setMonth","shortMonths","monthYear","todayMonth","_","todayYear","padStart","isDisable","unshift","disabled","nextMonths","toLocaleString","minimumIntegerDigits","useGrouping","dates","rateId","communityRate","homeRate","marketName","currentMonth","itemYear","itemMonth","isPastMonth","rate","isPast","isDisabled","res","props","nextElement","nextIndex","nextDate","formatOrderDetailData","formatShortDate","stringDate","format","listingName","listingImages","startsWith","newDetail","isEmpty","isCommunity","typeText","typeShortText","dateText","listingId","listingNumber","isActiveOnNHS","spotlightOrdersLastOne","SpotlightOrder","lastOrder","isLandingPage","currentYearMonth","filterByOrderCreatedAndPeriod","orderNumber","commsLenght","homesLenght","hasEmptySlots","isPendingOrder","isExpiredOrder","selectedDataStatus","newOrder","orderStatus","position","marketsList","isNeedAttentationOrder","billToCorp","signeeName","SPOTLIGHT_ORDER_FIELDS","SPOTLIGHT_ORDER_DETAIL_FIELDS","retrieveImages","includeInactive","MARKET_FIELDS","MARKET_RATES_FIELDS","spotlightOrdersRequestByDates","isLanding","saveSpotlightOrderMutationApi","spotlight","SAVE_SPOTLIGHT_MUTATION","startPeriodDate","endPeriodDate","detailId","deleteSpotlightOrderMutationApi","spotlightDetails","API_DELETE_SPOTLIGHT_ORDER","marketTreeViewQuery","spotlightOrderRequestById","spotlightOrdersRequestByMarket","spotlightMarket","ordersData","getCommunitiesByBuilderAndMarket","getHomesByBuilderAndMarket","getListingsImage","sendCancelOrderEmailNotification","routeBase","spotlightOrdersRequest","spotlightOrdersSuccess","spotlightOrdersFail","spotlightSagas","GREENFRAGMENT","GreenProgramsRequest","updateGreenProgramMutationApi","internalName","displayName","greenUrl","corporationId","greenFields","DELETE_GREEN_PROGRAM_MUTATION","INSERT_GREEN_PROGRAM_MUTATION","greenGetDivisionsData","GreenProgram","flyerFilePath","greenProgramsRequest","greenProgramsSuccess","greenProgramsFail","setGreemProgramPageNumber","setGreemProgramPagination","setGreemProgramSearch","greenProgramSagas","runner","rootSaga","formsMiddleware","bulkModel","TYPES","changesEntity","editEntities","$saveByModel","changesEntities","imagesReducer","imageCounter","videosReducer","videoCounter","contextReducer","addContext","resultId","pciReducer","whatsNew","dashboardReducer","boostPerfFirstSlideIndex","CHANGE_THEME","themeReducer","theme","initSubject","Subject","storeSubject","asObservable","planListViewFilter","navigationFlag","planParentReducer","pageLocationReducer","paramValue","entitiesMiddleware","DB","DB_NAME","createDataBase","supportedIndexedDB","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","onerror","console","onsuccess","onupgradeneeded","createObjectStore","createIndex","unique","createTransaction","transaction","objectStore","getValue","setValue","leadRecipientsReducer","CLEAR_SCROLLS","scrollReducer","clearScroll","expireTransform","createExpirationTransform","expireKey","persistConfig","storage","stateReconciler","autoMergeLevel3","transforms","blacklist","navigationConfig","contextConfig","createBrowserHistory","normalizr","jsErrorLogging","flags","sagaMiddleware","createSagaMiddleware","compose","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","origCompose","createStore","lazyReducerEnhancer","combineReducers","applyMiddleware","createDebounce","thunk","reduxReset","appReducers","persistCombineReducers","persistReducer","locations","dashboard","pci","planParent","scroll","rootReducer","currentVersion","addReducers","persistStore","run","parsedData","Sentry","Data","Url","logActions","formattedActions","actionKey","errorName","setupErrorLogging","dsn","environment","tracesSampleRate","beforeSend","tags","extra","Device","Screen","screen","height","LitEvent","cancelable","$documentContainer","createElement","innerHTML","appendChild","material","lightTheme","dark","light","sharedColors","colors","sharedStyles","typography","loadingCircle","svg","warning","list","viewList","gridOn","notifications","buyer","performance","arrowLeft","arrowLeftFilled","arrowRight","arrowRightFilled","arrowRightAlt","arrowDown","arrowDownFilled","arrowUp","right","left","dropdown","bricks","sheets","reports","homes","dolar","articles","boost","info","check","checkMark","checkMarkBig","xMark","phoneReprovision","upload","plus","minus","link","linkto","userSimple","drag","play","eye","eyeshadow","hide","trash","grid","bucket","dragArrow","reorder","megaphone","calendar","paperClip","camera","mouse","car","leads","asterisk","infoShadow","done","alert","home","sync","hand","openInNew","heart","heartBroken","tool","PDF","xml","photo","unlock","lock","star","houseWithStars","sortableUp","sortableDown","schoolsIcon","openUrlIcon","noFile","successIcon","errorIcon","closeIconStr","eraseIcon","builderCorpIcon","divisionIcon","marketsIcon","spotlightIcon","shoppingCart","circle","hourglass","denied","checkCircle","download","twoX","contract","longArrowRight","trendingUp","pinkUnion","zondaLogoLight","fileApiIcon","greenProgram","pdf","emptyCheckbox","checkboxChecked","checkboxXMark","template$4","viewStyle","icon","nothing","BdxMessage","decorators","SVGTemplateResult","TemplateResult","template$3","currentTheme","backdrop","modalTheme","cache","confirmLoading","cancelDisabled","classList","modalWidth","confirm","buttons","confirmationCheckbox","buttonsPadding","checkboxChange","checkboxLabel","cancelLabel","isConfirmButtonVisible","confirmDisabled","themeSelector","BdxThemeMixin","baseElement","connect","properties","stateChanged","_BdxThemeMixin","BdxModal","reflect","attribute","_superPropGet","removeEventListener","keyUpBounded","close","checked","isFunction","configurationSchema","closeDelay","elements","alreadyOpened","localName","subscriptionConfig","customElements","injectData","prevent","runCallback","beforeModalOpen","appendModal","updateComplete","afterModalOpen","zIndex","__resolve","setAttribute","cancelButton","confirmButton","body","buttonCancel","modalCancel","beforeModalClose","removeModal","modalConfirm","hidden","confirmed","buttonAction","closing","removeChild","focusOnClose","Element","isConnected","focus","afterModalClose","lastCheck","VERSION_INITIAL_CHECK_MINUTES","VERSION_SECOND_UPDATE_CHECK_MINUTES","isWizardMode","getAppVersion","fetch","json","checkNewVersion","clientVersion","newVersion","oldVersion","checkSiteUpdate","noModal","updateVersionType","versionInfo","newMajor","newMinor","newPath","newBuild","currentMajor","currentMinor","currentPath","currentBuild","newVersionUpdate","newVersionType","showVersionModal","nextRoute","redirects","BdxMainProgress","_displayProgress","blackedListActions","validListActions","render","getBdxliveDomain","EFLYER_PAGE","NEW_EFLYER_PAGE","GEOGRAPHY_PAGE","COMMUNITY_IMPROVE_DATA_SCORE","PLAN_IMPROVE_DATA_SCORE","SPEC_IMPROVE_DATA_SCORE","COOP_CONFIRMATION_REPORT","CONTRACT_SIGNEE","SEE_LEAD_AUG","ACCOUNT_INFO","domain","BDX","ZONDA_SMALL_ICON","hglogo","BdxCarousel","slideIndex","maxDots","slides","dots","showDots","autoHideArrows","interval","getAttribute","css","goPrev","goNext","slide","firstUpdated","this_","showSlides","setupDots","changeArrowsVisibility","container","shadowRoot","querySelector","setInterval","click","delay","arrows","querySelectorAll","timeOut","btn","dot","toggle","assignedNodes","BdxCarouselItem","imagePath","caption","buildLoadingSvg","stroke","radius","template$2","iframeClass","isLoading","alreadyLoggedIn","iframeLoaded","BdxIframe","bind","alreadyLoggedInStorageName","iframe","getElementById","parentNode","requestUpdate","previousContext","recovery","handleLoginClick","getError","isSigningIn","pageRecoveryView","BdxElementMixin","$this","firstElement","keydownHandler","evt","which","lastElement","focusedElement","activeElement","shiftKey","returnValue","_parameters","componentUrl","parameters","isAddNewMode","hasWizardParam","isNewParam","isWizard","isLastTab","entityTypeName","specName","onBeforeLeave","commands","validateElements","makeFocus","invalidElement","findInvalidElements","customValidation","focusFirstInvalidElement","validate","offsetParent","dataset","keep","numValue","valueAsNumber","valueInput","comboInfo","inputVal","newValue","basePath","customDispatchChange","makeReadOnly","elementList","isReadOnly","column","autoSelect","_allCells","_content","firstElementChild","hasAttribute","readonly","focusFirstElement","useStore","classDescriptor","finisher","clazz","__useStoreConnectedCallback","connectedCallback","_this","__observables","__useStoreDisconnectedCallback","disconnectedCallback","loadingHandler","localState","node","oldValue","useLoading","notEqual","initializer","stateInit","entityModel","Image","imageName","MlsName","communityIsWebArch","builderIsWebArch","communityEntitySelector","communityInfoSelector","originalCommunity","builderOrgTypeCode","priceOverrideFlag","brandName","canadianData","displayGuidedToursOnNhs","communityInfo","listingsRegion","transformCommunity","preferred","primaryFlag","districtsEntitySelector","districtsIds","schoolDistrictsByMarketSelector","districtsByMarket","demormalizedData","districtName","getMlsNamesSelector","getMLSById","mlsId","getMLSNameById","background","_BdxElementMixin","BdxLoginBox","static","unsafeCSS","generalStyles","styles","keptLoggedIn","regex","keepInput","validUser","userInput","validPass","passInput","recoveryElement","elemetToRecover","BdxBlank","loadRoutes","consume","consumeNavigate","createContext","BdxRouter","setNavigate","_from","clearNavigate","providedValue","_connect","AppMain","appTitle","isActivityShowNewUrlActive","activity","enableNewUrlConfig","script","textContent","checkChatIsReady","changeChatDefaults","closeIcon","stopPropagation","visibility","chatIcon","transform","bottom","onAppUnload","canDisplayNewUrlModal","showNewUrlModal","chatWasClosed","currentUserLogged","chatLoaded","setupChatSupport","isARedirect"],"ignoreList":[],"sources":["../../src/app/@redux/config/types.js","../../src/app/@redux/config/actions.js","../../src/app/constants/enviroments.js","../../src/app/utils/bdx-lodash-lite/isMobile.js","../../src/app/constants/params.js","../../src/app/@redux/routes/types.js","../../src/app/@redux/routes/actions.js","../../src/app/utils/bdx-lodash-lite/arrayToObject.js","../../src/app/utils/bdx-lodash-lite/empty.js","../../src/app/utils/bdx-lodash-lite/mapObject.js","../../src/app/utils/bdx-lodash-lite/clone.js","../../src/app/constants/bdx-lookups.js","../../src/app/utils/bdx-lodash-lite/date.js","../../src/app/utils/bdx-lodash-lite/debounce.js","../../src/app/utils/bdx-lodash-lite/deepCompare.js","../../src/app/utils/bdx-lodash-lite/deepInclude.js","../../src/app/utils/external/clone.js","../../src/app/utils/bdx-lodash-lite/deepMerge.js","../../src/app/utils/bdx-lodash-lite/encryption.js","../../src/app/utils/bdx-lodash-lite/extend.js","../../src/app/utils/bdx-lodash-lite/isArray.js","../../src/app/utils/bdx-lodash-lite/objectPath.js","../../src/app/utils/bdx-lodash-lite/formatter.js","../../src/app/utils/bdx-lodash-lite/groupBy.js","../../src/app/utils/bdx-lodash-lite/hasOwnProp.js","../../src/app/utils/bdx-lodash-lite/includes.js","../../src/app/utils/bdx-lodash-lite/isPrimitive.js","../../src/app/utils/bdx-lodash-lite/loopObject.js","../../src/app/utils/bdx-lodash-lite/masks.js","../../src/app/utils/bdx-lodash-lite/omit.js","../../src/app/utils/bdx-lodash-lite/orderBy.js","../../src/app/utils/bdx-lodash-lite/reverseEntries.js","../../src/app/utils/bdx-lodash-lite/stringToPrimitive.js","../../src/app/utils/bdx-lodash-lite/uniq.js","../../src/app/utils/bdx-lodash-lite/unquotedStringify.js","../../src/app/utils/bdx-lodash-lite/wait.js","../../src/app/utils/bdx-lodash-lite/word.js","../../src/app/utils/bdx-lodash-lite/json/text.js","../../src/app/utils/bdx-lodash-lite/isDevMode.js","../../src/app/utils/bdx-lodash-lite/isNullish.js","../../src/app/utils/models.js","../../src/app/utils/api/graph-helpers.js","../../src/app/models/Partner.js","../../src/app/models/Builder.js","../../src/app/app.entities.js","../../src/app/utils/filter/filtering-lib.js","../../src/app/@redux/models/selectors.js","../../src/app/modules/auth/@redux/selectors.js","../../src/app/modules/auth/@redux/types.js","../../src/app/utils/error-handling/types/BdxError.js","../../src/app/utils/error-handling/types/AuthenticationError.js","../../src/app/utils/error-handling/types/InvalidEntityError.js","../../src/app/utils/error-handling/types/NetworkError.js","../../src/app/utils/error-handling/types/ServerError.js","../../src/app/utils/error-handling/helpers.js","../../src/app/utils/api/api.js","../../src/app/modules/auth/@redux/api.js","../../src/app/modules/user-management/redux/types.js","../../src/app/modules/user-management/redux/api.js","../../src/app/@redux/forms/types.js","../../src/app/@redux/forms/actions.js","../../src/app/@redux/models/types.js","../../src/app/@redux/models/actions.js","../../src/app/modules/user-management/redux/actions.js","../../src/app/models/User.js","../../src/app/modules/auth/@redux/actions.js","../../src/app/utils/routing/queryParams.js","../../src/app/@redux/models/api.js","../../src/app/utils/saga/saga-helpers.js","../../src/app/@redux/models/sagas.js","../../src/app/@redux/context/types.js","../../src/app/@redux/context/api.js","../../src/app/modules/listings-detail/community-detail/@redux/types.js","../../src/app/@redux/videos/api.js","../../src/app/@redux/images/api.js","../../src/app/modules/listings-detail/@redux/interactive-media/api.js","../../src/app/modules/listings-detail/community-detail/@redux/api.js","../../src/app/modules/listings-detail/community-detail/@redux/actions.js","../../src/app/models/Community.js","../../src/app/modules/listings-detail/plan-detail/@redux/api.js","../../src/app/models/Plan.js","../../src/app/modules/listings-detail/spec-detail/@redux/api.js","../../src/app/models/Spec.js","../../src/app/modules/listings-detail/lot-detail/@redux/api.js","../../src/app/models/Lot.js","../../src/app/@redux/entities/community/selectors.js","../../src/app/@redux/entities/plan/selectors.js","../../src/app/@redux/entities/spec/selectors.js","../../src/app/@redux/entities/brand/selectors.js","../../src/app/@redux/entities/lot/selectors.js","../../src/app/modules/brand/@redux/selectors.js","../../src/app/modules/brand/@redux/fields.js","../../src/app/modules/brand/@redux/api.js","../../src/app/models/Brand.js","../../src/app/@redux/context/actions.js","../../src/app/models/Division.js","../../src/app/@redux/forms/selectors.js","../../src/app/@redux/selectors.js","../../src/app/modules/listings-detail/@redux/types.js","../../src/app/modules/listings-detail/@redux/selectors.js","../../src/app/utils/entities/builder/libraryType.js","../../src/app/@redux/entities/builder/selectors.js","../../src/app/modules/global/@redux/selectors.js","../../src/app/@redux/context/selectors.js","../../src/app/@redux/entities/division/selectors.js","../../src/app/@redux/entities/user/selectors.js","../../src/app/utils/security/check-security.js","../../src/app/utils/routing/location.js","../../src/app/shared/components/route-forward.js","../../src/app/app.location.js","../../src/app/@redux/routes/selectors.js","../../src/app/@redux/page-location/types.js","../../src/app/@redux/page-location/actions.js","../../src/app/modules/global/@redux/types.js","../../src/app/modules/global/@redux/api.js","../../src/app/modules/global/@redux/actions.js","../../src/app/@redux/actionEffect.js","../../src/app/@redux/page-location/selectors.js","../../src/app/utils/security/authorization.js","../../src/app/utils/analytics/pageView.js","../../src/app/utils/routing/router-helpers.js","../../src/app/@redux/models/middlewares.js","../../src/app/@redux/middlewares.js","../../src/app/@redux/routes/middlewares.js","../../src/app/@redux/routes/reducers.js","../../src/app/@redux/types.js","../../src/app/@redux/reducers.js","../../src/app/@redux/forms/reducers.js","../../src/app/modules/auth/@redux/reducers.js","../../src/app/@redux/config/reducers.js","../../src/app/@redux/content/types.js","../../src/app/@redux/content/reducers.js","../../src/app/@redux/models/reducers.js","../../src/app/@redux/entities/builder/types.js","../../src/app/modules/global/@redux/reducers.js","../../src/app/modules/landing-pages/community/@redux/types.js","../../src/app/modules/content-libraries/plans/@redux/types.js","../../src/app/modules/global/components/bdx-change-history/@redux/types.js","../../src/app/modules/landing-pages/spec/@redux/types.js","../../src/app/modules/listings-detail/community-detail/@redux/planLibrary/types.js","../../src/app/modules/quick-edit-table/redux/types.js","../../src/app/modules/listings-detail/community-detail/@redux/marketing/types.js","../../src/app/modules/content-libraries/events/@redux/types.js","../../src/app/modules/content-libraries/promotions/@redux/types.js","../../src/app/@redux/search/types.js","../../src/app/modules/lead-recipients/redux/types.js","../../src/app/modules/landing-pages/mpc/@redux/types.js","../../src/app/modules/billing/@redux/types.js","../../src/app/modules/agent/@redux/types.js","../../src/app/modules/content-libraries/green-program/@redux/types.js","../../src/app/@redux/search/reducers.js","../../src/app/@redux/location/types.js","../../src/app/@redux/location/reducers.js","../../src/app/modules/content-libraries/plans/@redux/api.js","../../src/app/modules/content-libraries/plans/@redux/actions.js","../../src/app/modules/content-libraries/plans/@redux/sagas.js","../../src/app/modules/content-libraries/plans/@redux/assigned-communities/types.js","../../src/app/modules/content-libraries/plans/@redux/assigned-communities/api.js","../../src/app/modules/content-libraries/plans/@redux/assigned-communities/actions.js","../../src/app/modules/content-libraries/plans/@redux/assigned-communities/sagas.js","../../src/app/modules/content-libraries/plans/plan-parent-detail/@redux/api.js","../../src/app/modules/content-libraries/plans/plan-parent-detail/@redux/types.js","../../src/app/modules/content-libraries/plans/plan-parent-detail/@redux/actions.js","../../src/app/modules/content-libraries/plans/plan-parent-detail/@redux/sagas.js","../../src/app/modules/landing-pages/community/@redux/api.js","../../src/app/modules/landing-pages/community/@redux/actions.js","../../src/app/modules/landing-pages/community/@redux/sagas.js","../../src/app/modules/landing-pages/mpc/@redux/api.js","../../src/app/modules/landing-pages/mpc/@redux/actions.js","../../src/app/modules/landing-pages/mpc/@redux/sagas.js","../../src/app/modules/landing-pages/spec/@redux/api.js","../../src/app/modules/landing-pages/spec/@redux/actions.js","../../src/app/modules/landing-pages/spec/@redux/sagas.js","../../src/app/@redux/forms/api.js","../../src/app/@redux/forms/sagas.js","../../src/app/modules/quick-edit-table/redux/api.js","../../src/app/modules/quick-edit-table/redux/actions.js","../../src/app/modules/quick-edit-table/redux/sagas.js","../../src/app/@redux/entities/community/api.js","../../src/app/modules/lead-recipients/redux/api.js","../../src/app/modules/lead-recipients/redux/actions.js","../../src/app/modules/lead-recipients/redux/sagas.js","../../src/app/@redux/actions.js","../../src/app/utils/security/jwt.js","../../src/app/modules/auth/@redux/sagas.js","../../src/app/modules/global/@redux/sagas.js","../../src/app/@redux/search/api.js","../../src/app/@redux/search/actions.js","../../src/app/@redux/search/sagas.js","../../src/app/modules/global/components/bdx-change-history/@redux/api.js","../../src/app/modules/global/components/bdx-change-history/@redux/actions.js","../../src/app/modules/global/components/bdx-change-history/@redux/sagas.js","../../src/app/modules/global/components/bdx-data-locks/@redux/types.js","../../src/app/modules/global/components/bdx-data-locks/@redux/api.js","../../src/app/modules/global/components/bdx-data-locks/@redux/actions.js","../../src/app/modules/global/components/bdx-data-locks/@redux/sagas.js","../../src/app/@redux/content/api.js","../../src/app/@redux/content/actions.js","../../src/app/modules/content/views/dashboard/@redux/types.js","../../src/app/modules/content/views/dashboard/@redux/actions.js","../../src/app/@redux/content/sagas.js","../../src/app/modules/listings-detail/@redux/actions.js","../../src/app/modules/listings-detail/@redux/api.js","../../src/app/modules/listings-detail/@redux/sagas.js","../../src/app/@redux/location/actions.js","../../src/app/modules/listings-detail/community-detail/@redux/manage-homes/types.js","../../src/app/modules/listings-detail/community-detail/@redux/manage-homes/api.js","../../src/app/modules/listings-detail/community-detail/@redux/manage-homes/actions.js","../../src/app/modules/listings-detail/community-detail/@redux/manage-homes/sagas.js","../../src/app/modules/listings-detail/community-detail/@redux/amenities-utilities/types.js","../../src/app/modules/listings-detail/community-detail/@redux/amenities-utilities/api.js","../../src/app/modules/listings-detail/community-detail/@redux/amenities-utilities/actions.js","../../src/app/modules/listings-detail/community-detail/@redux/amenities-utilities/sagas.js","../../src/app/modules/listings-detail/community-detail/@redux/marketing/api.js","../../src/app/modules/listings-detail/community-detail/@redux/marketing/actions.js","../../src/app/modules/listings-detail/community-detail/@redux/marketing/sagas.js","../../src/app/modules/listings-detail/community-detail/@redux/planLibrary/api.js","../../src/app/modules/listings-detail/community-detail/@redux/planLibrary/actions.js","../../src/app/modules/listings-detail/community-detail/@redux/planLibrary/sagas.js","../../src/app/modules/listings-detail/community-detail/@redux/videos/types.js","../../src/app/modules/listings-detail/community-detail/@redux/videos/actions.js","../../src/app/modules/listings-detail/community-detail/@redux/videos/sagas.js","../../src/app/modules/listings-detail/mpc-detail/components/mpc-linked-communities/@redux/types.js","../../src/app/modules/listings-detail/mpc-detail/components/mpc-linked-communities/@redux/api.js","../../src/app/modules/listings-detail/mpc-detail/components/mpc-linked-communities/@redux/actions.js","../../src/app/modules/listings-detail/mpc-detail/components/mpc-linked-communities/@redux/sagas.js","../../src/app/modules/listings-detail/community-detail/@redux/sagas.js","../../src/app/modules/user-management/redux/sagas.js","../../src/app/modules/listings-detail/plan-detail/@redux/types.js","../../src/app/modules/listings-detail/plan-detail/@redux/actions.js","../../src/app/modules/listings-detail/plan-detail/@redux/plan-sync/types.js","../../src/app/modules/listings-detail/plan-detail/@redux/plan-sync/api.js","../../src/app/modules/listings-detail/plan-detail/@redux/plan-sync/actions.js","../../src/app/modules/listings-detail/plan-detail/@redux/plan-sync/sagas.js","../../src/assets/images/thumbnails/image-preview-med@2x.jpg","../../src/assets/images/thumbnails/imgBeingProcessed.png","../../src/app/utils/images/image-url.js","../../src/app/modules/listings-detail/plan-detail/@redux/selectors.js","../../src/app/modules/listings-detail/plan-detail/@redux/community-assign/types.js","../../src/app/modules/listings-detail/plan-detail/@redux/community-assign/api.js","../../src/app/modules/listings-detail/plan-detail/@redux/community-assign/actions.js","../../src/app/modules/listings-detail/plan-detail/@redux/community-assign/sagas.js","../../src/app/modules/listings-detail/plan-detail/@redux/sagas.js","../../src/app/modules/listings-detail/spec-detail/@redux/types.js","../../src/app/modules/listings-detail/spec-detail/@redux/actions.js","../../src/app/modules/listings-detail/spec-detail/@redux/sagas.js","../../src/app/@redux/images/types.js","../../src/app/@redux/images/actions.js","../../src/app/@redux/images/sagas.js","../../src/app/@redux/videos/types.js","../../src/app/@redux/videos/actions.js","../../src/app/@redux/videos/sagas.js","../../src/app/@redux/location/api.js","../../src/app/@redux/location/sagas.js","../../src/app/modules/content-libraries/promotions/@redux/api.js","../../src/app/models/Promotion.js","../../src/app/modules/content-libraries/promotions/@redux/actions.js","../../src/app/modules/content-libraries/promotions/@redux/sagas.js","../../src/app/modules/content-libraries/events/@redux/api.js","../../src/app/models/Event.js","../../src/app/modules/content-libraries/events/@redux/actions.js","../../src/app/modules/content-libraries/events/@redux/sagas.js","../../src/app/@redux/bdx-type/types.js","../../src/app/@redux/bdx-type/api.js","../../src/app/@redux/bdx-type/actions.js","../../src/app/@redux/bdx-type/sagas.js","../../src/app/@redux/context/sagas.js","../../src/app/modules/listings-detail/community-detail/@redux/pci/types.js","../../src/app/modules/listings-detail/community-detail/@redux/pci/api.js","../../src/app/modules/listings-detail/community-detail/@redux/pci/actions.js","../../src/app/modules/listings-detail/community-detail/@redux/pci/sagas.js","../../src/app/modules/listings-detail/@redux/interactive-media/types.js","../../src/app/models/InteractiveMedia.js","../../src/app/modules/listings-detail/@redux/interactive-media/actions.js","../../src/app/modules/listings-detail/@redux/interactive-media/sagas.js","../../src/app/@redux/config/api.js","../../src/app/@redux/config/sagas.js","../../src/app/@redux/entities/plan/types.js","../../src/app/@redux/entities/plan/api.js","../../src/app/@redux/entities/plan/actions.js","../../src/app/@redux/entities/plan/sagas.js","../../src/app/@redux/entities/builder/api.js","../../src/app/@redux/entities/builder/actions.js","../../src/app/utils/bdx-lodash-lite/objectReverse.js","../../src/app/@redux/entities/builder/sagas.js","../../src/app/modules/listings-detail/lot-detail/@redux/types.js","../../src/app/modules/listings-detail/lot-detail/@redux/actions.js","../../src/app/modules/listings-detail/lot-detail/@redux/sagas.js","../../src/app/modules/admin/loader-data/@redux/types.js","../../src/app/modules/admin/loader-data/@redux/api.js","../../src/app/modules/admin/loader-data/@redux/actions.js","../../src/app/modules/admin/loader-data/@redux/sagas.js","../../src/app/modules/admin/mls-management/@redux/api.js","../../src/app/modules/admin/mls-management/@redux/types.js","../../src/app/modules/admin/mls-management/@redux/actions.js","../../src/app/modules/admin/mls-management/@redux/sagas.js","../../src/app/modules/brand/@redux/types.js","../../src/app/modules/brand/@redux/actions.js","../../src/app/modules/brand/@redux/sagas.js","../../src/app/modules/agent/@redux/selectors.js","../../src/app/modules/agent/@redux/fields.js","../../src/app/modules/agent/@redux/api.js","../../src/app/models/Agent.js","../../src/app/modules/agent/@redux/actions.js","../../src/app/modules/agent/@redux/sagas.js","../../src/app/modules/listhub/@redux/types.js","../../src/app/modules/listhub/@redux/selectors.js","../../src/app/modules/listhub/@redux/fields.js","../../src/app/modules/listhub/@redux/api.js","../../src/app/models/ListHub.js","../../src/app/modules/listhub/@redux/actions.js","../../src/app/modules/listhub/@redux/sagas.js","../../src/app/modules/billing/@redux/api.js","../../src/app/modules/billing/@redux/actions.js","../../src/app/modules/billing/@redux/sagas.js","../../src/app/modules/spotlight/@redux/types.js","../../src/app/modules/spotlight/@redux/selectors.js","../../src/app/modules/spotlight/@redux/fields.js","../../src/app/modules/spotlight/@redux/api.js","../../src/app/models/SpotlightOrder.js","../../src/app/modules/spotlight/@redux/actions.js","../../src/app/modules/spotlight/@redux/sagas.js","../../src/app/modules/content-libraries/green-program/@redux/fields.js","../../src/app/modules/content-libraries/green-program/@redux/api.js","../../src/app/models/GreenProgram.js","../../src/app/modules/content-libraries/green-program/@redux/actions.js","../../src/app/modules/content-libraries/green-program/@redux/sagas.js","../../src/app/@redux/sagas.js","../../src/app/@redux/forms/middlewares.js","../../src/app/@redux/images/reducers.js","../../src/app/@redux/videos/reducers.js","../../src/app/@redux/context/reducers.js","../../src/app/modules/listings-detail/community-detail/@redux/pci/reducers.js","../../src/app/modules/content/views/dashboard/@redux/reducers.js","../../src/app/@redux/theme/types.js","../../src/app/@redux/theme/reducers.js","../../src/app/utils/redux/storeSubscriptionSubject.js","../../src/app/modules/content-libraries/plans/plan-parent-detail/@redux/reducers.js","../../src/app/@redux/page-location/reducers.js","../../src/app/@redux/entities/middleware.js","../../src/app/utils/indexed-db/index.js","../../src/app/modules/lead-recipients/redux/reducers.js","../../src/app/@redux/scroll/types.js","../../src/app/@redux/scroll/reducers.js","../../src/app/app.store.js","../../src/app/@redux/config/selectors.js","../../src/app/utils/error-handling/logging.js","../../src/app/utils/events/LitEvent.js","../../src/assets/css/custom-components/custom-btn.js","../../src/assets/css/custom-components/custom-combobox.js","../../src/assets/css/custom-components/custom-combobox-item.js","../../src/assets/css/custom-components/custom-text-field.js","../../src/assets/css/custom-components/custom-number-field.js","../../src/assets/css/custom-components/custom-select-text-field.js","../../src/assets/css/custom-components/custom-select.js","../../src/assets/css/custom-components/custom-select-overlay.js","../../src/assets/css/custom-components/custom-item.js","../../src/assets/css/custom-components/custom-dropdown-menu-text-field.js","../../src/assets/css/custom-components/custom-radio-group.js","../../src/assets/css/custom-components/custom-checkbox.js","../../src/assets/css/custom-components/custom-text-area.js","../../src/assets/css/custom-components/custom-radio-button.js","../../src/assets/css/custom-components/custom-dropdown-menu-overlay.js","../../src/assets/css/custom-components/custom-password-field.js","../../src/assets/css/custom-components/custom-upload-file.js","../../src/assets/css/custom-components/custom-upload.js","../../src/assets/css/custom-components/custom-grid.js","../../src/assets/css/custom-components/custom-grid-sorter.js","../../src/assets/css/custom-components/custom-date-picker.js","../../src/assets/css/custom-components/custom-date-picker-overlay.js","../../src/assets/css/custom-components/custom-combo-box-overlay.js","../../src/assets/css/custom-components/custom-progress-bar.js","../../src/assets/css/custom-components/custom-notification.js","../../src/assets/css/custom-components/custom-context-menu-overlay.js","../../src/assets/css/theming/material-theme.js","../../src/assets/css/theming/colors.js","../../src/assets/css/shared/shared-styles.js","../../src/assets/css/theming/typography.js","../../src/assets/css/images/icons.js","../../src/app/shared/components/messages/message.html.js","../../src/app/shared/components/messages/message.js","../../src/app/shared/components/modal/modal.html.js","../../src/app/@redux/theme/selectors.js","../../src/app/utils/mixins/views/bdx-theme-mixin.js","../../src/app/shared/components/modal/modal.js","../../src/app/utils/services/modal-service.js","../../src/app/utils/version/version-helpers.js","../../src/app/app.redirects.js","../../src/app/modules/global/components/bdx-main-progress.js","../../src/app/constants/bdx-live-url.js","../../src/assets/css/images/logos.js","../../src/app/shared/components/carousel/bdx-carousel.js","../../src/app/shared/components/carousel/bdx-carousel-item.js","../../src/assets/css/images/loading-svg.js","../../src/app/shared/components/iframe/bdx-iframe.html.js","../../src/app/shared/components/iframe/bdx-iframe.js","../../src/app/modules/auth/components/bdx-login-box/bdx-login-box.html.js","../../src/app/utils/mixins/views/bdx-element-mixin.js","../../src/app/utils/@decorators/useStore.js","../../src/app/utils/@decorators/useLoading.js","../../src/app/models/Image.js","../../src/app/models/MlsName.js","../../src/app/modules/listings-detail/community-detail/@redux/selectors.js","../../src/assets/images/mock/background@3x.png","../../src/app/modules/auth/components/bdx-login-box/bdx-login-box.js","../../src/app/shared/components/bdx-blank.js","../../src/app/app.router.js","../../src/app/shared/components/bdx-router.js","../../src/app/app.main.html.js","../../src/app/app.main.js"],"sourcesContent":["export const CONFIG_REQUEST_SUCCESS = 'bdxlive/config/config_success';\r\nexport const CONFIG_REQUEST_FAIL = 'bdxlive/config/config_fail';\r\nexport const CONFIG_REQUEST = 'bdxlive/config/config_request';\r\n","/**\r\n * Action module contained in ConfigRedux namespace\r\n * @author Gary Valverde Hampton \r\n */\r\nimport { CONFIG_REQUEST_SUCCESS, CONFIG_REQUEST_FAIL, CONFIG_REQUEST } from './types';\r\n\r\n/**\r\n * Configuration request action creator\r\n */\r\nexport const configRequest = () => ({ type: CONFIG_REQUEST });\r\n/**\r\n * Configuration request success action creator\r\n * @param { Object } config configuration object\r\n */\r\nexport const configSuccess = (config) => ({ type: CONFIG_REQUEST_SUCCESS, data: { config } });\r\n/**\r\n * Configuration request error action creator\r\n * @param { Error } error error thrown\r\n */\r\nexport const configFail = (error) => ({ type: CONFIG_REQUEST_FAIL, error: true, data: error });\r\n","/**\r\n * BDX Enviroments\r\n */\r\nexport const enviroments = {\r\n DEV: 'DEV',\r\n BUILD: 'BUILD',\r\n TEST: 'TEST',\r\n STAGE: 'STAGE',\r\n PROD: 'PROD',\r\n};\r\n","export const isTablet = () => {\r\n const userAgent = navigator.userAgent.toLowerCase();\r\n const check = /(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(userAgent);\r\n return check;\r\n};\r\n","// NAVIGATION\r\nexport const PARTNER = 'partner';\r\nexport const BUILDER = 'builder';\r\nexport const DIVISION = 'division';\r\nexport const COMMUNITY = 'community';\r\nexport const PLAN = 'plan';\r\nexport const SPEC = 'spec';\r\n\r\n// FILTERS\r\nexport const STATUS = 'status';\r\nexport const SEARCH = 'search';\r\nexport const MOVEINDATE = 'moveindate';\r\nexport const OTHER = 'other';\r\n\r\n// FACETS\r\nexport const TYPE = 'type';\r\nexport const BATHS = 'baths';\r\nexport const BEDS = 'beds';\r\nexport const GARAGES = 'garages';\r\nexport const STATES = 'states';\r\nexport const BRANDS = 'brands';\r\nexport const MARKETS = 'markets';\r\nexport const PRODUCTS = 'productNames';\r\nexport const CUSTOMERS = 'customerIds';\r\nexport const CYCLES = 'billingCycles';\r\n\r\n// PAGINATION\r\nexport const PAGE_NUMBER = 'page';\r\nexport const PAGE_SIZE = 'page-size';\r\n\r\nexport const SORT = 'sort';\r\n","export const PUSH_STATE = 'bdxlive/router/push';\r\nexport const REPLACE_STATE = 'bdxlive/router/replace';\r\nexport const GO = 'bdxlive/router/go';\r\nexport const GO_BACK = 'bdxlive/router/go-back';\r\nexport const GO_FORWARD = 'bdxlive/go-forward';\r\nexport const CHANGE_LOCATION = 'bdxlive/router/change-location';\r\nexport const LAST_LOCATION = 'bdxlive/router/last_location';\r\nexport const NEXT_LOCATION = 'bdxlive/router/next_location';\r\n","import { parse } from 'query-string';\r\nimport { PUSH_STATE, REPLACE_STATE, GO, GO_BACK, GO_FORWARD, CHANGE_LOCATION, LAST_LOCATION, NEXT_LOCATION } from './types';\r\n\r\n// TODO push query with full state\r\nexport const go = (href) => ({ type: GO, data: { href } });\r\nexport const goBack = () => ({ type: GO_BACK });\r\nexport const goForward = () => ({ type: GO_FORWARD });\r\nexport const pushState = (href, force, ctrl) => ({ type: PUSH_STATE, data: { href, force, ctrl } });\r\nexport const replaceState = (href) => ({ type: REPLACE_STATE, data: { href } });\r\nexport const saveLastLocation = ({ pathname, search, hash }, current) => ({\r\n type: LAST_LOCATION,\r\n data: {\r\n last: {\r\n pathname,\r\n search,\r\n queries: parse(search),\r\n hash,\r\n },\r\n current,\r\n },\r\n});\r\nexport const saveNextLocation = ({ pathname, search, hash } = {}) => ({\r\n type: NEXT_LOCATION,\r\n data: {\r\n pathname,\r\n search,\r\n queries: parse(search),\r\n hash,\r\n },\r\n});\r\nexport const changeLocation = ({ pathname, search, hash }) => ({\r\n type: CHANGE_LOCATION,\r\n data: {\r\n pathname,\r\n search,\r\n queries: parse(search),\r\n hash,\r\n },\r\n});\r\n","/**\r\n * Takes an array of objects and merge every value into a single object\r\n * @param {*} array\r\n */\r\nexport const arrayToObject = (array) => array.reduce((memo, obj) => ({ ...memo, ...obj }), {});\r\n\r\n/**\r\n * Takes an array of objects and merge every value into a single object using as property the specified field in the array\r\n * @param {*} array\r\n * @field {*} field to be used as property name\r\n */\r\nexport const arrayToObjectByField = (array, field) =>\r\n array.reduce((obj, item) => {\r\n obj[item[field]] = item;\r\n return obj;\r\n }, {});\r\n","/**\r\n * Check if the array is empty\r\n * returns false if the param is not an array\r\n * @param {*} array\r\n */\r\nexport const arrayEmpty = (array) => (array instanceof Array ? array.length <= 0 : false);\r\n/**\r\n * Check if the object is empty\r\n * returns false if the param is not an object\r\n * @param {*} object\r\n */\r\nexport const objectEmpty = (object) => (object instanceof Object ? Object.keys(object).length <= 0 : false);\r\n/**\r\n * Check if the string is empty\r\n * returns false if the param is not an string\r\n * @param {*} string\r\n */\r\nconst stringEmpty = (string) => (string instanceof String ? string.length <= 0 : false);\r\n\r\n/**\r\n * Checks if an object is empty\r\n * @param {*} obj\r\n */\r\nexport const empty = (obj) => !obj || arrayEmpty(obj) || objectEmpty(obj) || stringEmpty(obj);\r\n","import { arrayToObject } from './arrayToObject';\r\n\r\n/**\r\n * Map through the properties of an object\r\n * @param {*} obj\r\n * @param {*} func\r\n */\r\nexport const mapObject = (obj = {}, func) => (obj.constructor === Object ? arrayToObject(Object.keys(obj).map((key) => ({ [key]: func(obj[key], key, obj) })) || []) : {});\r\n","import { empty } from './empty';\r\nimport { mapObject } from './mapObject';\r\n\r\n/**\r\n * Clone a js Object using Json\r\n * @param { * } object to be clonned\r\n */\r\nexport const cloneOld = (object) => {\r\n return JSON.parse(JSON.stringify(object));\r\n};\r\n/**\r\n *\r\n * @param { Object|Array } object Object to be cloned\r\n * @param { Number } level the amount of levels to be cloned\r\n */\r\nexport const clone = (object, level) => {\r\n if (level !== undefined && level < 0) return object;\r\n switch (!empty(object) && object.constructor) {\r\n case Object: {\r\n if (level !== undefined) {\r\n level -= 1;\r\n }\r\n return { ...mapObject(object, (value) => clone(value, level)) };\r\n }\r\n case Array:\r\n return [...object.map((value) => clone(value, level))];\r\n default:\r\n return object;\r\n }\r\n};\r\n","/**\r\n * Version update Type, specifies what changed from major to path order\r\n */\r\nexport const versionType = {\r\n UNCHANGE: 0,\r\n MAJOR: 1,\r\n MINOR: 2,\r\n PATH: 3,\r\n BUILD: 4,\r\n};\r\n\r\n/**\r\n * BDX marketing status letters and theirs descriptions\r\n */\r\nexport const marketingStatusText = {\r\n Normal: 'Normal',\r\n ComingSoon: 'Coming Soon',\r\n GrandOpening: 'Grand Opening',\r\n CloseOut: 'Close-Out',\r\n Unknown: 'Unknown',\r\n};\r\n\r\n/**\r\n * Modal steps for both recommended/augmented leads modals\r\n */\r\nexport const leadsModalSteps = {\r\n OVERVIEW: 1,\r\n SIGN: 2,\r\n USERS: 3,\r\n};\r\n\r\n/**\r\n * Error message Messages.\r\n */\r\nexport const ErrorMessages = { UserWrongBuilder: \"The user doesn't have permission to see data from other builders\" };\r\n\r\n/**\r\n * Specific user IDs across all environments.\r\n */\r\nexport const bdxUserIds = { Loader: 2 };\r\n\r\n/**\r\n * Modal steps for the recommended leads modal\r\n */\r\nexport const bhiContent = {\r\n NEWAD: 'dashboard.new-ad',\r\n RECLEADS: 'dashboard.rec-leads',\r\n WHATNEW: 'dashboard.whats-new',\r\n BOOSTYOURPERFORMANCE: 'dashboard.boost-your-performance',\r\n WELCOMEMESSAGE: 'dashboard.welcome-message',\r\n};\r\n\r\nexport const spotlightStatus = {\r\n CLAIMED: 'Claimed',\r\n AVAILABLE: 'Available',\r\n UNAVAILABLE: 'Unavailable',\r\n SELECTED: 'Selected',\r\n YOURS: \"It's Yours!\",\r\n PENDING: 'Pending',\r\n NOTAPPLICABLE: 'Applicable',\r\n};\r\n\r\nexport const statusName = {\r\n APPROVED: 'Approved',\r\n SUBMITTED: 'Submitted',\r\n DISAPPROVED: 'Disapproved',\r\n};\r\n\r\n/**\r\n * BDX Community Type\r\n */\r\nexport const communityTypeNames = {\r\n ADU: 'Adult',\r\n AGR: 'AgeRestricted',\r\n CON: 'CondoOnly',\r\n GAT: 'Gated',\r\n GRN: 'Green',\r\n MPL: 'MasterPlanned',\r\n THM: 'TownHomes',\r\n URB: 'Urban',\r\n};\r\n\r\n/**\r\n * BDX Community Type\r\n */\r\nexport const permissionsGroups = {\r\n AdminListingsDataLocks: 13,\r\n PlanLevelOverrides: 14,\r\n};\r\n\r\n// BDXLive Permission Types\r\nexport const permissionType = {\r\n Read: 2,\r\n Write: 4,\r\n Lock: 8,\r\n Nothing: 1,\r\n};\r\n\r\n// BDXLive Permission Id\r\nexport const permissionId = { MarketingHeadline: 102 };\r\n\r\n/** Builder Type Descriptions */\r\nexport const builderTypeDescription = {\r\n CSL: 'Custom',\r\n CST: 'Production - Custom',\r\n DEV: 'Developer',\r\n MFR: 'Manufactured',\r\n PRD: 'Production',\r\n};\r\n\r\nexport const orgTypeCode = {\r\n DEV: 'DEV',\r\n CST: 'CST',\r\n CSL: 'CSL',\r\n PRD: 'PRD',\r\n MFR: 'MFR',\r\n};\r\n\r\n/** Basic Redesing Partners */\r\nexport const basicRedesignPartners = {\r\n NewHomeSource: { id: 500, name: 'BDX' },\r\n BuilderHomeSite: { id: 96, name: 'BuilderHomeSite' },\r\n};\r\n\r\n/** Basic Redesing Partners */\r\nexport const guidedTourPartners = {\r\n 'Select a Provider': { value: 'None', id: 0 },\r\n UTour: { value: 'UTour', id: 824 },\r\n NterNow: { value: 'NterNow', id: 876 },\r\n SmartRent: { value: 'SmartRent', id: 875 },\r\n};\r\n\r\n/**\r\n * BDX Billing Status\r\n */\r\nexport const billingStatusNames = {\r\n None: 'None',\r\n Active: 'Active',\r\n Pending: 'Pending',\r\n Closed: 'Closed',\r\n CloseOut: 'Close out',\r\n DisplayNotBill: 'Display but not bill',\r\n NhcSmall: 'NHC Small Builder Rate',\r\n NhcSpecial: 'NHC Special Pricing',\r\n};\r\n\r\n/**\r\n * Global regions where listings are supported.\r\n */\r\nexport const regions = {\r\n USA: 'USA',\r\n CAN: 'Canada',\r\n};\r\n\r\nexport const activityTypeCode = {\r\n IN: 'IN', // user log in\r\n OUT: 'OUT', // user log out\r\n RWD: 'RWD', // user acept welcome modal\r\n URL: 'URL', // user acept notification of new url\r\n RLS: 'RLS', // user signs rec lead program\r\n RLP: 'RLP', // user set users for rec lead program\r\n};\r\n\r\nexport const recLeadSelectionNames = {\r\n Selected: 'IncludeBilled', // \"B\" value in DB.\r\n Unselected: 'ExcludeBilled', // \"E\" value in DB.\r\n};\r\n\r\nexport const builderServiceCode = {\r\n DigitalDashboardReport: 1,\r\n DigitalDashboardDivisionAccess: 2,\r\n BDXtractorDataEntry: 3,\r\n ShowBuilderShowcase: 4,\r\n BuilderCallTracking: 5,\r\n RETSMLSDataEntry: 6,\r\n SmartTouchLead: 7,\r\n PartnerFeedExclude: 8,\r\n AllowUTMTracking: 10,\r\n AccessAugmentedLead: 12,\r\n SoldDataCollection: 14,\r\n AccessLeadAPI: 16,\r\n Diagnostic: 19,\r\n NonDiagnostic: 20,\r\n NHSProSoldDataCollection: 22,\r\n UploadSoldData: 23,\r\n PublishReviews: 24,\r\n TrustBuilderSyndication: 26,\r\n LAaaS: 27,\r\n MigrationStatusCode: 31,\r\n SourceSpecHomesFromListHub: 32,\r\n SoldDataVersion: 35,\r\n SelfGuidedTour: 37,\r\n CanadianData: 38,\r\n DisplayCommunityAppointmentScheduler: 39,\r\n SendTextReminder: 40,\r\n ZeroPriceListing: 41,\r\n BasePriceSuppression: 42,\r\n SurveyIncludeImages: 43,\r\n RCMLeadProgram: 46,\r\n};\r\n\r\nexport const userServiceCode = { RCMLeadManageSelections: 45 };\r\n\r\n/**\r\n * Available Corporate preferences to choose\r\n * from in order to receive their leads.\r\n */\r\nexport const leadDeliveryMethods = {\r\n Email: { id: 'Email', name: 'Email' },\r\n FTP: { id: 'FtpPush', name: 'FTP Push' },\r\n None: { id: 'None', name: 'Clear Corporate Lead Recipient' },\r\n};\r\n\r\n/**\r\n * BDX community listing type letters and theirs descriptions\r\n */\r\nexport const listinTypeText = { N: 'Normal', B: 'BOYL', M: 'MPC', U: 'Unknown' };\r\n\r\n/**\r\n * BDX community listing type letters and theirs descriptions\r\n */\r\nexport const planTypeText = { SF: 'SingleFamily', B: 'Boyl', MF: 'MultiFamily' };\r\n\r\n/**\r\n * BDX community listing type letters and theirs descriptions\r\n */\r\nexport const planTypeName = { SF: 'Single Family', MF: 'Multi Family', U: 'Unknown' };\r\n\r\n/**\r\n * BDX Live Status ids and theirs descriptions for UI\r\n */\r\nexport const statusUIText = {\r\n 1: 'Active',\r\n 2: 'Inactive',\r\n 11: 'Submitted',\r\n 12: 'Active',\r\n 20: 'Archived',\r\n 8: 'SpecOnly',\r\n};\r\n\r\n/**\r\n * BDX Live Status names and their ids\r\n */\r\nexport const statusIds = {\r\n Active: 1,\r\n Inactive: 2,\r\n SpecOnly: 8,\r\n Submitted: 11,\r\n Approved: 12,\r\n Archived: 20,\r\n Deleted: 15,\r\n};\r\n\r\nexport const specType = {\r\n NotApplicable: 'NotApplicable',\r\n Portfolio: 'Portfolio',\r\n Model: 'Model',\r\n};\r\n\r\n/**\r\n * BDX Live Home Status texts\r\n */\r\nexport const homeStatusMessage = {\r\n ReadyToBuild: { text: 'Ready to Build', color: 'orange' },\r\n ReadytoMoveIn: { text: 'Ready to Move in', color: 'green' },\r\n UnderConstruction: { text: 'Now Building', color: 'blue' },\r\n};\r\n\r\n/**\r\n * Bdx plan display ids values\r\n */\r\nexport const planDisplayNameText = {\r\n NotSpecified: 'Not Specified',\r\n Condo: 'Condominium',\r\n Townhome: 'Townhome',\r\n Townhouse: 'Townhouse',\r\n Duplex: 'Duplex',\r\n Multi: 'Multiplex',\r\n Carriage: 'CarriageHouse',\r\n Gardenhouse: 'GardenHouse',\r\n Gardenhome: 'GardenHome',\r\n Cape: 'CapeCod',\r\n Ranch: 'Ranch',\r\n Tiny: 'TinyHome',\r\n};\r\n\r\n/**\r\n * Bdx plan amenities ids values\r\n */\r\nexport const planAmenityNames = {\r\n Condo: 'Condominium',\r\n Bay: 'BayWindows',\r\n Breakfast: 'BreakfastArea',\r\n CovPatop: 'CoveredPatio',\r\n CovPorch: 'CoveredFrontPorch',\r\n Deck: 'Deck',\r\n Disabled: 'DisabledAccess',\r\n Dock: 'Dock',\r\n Firepit: 'Firepit',\r\n Fireplaces: 'Fireplaces',\r\n Flexroom: 'FlexRoom',\r\n Flexspace: 'FlexSpace',\r\n GreenCons: 'GreenConstruction',\r\n Keeping: 'KeepingRoom',\r\n Multi: 'Multigenerational',\r\n Mudroom: 'MudRoom',\r\n Outdoor: 'OutdoorKitchen',\r\n Patio: 'Patio',\r\n Playroom: 'PlayRoom',\r\n Porch: 'Porch',\r\n Skylight: 'Skylight',\r\n Sprinkler: 'SprinklerSystem',\r\n Vaulted: 'VaultedCeilings',\r\n Walk: 'WalkInClosets',\r\n Wraparound: 'WraparoundPorch',\r\n};\r\n\r\n/**\r\n * Bdx plan number of sections values\r\n */\r\nexport const planSectionsNames = {\r\n Single: 'Single',\r\n Double: 'Double',\r\n Triple: 'Triple',\r\n Quad: 'Quad',\r\n};\r\n\r\n/**\r\n * Bdx plan Building Methods names\r\n */\r\nexport const planBuildingMethodsNames = {\r\n Manufactured: 'Manufactured',\r\n Modular: 'Modular',\r\n Cross: 'Cross Modular',\r\n};\r\n\r\n/**\r\n * BDX Live Status ids and theirs descriptions based on DB\r\n */\r\nexport const statusText = {\r\n 1: 'Active',\r\n 2: 'Inactive',\r\n 3: 'ImageCannotDownld',\r\n 4: 'Processed - OK',\r\n 5: 'ImageDisplayReady',\r\n 7: 'Processing',\r\n 8: 'SpecOnly',\r\n 9: 'To be processed',\r\n 10: 'In Progress',\r\n 11: 'Submitted',\r\n 12: 'Approved',\r\n 13: 'Incomplete',\r\n 14: 'Disapproved',\r\n 15: 'Deleted',\r\n 16: 'Sold',\r\n 17: 'Unsold',\r\n 18: 'SoldAtCommunity',\r\n 19: 'TollFreeSuspended',\r\n 20: 'Archived',\r\n 21: 'Duplicate',\r\n 22: 'SubmittedDeactive',\r\n 33: 'BadURL',\r\n 100: 'Download Error',\r\n 101: 'File Not Found',\r\n 102: 'Permission Denied',\r\n 103: 'Timeout',\r\n 104: 'Server Error',\r\n 105: 'Download Error HTTP',\r\n 106: 'Service Unavailable',\r\n 107: 'DownloadInvalidPath',\r\n 108: 'DwnldInvalidFileSize',\r\n 109: 'DwnldTooMnyRedirects',\r\n 150: 'Invalid Image',\r\n 151: 'Invalid File Size',\r\n 152: 'File IO',\r\n 153: 'ImgErrRmtFileNotImg',\r\n 200: 'Resize Error',\r\n 210: 'Multi-page PDF',\r\n 220: 'BrightCoveError',\r\n 250: 'Unknown Error',\r\n};\r\n\r\n/**\r\n * BDX Live agent policies selection level\r\n */\r\nexport const agentLevel = {\r\n CORP: 'Corporation',\r\n DIV: 'Division',\r\n MRKT: 'Market',\r\n};\r\n\r\n/**\r\n * BDX Live green programs selection level\r\n */\r\nexport const greenLevel = {\r\n CORP: 'Corporation',\r\n DIV: 'Division',\r\n COMM: 'Community',\r\n};\r\n\r\n/**\r\n * BDX Live agent policies type\r\n */\r\nexport const agentType = {\r\n CoOp: 'CoOpConfirmation',\r\n Agent: 'AgentFriendly',\r\n Pac: 'AgentPartnershipPact',\r\n};\r\n\r\n/**\r\n * BDX Live Links Codes and theirs descriptions\r\n */\r\nexport const linksCodestoName = {\r\n EBR: 'Plan Viewer',\r\n VIR: 'Virtual Tour',\r\n COM: 'Community Image',\r\n};\r\n\r\n/**\r\n * BDX Live Plan Summary Codes and theirs descriptions\r\n */\r\nexport const summaryPlanCodeToName = {\r\n ATT: 'Attic',\r\n BA: 'Baths',\r\n BAS: 'Basement',\r\n BAY: 'Bay Windows',\r\n BBG: 'BathsBelowGrade',\r\n BED: 'Beds',\r\n BFA: 'Breakfast Area',\r\n BON: 'Bonus Room',\r\n BYW: 'Bay Windnows',\r\n CON: 'Condo',\r\n COP: 'Covered Patio',\r\n DAC: 'DisabledAccess',\r\n DEK: 'Deck',\r\n DIN: 'Dining Room',\r\n DOK: 'Dock',\r\n DSA: 'Disabled Access',\r\n EXL: 'Excludes Land',\r\n FAM: 'Family Room',\r\n FIR: 'Fireplaces',\r\n FLR: 'Floor',\r\n FLX: 'Flex Room',\r\n FPT: 'Firepit',\r\n FRP: 'Firepit',\r\n FXR: 'FlexRoom',\r\n GAE: 'Garage Entry',\r\n GAM: 'Game Room',\r\n GAR: 'Garages',\r\n GRC: 'Green Construction',\r\n GRE: 'Green Construction',\r\n GUE: 'Guest Room',\r\n HBA: 'Half Baths',\r\n HOT: 'Hot home',\r\n HRS: 'HERSScore',\r\n KPR: 'Keeping Room',\r\n LIV: 'Living Room',\r\n LOC: 'Location',\r\n LOF: 'Loft',\r\n MAS: 'Primary Bed Upstairs',\r\n MED: 'Media Room',\r\n MIL: 'Mother in Law',\r\n MLS: 'MLS number',\r\n MUD: 'Mud Room',\r\n ODK: 'OutDoorKitchen',\r\n OFF: 'Office',\r\n OKT: 'Outdoor Kitchen',\r\n PAT: 'Patio',\r\n PCH: 'Porch',\r\n PLR: 'Play Room',\r\n PRH: 'Porch',\r\n PTO: 'Patio',\r\n QBA: 'QuarterBaths',\r\n RBG: 'RoomsBelowGrade',\r\n RVG: 'RVGarage',\r\n SAG: 'SqftAboveGrade',\r\n SBG: 'SqftBelowGrade',\r\n SKL: 'Skylight',\r\n SPR: 'SprinklerSystem',\r\n SPS: 'Sprinkler System',\r\n STO: 'Stories',\r\n STU: 'Study',\r\n SUN: 'Sun Room',\r\n TBA: 'ThreeQuarterBaths',\r\n TDA: 'TotalDiningAreas',\r\n TLA: 'TotalLivingAreas',\r\n TNH: 'Townhome',\r\n TRM: 'TotalRooms',\r\n VAU: 'Vaulted Ceiling',\r\n WAL: 'Walk-In Closets',\r\n WBR: 'Wetbar',\r\n WFT: 'Waterfront',\r\n};\r\n\r\nexport const leadRecipientType = {\r\n Default: 'Default',\r\n Copy: 'Copy',\r\n};\r\n\r\n/**\r\n * BDX Live Phone Types for Sales Office\r\n */\r\nexport const phoneTypes = {\r\n Tracking: 'Tracking',\r\n Phone: 'Phone',\r\n Fax: 'Fax',\r\n};\r\n\r\nexport const invoicesTypes = {\r\n PastDue: 'PastDue',\r\n Current: 'Current',\r\n Paid: 'Paid',\r\n};\r\n\r\nexport const imageType = {\r\n 360: '360', // 360\r\n AGT: 'Agt', // Agent Photo\r\n ASL: 'Asl', // Accreditation Seal\r\n BAA: 'Baa', // Brand Awards\r\n BKL: 'Bkl', // Broker Logo\r\n BRD: 'Brd', // Brand Image\r\n BVT: 'Bvt', // Video Testimonial\r\n CBR: 'Cbr', // COMMUNITY BANNER\r\n CML: 'Cml', // Community Logo\r\n CMP: 'Cmp', // COMMUNITY MAP\r\n CMT: 'Cmt', // COMM MAP THUMBNAIL\r\n COM: 'Com', // COMMUNITY\r\n CVT: 'Cvt', // Video Testimonial\r\n EBR: 'Ebr', // EBROCHURE\r\n EDC: 'Edc', // Plan EDC Link\r\n EDS: 'Eds', // Spec EDC Link\r\n EDX: 'Edx', // Community EDC Link\r\n ELE: 'Ele', // ELEVATION\r\n EVW: 'Evw', // eView\r\n FCI: 'Fci', // Featured Community\r\n FLP: 'Flp', // FLOOR PLAN\r\n GEC: 'Gec', // Energy Conservation\r\n GHH: 'Ghh', // Healthy Home\r\n GOG: 'Gog', // Other Green Prtcs\r\n GPR: 'Gpr', // Green Program\r\n GSM: 'Gsm', // Sust Mat & Resources\r\n GWC: 'Gwc', // Water Conservation\r\n INT: 'Int', // INTERIOR\r\n LOT: 'Lot', // LOT MAP\r\n LST: 'Lst', // ListingImage\r\n LTI: 'Lti', // Lot Image\r\n MAP: 'Map', // DRIVING DIRECTION\r\n MED: 'Med', // LOGO MEDIUM\r\n PBD: 'Pbd', // Plan Brand Logo\r\n SML: 'Sml', // LOGO SMALL\r\n SVT: 'Svt', // COMMUNITY VIDEO TOUR\r\n VIR: 'Vir', // VIRTUAL TOUR\r\n};\r\n\r\nexport const imageTypeNames = {\r\n LOT: 'Lot Map',\r\n MAP: 'Driving Direction Map',\r\n INT: 'Interior',\r\n FLP: 'Floor Plan',\r\n ELE: 'Elevation',\r\n COM: 'Community',\r\n ASL: 'Accreditation Seal',\r\n CBR: 'Community Banner',\r\n SVT: 'Linked-to Video',\r\n EDX: 'Envision Design Center',\r\n CVT: 'Testimonial Url',\r\n AGT: 'Sales Agent',\r\n CML: 'Community Logo',\r\n LTI: 'Lot',\r\n BAA: 'Award',\r\n BRD: 'Brand',\r\n};\r\n\r\nexport const mpcImageTypeNames = {\r\n LOT: 'MPC Map',\r\n MAP: 'Driving Direction Map',\r\n COM: 'MPC Image',\r\n ASL: 'Accreditation Seal',\r\n CML: 'Community Logo',\r\n};\r\n\r\nexport const imageStatus = {\r\n Active: 1,\r\n Deactive: 2,\r\n CannotDownload: 3,\r\n ProcessDone: 4,\r\n DisplayReady: 5,\r\n Processing: 7,\r\n SpecOnly: 8,\r\n New: 9,\r\n};\r\n\r\nexport const libraryStatus = {\r\n ALL: 'All',\r\n ACTIVE: 'Active',\r\n INACTIVE: 'Inactive',\r\n};\r\n\r\nexport const brandStatus = {\r\n PUBLISHED: 'Published',\r\n UNPUBLISHED: 'Unpublished',\r\n};\r\n\r\nexport const planLibraryType = {\r\n NOTSET: 'NotSet',\r\n BUILDER: 'Builder',\r\n DIVISION: 'Division',\r\n};\r\n\r\nexport const listHubStatus = {\r\n NotLoaded: 'Not Loaded - No Community Match',\r\n NoZipMatch: 'Not Loaded - No Zip Match',\r\n NoPlanMatch: 'Loaded - No Plan Match',\r\n Success: 'Loaded - Succes',\r\n};\r\n\r\n/**\r\n * Social media brands\r\n */\r\nexport const brandMedia = {\r\n None: 'none',\r\n RssUrl: 'rssUrl',\r\n Facebook: 'facebook',\r\n TwitterWidget: 'twitterWidget',\r\n};\r\n\r\n/**\r\n * List hub filter field names\r\n */\r\nexport const listHubFilterField = {\r\n MlsNames: 'mlsNames',\r\n OfficeIds: 'officeIds',\r\n OfficeNames: 'officeNames',\r\n BrokerNames: 'brokerNames',\r\n BuilderNames: 'builderNames',\r\n Description: 'description',\r\n};\r\n\r\n/**\r\n * BDX Change history Field Names vs Field Labels in the UI\r\n */\r\nexport const changeHistoryFieldNames = {\r\n builder: {\r\n corporatereportingrecipient: 'Corporate Reporting Recipient',\r\n buildercorporatedistribution: 'Corporate Distribution',\r\n agentpolicybuilderoptin: 'Division',\r\n agentpolicymarketoptin: 'Market',\r\n optintype: 'Type',\r\n submittername: 'Submitted on behalf of',\r\n filepath: 'PDf file',\r\n ListHubBuilderFilter: 'Listhub Filter',\r\n },\r\n community: {\r\n number: 'Community Number',\r\n name: 'Community Name',\r\n buildercommunitynumber: 'Community Number',\r\n marketingheadline: 'Marketing Headline',\r\n url: 'Website Url',\r\n buildercommunitydescription: 'Community Description',\r\n listingtypeflag: 'Build On Your Lot',\r\n squarefeetlow: 'Sq.Ft Low',\r\n squarefeethigh: 'Sq.Ft High',\r\n pricelow: 'Price Low',\r\n pricehigh: 'Price High',\r\n hidepriceoverride: 'Hide Price Override',\r\n hoursofoperation: 'Sales Office Hours',\r\n outofcommunity: 'Sales office Outside the Community',\r\n communityenvisionurl: 'Design Center Url',\r\n communityschedulerurl: 'Scheduler Url',\r\n bctype: 'Marketing Status',\r\n communitytypecode: 'Community Style',\r\n communitydistrict: 'School District',\r\n school: 'School',\r\n statusid: 'Status',\r\n agentcommission: 'Agent Commission',\r\n ratetype: 'Rate Type',\r\n payouttiming: 'Payout Timing',\r\n commissionbasis: 'Commission Basis',\r\n totaltaxrate: 'Total Annual Tax Rate',\r\n salesofficeaddress1: 'Sales Office Address1',\r\n salesofficeaddress2: 'Sales Office Address2',\r\n salesofficelatitude: 'Sales Office Latitude',\r\n salesofficelongitude: 'Sales Office Longitude',\r\n salesofficezip: 'Sales Office Zip',\r\n salesofficecity: 'Sales Office City',\r\n salesofficestate: 'Sales Office State',\r\n salesofficesomarketname: 'Sales Office Market',\r\n communitylocationlatitude: 'Community Latitude',\r\n communitylocationlongitude: 'Community Longitude',\r\n communitylocationzip: 'Community Zip',\r\n communitylocationcity: 'Community City',\r\n zcommunitylocationstate: 'Community State',\r\n communitylocationcommmarketname: 'Community Market',\r\n communitylocationaddress1: 'Community Address 1',\r\n communitylocationaddress2: 'Community Address 2',\r\n drivingdirections: 'Driving Directions',\r\n salesofficeemail: 'Sales Office Email',\r\n salesofficetrk: 'Tracking Number',\r\n salesofficetrkareacode: 'Tracking Area Code',\r\n salesofficephn: 'Sales Office Phone',\r\n salesofficephnareacode: 'Sales Office Phone Area',\r\n salesofficephnextension: 'Sales Office Phone Extension',\r\n salesofficefax: 'Sales Office Fax',\r\n salesofficefaxareacode: 'Sales Office Fax Area',\r\n salesagentlastname: 'Sales Agent Name',\r\n salesagenttitle: 'Sales Agent Title',\r\n salesagentnumber: 'Sales Agent Number',\r\n salesagentextension: 'Sales Agent Extension',\r\n salesagentemail: 'Sales Agent Email',\r\n golfcourse: 'Gold Course',\r\n coworkingspaces: 'Coworking Spaces',\r\n doggroomingroom: 'Dog Grooming Room',\r\n dogpark: 'Dog Park',\r\n garden: 'Garden',\r\n guardedgate: 'Guarded Gate',\r\n hammockpark: 'Hammock Park',\r\n playlawn: 'Play Lawn',\r\n splashpad: 'Splash Pad',\r\n totlot: 'Tot Lot',\r\n waterpark: 'Waterpark',\r\n ziplining: 'Ziplining',\r\n discgolf: 'Disc Golf',\r\n fitnesscenter: 'Fitness Center',\r\n golfsimulator: 'Golf Simulator',\r\n heatedoutdoorpoolandspa: 'Heated Outdoor Pool & Spa',\r\n hottub: 'Hot Tub',\r\n indoorpool: 'Indoor Pool',\r\n lappool: 'Lap Pool',\r\n outdoorpool: 'Outdoor Pool',\r\n pickleball: 'Pickleball',\r\n puttinggreen: 'Putting Green',\r\n sauna: 'Sauna',\r\n sportscourts: 'Sports Courts',\r\n sportsfields: 'Sports Fields',\r\n yogastudio: 'Yoga Studio',\r\n conservationarea: 'Conservation Area',\r\n fishing: 'Fishing',\r\n golfcartpathoraccess: 'Golf Cart Path/Access',\r\n mountainviews: 'Mountain Views',\r\n oceanview: 'Ocean View',\r\n outdoorrecreation: 'Outdoor Recreation',\r\n waterfrontviews: 'Waterfront Views',\r\n woodedareas: 'Wooded Areas',\r\n activityorartstudio: 'Activity/Art Studio',\r\n amenitycenter: 'Amenity Center',\r\n amphitheater: 'Amphitheater',\r\n ballroom: 'Ballroom',\r\n bbqareas: 'BBQ Areas',\r\n billiards: 'Billiards',\r\n bocceballcourt: 'Bocce Ball Court',\r\n cabana: 'Cabana',\r\n cardrooms: 'Card Rooms',\r\n conferenceroomorhall: 'Conference Room/Hall',\r\n cornhole: 'Cornhole',\r\n eventcenter: 'Event Center',\r\n eventlawn: 'Event Lawn',\r\n firepit: 'Fire Pit',\r\n gameroom: 'Game Room',\r\n horseshoepit: 'Horseshoe Pit',\r\n outdoorfireplace: 'Outdoor Fireplace',\r\n outdoorpatiowithfirepit: 'Outdoor Patio with Firepit',\r\n pavillionorramada: 'Pavillion/Ramada',\r\n picnicarea: 'Picnic Area',\r\n shuffleboardcourts: 'Shuffleboard',\r\n playground: 'Playground',\r\n waterfrontlots: 'Waterfront Lots',\r\n communitycenter: 'Community Center',\r\n additionalcomments: 'Additional Comments',\r\n includebrochurewithhome: 'Send Community Brochures with Home Brochures',\r\n schedulerurl: 'Appointment Scheduler Url',\r\n agentpromosdatalock: 'Agent Promotions Data Lock',\r\n agentcommissiondatalock: 'Agent Commission Data Lock',\r\n webarchpromosdatalock: 'WebArch Promotions Data Lock',\r\n consumerpromosdatalock: 'Consumer Promotions Data Lock',\r\n brochuresdatalock: 'Brochures Data Lock',\r\n communitylocationdatalock: 'Community Location Data Lock',\r\n eventsdatalock: 'Events Data Lock',\r\n feesandratesdatalock: 'Fees And Rates Data Lock',\r\n hothomesdatalock: 'Hot Homes Data Lock',\r\n imagesdatalock: 'Images Data Lock',\r\n interactivemediadatalock: 'Interactive Media Data Lock',\r\n videosdatalock: 'Videos Data Lock',\r\n linkedtovideosdatalock: 'Linked To Videos Data Lock',\r\n marketingheadlinedatalock: 'Marketing Headline Data Lock',\r\n envisionurldatalock: 'Personalized Data Lock',\r\n openamenitiesdatalock: 'Open Amenities Data Lock',\r\n preferredcommunityimagedatalock: 'Preferred Community Image Data Lock',\r\n registrationformdatalock: 'Registration Form Data Lock',\r\n salesofficedatalock: 'Community Sales Office Data Lock',\r\n schoolsdatalock: 'Schools Data Lock',\r\n standardamenitiesdatalock: 'Standard Amenities Data Lock',\r\n testimonialsdatalock: 'Testimonials Data Lock',\r\n utilitiesdatalock: 'Utilities Data Lock',\r\n appointmentschedulerdatalock: 'Appointment Scheduler Data Lock',\r\n servicearearadius: 'Service Area Radius',\r\n mlsproviderid: 'Spec MLS Name',\r\n suppressplanprice: 'Plans Price Suppression',\r\n suppressspecprice: 'Specs Price Suppression',\r\n },\r\n phoneaddress: {\r\n areacode: 'Phone Area',\r\n extension: 'Phone Extension',\r\n number: 'Phone Number',\r\n },\r\n plan: {\r\n squarefeet: 'Square Footage',\r\n basementincluded: 'Basement Included',\r\n priceexcludesland: 'Price Excludes Land',\r\n masterbedlocation: 'Primary Bed Location',\r\n baseprice: 'Base Price',\r\n basepricecolumn: 'Base Price',\r\n previouspricecolumn: 'Previous Price',\r\n previousprice: 'Previous Price',\r\n typecode: 'Plan Type',\r\n display: 'Plan Type Name',\r\n marketingheadline: 'Marketing Headline',\r\n url: 'Plan Website Url',\r\n planviewerurl: 'Plan Viewer Url',\r\n envisiondesigncenterurl: 'Design Center Url',\r\n virtualtoururl: 'Virtual Tour Url',\r\n statusid: 'Status',\r\n buildingmethod: 'Building Method',\r\n dimensionheight: 'Dimension Height',\r\n dimensionlength: 'Dimension Length',\r\n dimensionwidth: 'Dimension Width',\r\n modelyear: 'Model Year',\r\n sectioncount: 'Number of Sections',\r\n halfbaths: 'Half Baths',\r\n baths: 'Full Baths',\r\n stories: 'Stories (Floors)',\r\n garages: 'Cars in Garage',\r\n baywindows: 'Bay Window Amenity',\r\n breakfastarea: 'Breakfast Area Amenity',\r\n rvgarage: 'RV Garage Amenity',\r\n coveredpatio: 'Covered Patio Amenity',\r\n deck: 'Deck Amenity',\r\n disabledaccess: 'Disabled Access Amenity',\r\n dock: 'Dock Amenity',\r\n firepit: 'Firepit Amenity',\r\n flexroom: 'Flexroom Amenity',\r\n greenconstruction: 'Green Construction Amenity',\r\n keepingroom: 'Keeping Room Amenity',\r\n multigenerational: 'Multigenerational Amenity',\r\n mudroom: 'Mud Room Amenity',\r\n outdoorkitchen: 'Outdoor Kitchen Amenity',\r\n patio: 'Patio Amenity',\r\n playroom: 'Play Room Amenity',\r\n porch: 'Porch Amenity',\r\n skylight: 'Skylight Amenity',\r\n sprinklersystem: 'Sprinkler System Amenity',\r\n vaultedceilings: 'Vaulted Ceilings Amenity',\r\n walkinclosets: 'Walk In Closets Amenity',\r\n bonusroom: 'Bonus Room Living Area',\r\n diningroom: 'Dining Room Living Area',\r\n familyroom: 'Family Room Living Area',\r\n livingroom: 'Living Room Living Area',\r\n gameroom: 'Game Room Living Area',\r\n guestroom: 'Guest Room Living Area',\r\n loft: 'Loft Living Area',\r\n mediaroom: 'Media Room Living Area',\r\n office: 'Office Living Area',\r\n study: 'Study Living Area',\r\n sunroom: 'Sun Room Living Area',\r\n architecturestyle: 'Architecture Style',\r\n atticincluded: 'Attic Included:',\r\n coolingsystem: 'Cooling Systems',\r\n exteriortype: 'Exterior Type',\r\n fireplaces: 'Fireplaces',\r\n floortype: 'Floor Types',\r\n heatingfuel: 'Heating Fuels',\r\n heatingsystem: 'Heating Systems',\r\n hersscore: 'HERS Score',\r\n kitchencountertopmaterial: 'Kitchen Countertop Material',\r\n parkingtype: 'Parking Types',\r\n quarterbaths: '# of Quarter Baths',\r\n rooftype: 'Roof Types',\r\n roomsbelowgrade: '# of Rooms Below Grade ',\r\n sqftabovegrade: 'Sqft Above Grade',\r\n sqftbelowgrade: 'Sqft Below Grade',\r\n threequarterbaths: '# of Three Quarter Baths',\r\n squarefeetabovegrade: 'Sqft Above Grade',\r\n squarefeetbelowgrade: 'Sqft Below Grade',\r\n totalrooms: '# of Total Rooms',\r\n windowinsulationtype: 'Window Isulation Types',\r\n windowmaterialtype: 'Window Material Types',\r\n wiredtype: 'Wired Types',\r\n listcode: '',\r\n interiorsdatalock: 'Interior Images Data Lock',\r\n elevationdatalock: 'Elevation Images Data Lock',\r\n floorplansdatalock: 'Floorplan Images Data Lock',\r\n interactivemediadatalock: 'Interactive Media Data Lock',\r\n videosdatalock: 'Videos Data Lock',\r\n envisionurldatalock: 'Personalized Data Lock',\r\n virtualtourdatalock: 'Tours and Rich Media Data Lock',\r\n brochuresdatalock: 'Brochures Data Lock',\r\n },\r\n spec: {\r\n lotsqft: 'Lot Size SqFt',\r\n basementincluded: 'Basement Included',\r\n priceexcludesland: 'Price Excludes Land',\r\n moveindate: 'Move-In Date',\r\n specsalestatus: 'Sale Status',\r\n spectype: 'Is Model',\r\n masterbedlocation: 'Primary Bed Location',\r\n baseprice: 'Base Price',\r\n basepricecolumn: 'Base Price',\r\n previouspricecolumn: 'Previous Price',\r\n previousprice: 'Previous Price',\r\n marketingheadline: 'Marketing Headline',\r\n url: 'Spec Website Url',\r\n lotnumbe: 'Lot Number',\r\n buildingmethod: 'Building Method',\r\n dimensionheight: 'Dimension Height',\r\n dimensionlength: 'Dimension Length',\r\n dimensionwidth: 'Dimension Width',\r\n modelyear: 'Model Year',\r\n sectioncount: 'Number of Sections',\r\n streetaddress2: 'Street Address Line 2',\r\n streetaddress1: 'Street Address Line 1',\r\n city: 'City',\r\n postalCode: 'Zip',\r\n viewerurl: 'Spec Viewer Url',\r\n envisiondesigncenterurl: 'Design Center Url',\r\n virtualtoururl: 'Virtual Tour Url',\r\n statusid: 'Status',\r\n halfbaths: 'Half Baths',\r\n baths: 'Full Baths',\r\n stories: 'Stories (Floors)',\r\n garages: 'Cars in Garage',\r\n baywindows: 'Bay Window Amenity',\r\n breakfastarea: 'Breakfast Area Amenity',\r\n rvgarage: 'RV Garage Amenity',\r\n coveredpatio: 'Covered Patio Amenity',\r\n coveredfrontporch: 'Covered Front Porch',\r\n wraparoundporch: 'Wraparound Porch',\r\n flexspace: 'Flex space',\r\n deck: 'Deck Amenity',\r\n disabledaccess: 'Disabled Access Amenity',\r\n dock: 'Dock Amenity',\r\n firepit: 'Firepit Amenity',\r\n squarefeetabovegrade: 'Sqft Above Grade',\r\n squarefeetbelowgrade: 'Sqft Below Grade',\r\n multiplelistingservice: 'MLS Number',\r\n flexroom: 'Flexroom Amenity',\r\n greenconstruction: 'Green Construction Amenity',\r\n keepingroom: 'Keeping Room Amenity',\r\n multigenerational: 'Multigenerational Amenity',\r\n mudroom: 'Mud Room Amenity',\r\n outdoorkitchen: 'Outdoor Kitchen Amenity',\r\n patio: 'Patio Amenity',\r\n playroom: 'Play Room Amenity',\r\n porch: 'Porch Amenity',\r\n skylight: 'Skylight Amenity',\r\n sprinklersystem: 'Sprinkler System Amenity',\r\n vaultedceilings: 'Vaulted Ceilings Amenity',\r\n walkinclosets: 'Walk In Closets Amenity',\r\n bonusroom: 'Bonus Room Living Area',\r\n diningroom: 'Dining Room Living Area',\r\n familyroom: 'Family Room Living Area',\r\n livingroom: 'Living Room Living Area',\r\n gameroom: 'Game Room Living Area',\r\n guestroom: 'Guest Room Living Area',\r\n loft: 'Loft Living Area',\r\n mediaroom: 'Media Room Living Area',\r\n office: 'Office Living Area',\r\n study: 'Study Living Area',\r\n sunroom: 'Sun Room Living Area',\r\n architecturestyle: 'Architecture Style',\r\n atticincluded: 'Attic Included:',\r\n coolingsystem: 'Cooling Systems',\r\n exteriortype: 'Exterior Type',\r\n fireplaces: 'Fireplaces',\r\n floortype: 'Floor Types',\r\n heatingfuel: 'Heating Fuels',\r\n heatingsystem: 'Heating Systems',\r\n hersscore: 'HERS Score',\r\n kitchencountertopmaterial: 'Kitchen Countertop Material',\r\n parkingtype: 'Parking Types',\r\n quarterbaths: '# of Quarter Baths',\r\n rooftype: 'Roof Types',\r\n roomsbelowgrade: '# of Rooms Below Grade ',\r\n sqftabovegrade: 'Sqft Above Grade',\r\n sqftbelowgrade: 'Sqft Below Grade',\r\n threequarterbaths: '# of Three Quarter Baths',\r\n totalrooms: '# of Total Rooms',\r\n windowinsulationtype: 'Window Isulation Types',\r\n windowmaterialtype: 'Window Material Types',\r\n wiredtype: 'Wired Types',\r\n interiorsdatalock: 'Interior Images Data Lock',\r\n elevationdatalock: 'Elevation Images Data Lock',\r\n floorplansdatalock: 'Floorplan Images Data Lock',\r\n interactivemediadatalock: 'Interactive Media Data Lock',\r\n videosdatalock: 'Videos Data Lock',\r\n brochuresdatalock: 'Brochures Data Lock',\r\n envisionurldatalock: 'Personalized Data Lock',\r\n virtualtourdatalock: 'Virtual Tour Data Lock',\r\n addressdatalock: 'Spec Address Data Lock',\r\n selfguidedtourdatalock: 'Guided Tours Data Lock',\r\n },\r\n lot: {\r\n mlsnumber: 'MLS Number',\r\n parcelnumber: 'Parcel Number',\r\n sizesqft: 'Square Footage',\r\n sizeacre: 'Acres',\r\n marketingheadline: 'Marketing Headline',\r\n url: 'Website URL',\r\n virtualtoururl: 'Virtual Tour URL',\r\n streetaddress: 'Street Address',\r\n statusid: 'Status',\r\n },\r\n brand: {\r\n statusid: 'Status',\r\n emailaddress: 'Email Address',\r\n weburl: 'Website URL',\r\n description: 'About the Builder',\r\n overviewbullets: 'Overview Bullets',\r\n rssurl: 'RSS URL',\r\n facebookheaderscript: 'Facebook Header Script',\r\n facebookpluginhtml: 'Facebook Plugin HTML',\r\n twitterwidget: 'Twitter Widget',\r\n websitefaqurl: 'FAQ Website URL',\r\n },\r\n agentpolicies: {\r\n name: 'Policy Name',\r\n url: 'Policy Website',\r\n filepath: 'PDf file',\r\n },\r\n buyerregistration: {\r\n name: 'Form Name',\r\n url: 'Form Website',\r\n filepath: 'PDf file',\r\n },\r\n planoption: {\r\n price: 'Additional Price',\r\n squarefeet: 'Additional Sq. Ft.',\r\n sequence: 'New Sequence',\r\n },\r\n brochure: { url: 'File/URL' },\r\n contact: { lastname: 'Name' },\r\n interactivemedia: {\r\n displayonwebarch: 'Display on WebArchitech',\r\n displayonnhs: 'Display on NHS',\r\n useflashflag: 'Flash',\r\n websiteurl: 'Website Url',\r\n embedcode: 'Embed Code',\r\n sequence: 'New Sequence',\r\n },\r\n image: {\r\n typecode: 'Image Type',\r\n imagedescription: 'Caption',\r\n imagetypecode: 'Type',\r\n originalpath: 'Url',\r\n sequence: 'New Sequence',\r\n filepath: 'PDf file',\r\n },\r\n promotion: {\r\n description: 'Description/HTML',\r\n enddate: 'End Date',\r\n startdate: 'Start Date',\r\n websiteurl: 'Website Url',\r\n filepath: 'PDF File',\r\n type: 'Audience',\r\n },\r\n event: {\r\n eventdate: 'Event Date',\r\n enddate: 'End Time',\r\n startdate: 'Start Time',\r\n websiteurl: 'Website Url',\r\n filepath: 'PDF File',\r\n type: 'Audience',\r\n },\r\n testimonial: {\r\n description: 'Testimonial',\r\n originalpath: 'Video URL',\r\n },\r\n homeownerassociation: {\r\n monthlyfee: 'HOA Monthly Fee',\r\n yearlyfee: 'HOA Yearly Fee',\r\n },\r\n 'self-guidedtour': {\r\n partnerid: 'Tour Provider',\r\n builderprovided: 'Builder Provided',\r\n toururl: 'Self-Guided Tour URL',\r\n propertynumber: 'Self-Guided Tour ID',\r\n },\r\n listhub: {\r\n filtersql: 'Query Filter ',\r\n isactive: 'Published',\r\n },\r\n};\r\n\r\n/** Field names that need to be treated as formated as decimal int fields */\r\nexport const changeHistoryIntFormatFields = ['agentcommission', 'yearlyfee', 'monthlyfee', 'totaltaxrate', 'commission'];\r\n\r\n/** Field names that need to be treated as formated as money fields */\r\nexport const changeHistoryMoneyFormatFields = ['baseprice', 'previousprice', 'basepricecolumn', 'previouspricecolumn', 'price', 'pricelow', 'pricehigh'];\r\n\r\n/** Field names that need to be treated as formated as boolean (Yes/No) fields */\r\n// eslint-disable-next-line prettier/prettier\r\nexport const changeHistoryBooleanFormatFields = [\r\n 'displaybrandname',\r\n 'communitytypecode',\r\n 'priceexcludesland',\r\n 'basementincluded',\r\n 'baywindows',\r\n 'breakfastarea',\r\n 'rvgarage',\r\n 'coveredfrontporch',\r\n 'wraparoundporch',\r\n 'flexspace',\r\n 'coveredpatio',\r\n 'deck',\r\n 'disabledaccess',\r\n 'dock',\r\n 'firepit',\r\n 'fireplaces',\r\n 'flexroom',\r\n 'greenconstruction',\r\n 'keepingroom',\r\n 'multigenerational',\r\n 'mudroom',\r\n 'outdoorkitchen',\r\n 'patio',\r\n 'playroom',\r\n 'porch',\r\n 'skylight',\r\n 'sprinklersystem',\r\n 'vaultedceilings',\r\n 'walkinclosets',\r\n 'bonusroom',\r\n 'diningroom',\r\n 'livingroom',\r\n 'familyroom',\r\n 'gameroom',\r\n 'guestroom',\r\n 'loft',\r\n 'mediaroom',\r\n 'office',\r\n 'study',\r\n 'sunroom',\r\n 'useflashflag',\r\n 'spectype',\r\n 'atticincluded',\r\n 'outofcommunity',\r\n 'listcode',\r\n 'basketball',\r\n 'clubhouse',\r\n 'park',\r\n 'playground',\r\n 'golfcourse',\r\n 'coworkingspaces',\r\n 'doggroomingroom',\r\n 'dogpark',\r\n 'garden',\r\n 'guardedgate',\r\n 'hammockpark',\r\n 'playlawn',\r\n 'splashpad',\r\n 'totlot',\r\n 'waterpark',\r\n 'ziplining',\r\n 'discgolf',\r\n 'fitnesscenter',\r\n 'golfsimulator',\r\n 'heatedoutdoorpoolandspa',\r\n 'hottub',\r\n 'indoorpool',\r\n 'lappool',\r\n 'outdoorpool',\r\n 'pickleball',\r\n 'puttinggreen',\r\n 'sauna',\r\n 'sportscourts',\r\n 'sportsfields',\r\n 'fishing',\r\n 'golfcartpathoraccess',\r\n 'mountainviews',\r\n 'oceanview',\r\n 'outdoorrecreation',\r\n 'waterfrontviews',\r\n 'woodedareas',\r\n 'conservationarea',\r\n 'yogastudio',\r\n 'activityorartstudio',\r\n 'amenitycenter',\r\n 'amphitheater',\r\n 'ballroom',\r\n 'bbqareas',\r\n 'billiards',\r\n 'bocceballcourt',\r\n 'cabana',\r\n 'cardrooms',\r\n 'conferenceroomorhall',\r\n 'cornhole',\r\n 'eventcenter',\r\n 'eventlawn',\r\n 'firepit',\r\n 'gameroom',\r\n 'horseshoepit',\r\n 'outdoorfireplace',\r\n 'outdoorpatiowithfirepit',\r\n 'pavillionorramada',\r\n 'picnicarea',\r\n 'shuffleboardcourts',\r\n 'volleyball',\r\n 'communitycenter',\r\n 'beach',\r\n 'views',\r\n 'greenbelt',\r\n 'waterfrontlots',\r\n 'tennis',\r\n 'pool',\r\n 'soccer',\r\n 'trails',\r\n 'baseball',\r\n 'clubhouse',\r\n 'marina',\r\n 'lake',\r\n 'pond',\r\n 'listingtypeflag',\r\n 'includebrochurewithhome',\r\n 'agentpromosdatalock',\r\n 'brochuresdatalock',\r\n 'communitylocationdatalock',\r\n 'consumerpromosdatalock',\r\n 'eventsdatalock',\r\n 'feesandratesdatalock',\r\n 'hothomesdatalock',\r\n 'imagesdatalock',\r\n 'interactivemediadatalock',\r\n 'linkedtovideosdatalock',\r\n 'virtualtourdatalock',\r\n 'envisionurldatalock',\r\n 'marketingheadlinedatalock',\r\n 'openamenitiesdatalock',\r\n 'preferredcommunityimagedatalock',\r\n 'registrationformdatalock',\r\n 'salesofficedatalock',\r\n 'schoolsdatalock',\r\n 'standardamenitiesdatalock',\r\n 'testimonialsdatalock',\r\n 'utilitiesdatalock',\r\n 'videosdatalock',\r\n 'webarchpromosdatalock',\r\n 'elevationdatalock',\r\n 'floorplansdatalock',\r\n 'addressdatalock',\r\n 'interiorsdatalock',\r\n 'agentcommissiondatalock',\r\n 'appointmentschedulerdatalock',\r\n 'selfguidedtourdatalock',\r\n 'builderprovided',\r\n 'isactive',\r\n];\r\n\r\n/**\r\n * BDX Change history Field Values vs Field Values in the UI\r\n */\r\nexport const changeHistoryFieldValues = {\r\n squarefeet: 'Square Footage',\r\n basementincluded: 'Basement Included',\r\n priceexcludesland: 'Price Excludes Land',\r\n masterbedlocation: 'Primary Bed Location',\r\n baseprice: 'Base Price',\r\n basepricecolumn: 'Base Price',\r\n previouspricecolumn: 'Previous Price',\r\n typecode: 'Plan Type',\r\n display: 'Plan Type Name',\r\n marketingheadline: 'Marketing Headline',\r\n url: 'Plan Website Url',\r\n viewerurl: 'Plan Viewer Url',\r\n envisiondesigncenterurl: 'Design Center Url',\r\n virtualtoururl: 'Virtual Tour Url',\r\n statusid: 'Status',\r\n halfbaths: 'Half Baths',\r\n baths: 'Full Baths',\r\n stories: 'Stories (Floors)',\r\n garages: 'Cars in Garage',\r\n baywindows: 'Bay Window Amenity',\r\n breakfastarea: 'Breakfast Area Amenity',\r\n rvgarage: 'RV Garage Amenity',\r\n coveredpatio: 'Covered Patio Amenity',\r\n deck: 'Deck Amenity',\r\n disabledaccess: 'Disabled Access Amenity',\r\n dock: 'Dock Amenity',\r\n firepit: 'Firepit Amenity',\r\n fireplaces: 'Fireplaces Amenity',\r\n flexroom: 'Flexroom Amenity',\r\n greenconstruction: 'Green Construction Amenity',\r\n keepingroom: 'kKeeping Room Amenity',\r\n multigenerational: 'Multigenerational Amenity',\r\n mudroom: 'Mudroom Amenity',\r\n outdoorkitchen: 'Outdoor Kitchen Amenity',\r\n patio: 'Patio Amenity',\r\n playroom: 'Play Room Amenity',\r\n porch: 'Porch Amenity',\r\n skylight: 'Skylight Amenity',\r\n sprinklersystem: 'Sprinkler System Amenity',\r\n vaultedceilings: 'Vaulted Ceilings Amenity',\r\n walkInclosets: 'Walk In Closets Amenity',\r\n bonusroom: 'Bonus Room Living Area',\r\n diningroom: 'Dining Room Living Area',\r\n familyroom: 'Family Room Living Area',\r\n livingroom: 'Living Room Living Area',\r\n gameroom: 'Game Room Living Area',\r\n guestroom: 'Guest Room Living Area',\r\n loft: 'Loft Living Area',\r\n mediaroom: 'Media Room Living Area',\r\n office: 'Office Living Area',\r\n study: 'Study Living Area',\r\n sunroom: 'Sun Room Living Area',\r\n};\r\n\r\n/**\r\n * Field definition for the Data locks, each name is the data lock that we can check or modify at the api side.\r\n */\r\nexport const dataLocksFields = {\r\n Community: {\r\n AgentCommission: 'agentCommission',\r\n AgentPromos: 'agentPromos',\r\n Brochures: 'brochures',\r\n CommunityLocation: 'communityLocation',\r\n ConsumerPromos: 'consumerPromos',\r\n Events: 'events',\r\n FeesAndRates: 'feesAndRates',\r\n HotHomes: 'hotHomes',\r\n Images: 'images',\r\n InteractiveMedia: 'interactiveMedia',\r\n LinkedToVideos: 'linkedToVideos',\r\n MarketingHeadline: 'marketingHeadline',\r\n OpenAmenities: 'openAmenities',\r\n PreferredCommunityImage: 'preferredCommunityImage',\r\n RegistrationForm: 'registrationForm',\r\n SalesOffice: 'salesOffice',\r\n Schools: 'schools',\r\n StandardAmenities: 'standardAmenities',\r\n Testimonials: 'testimonials',\r\n Utilities: 'utilities',\r\n Videos: 'videos',\r\n WebArchPromos: 'webArchPromos',\r\n AppointmentScheduler: 'appointmentScheduler',\r\n EnvisionUrl: 'envisionUrl',\r\n BasePrice: 'basePrice',\r\n },\r\n Plan: {\r\n Brochures: 'brochures',\r\n Elevation: 'elevation',\r\n FloorPlans: 'floorPlans',\r\n InteractiveMedia: 'interactiveMedia',\r\n Interiors: 'interiors',\r\n mainDetails: 'mainDetails',\r\n EnvisionUrl: 'envisionUrl',\r\n OpenAmenities: 'openAmenities',\r\n Videos: 'videos',\r\n VirtualTour: 'virtualTour',\r\n },\r\n Spec: {\r\n Address: 'address',\r\n Brochures: 'brochures',\r\n Elevation: 'elevation',\r\n FloorPlans: 'floorPlans',\r\n InteractiveMedia: 'interactiveMedia',\r\n Interiors: 'interiors',\r\n MainDetails: 'mainDetails',\r\n OpenAmenities: 'openAmenities',\r\n Videos: 'videos',\r\n VirtualTour: 'virtualTour',\r\n EnvisionUrl: 'envisionUrl',\r\n SelfGuidedTour: 'selfGuidedTour',\r\n },\r\n Builder: {\r\n GreenPrograms: 'greenPrograms',\r\n },\r\n};\r\n","/**\r\n * Decomposes a date in order to retrieve its day/month/year values for custom manipulation.\r\n * Uses:\r\n * decomposeDate(\"Wed Dec 19 2012 11:14:50 GMT+0200 (CEST)\")\r\n * decomposeDate(\"12/19/2012, 19:00:00\")\r\n * decomposeDate(\"2012-12-19T00:00:00\")\r\n * decomposeDate(\"12-19-2012\")\r\n * => {\"day\":\"19\", \"month\":\"12\", \"year\":2012}\r\n */\r\nexport const decomposeDate = (date) => {\r\n if (!date) return {};\r\n\r\n const d = new Date(date);\r\n let month = `${d.getMonth() + 1}`;\r\n let day = `${d.getDate()}`;\r\n const year = d.getFullYear();\r\n\r\n if (month.length < 2) month = `0${month}`;\r\n if (day.length < 2) day = `0${day}`;\r\n\r\n // eslint-disable-next-line no-restricted-globals\r\n if (isNaN(day) || isNaN(month) || isNaN(year)) {\r\n return {};\r\n }\r\n\r\n return { day, month, year };\r\n};\r\n\r\n/**\r\n * Converts 24-hour time-of-day string to 12-hour time with AM/PM.\r\n * Uses:\r\n * convertTo12HourTime('18:37:00') => '6:37:00 PM'\r\n * convertTo12HourTime('18:37:00', true) => '6:37 PM'\r\n * Credit: https://stackoverflow.com/a/13899011\r\n */\r\nexport const convertTo12HourTime = (time, removeSeconds = false) => {\r\n if (removeSeconds) {\r\n time = time.replace(/:[^:]*$/, '');\r\n }\r\n\r\n time = time.toString().match(/^([01]\\d|2[0-3])(:)([0-5]\\d)(:[0-5]\\d)?$/) || [time]; // Check correct time format and split into chunks.\r\n\r\n // Time has correct format?\r\n if (time.length > 1) {\r\n time = time.slice(1); // Remove full string match value.\r\n time[5] = +time[0] < 12 ? ' AM' : ' PM';\r\n time[0] = +time[0] % 12 || 12; // Adjust hours.\r\n }\r\n\r\n return time.join(''); // Return either adjusted time or original string.\r\n};\r\n\r\n/**\r\n * Based on the condition argument, performs a comparison between the two dates.\r\n * The first argument is always the base compared against the second one; as in 'a' is 'condition' to 'b'.\r\n * Use: datesCompare('10-10-2020', '10-10-2020', 'EQUALS') => true\r\n */\r\nexport const datesCompare = (a, b, condition, parse = true) => {\r\n a = a.replace(/\\//g, '-');\r\n b = b.replace(/\\//g, '-');\r\n\r\n if (parse) {\r\n a = new Date(a);\r\n b = new Date(b);\r\n }\r\n\r\n switch (condition) {\r\n case 'EQUALS':\r\n return +a === +b;\r\n case 'BEFORE':\r\n return +a < +b;\r\n case 'BEFORE_EQUALS':\r\n return +a <= +b;\r\n case 'AFTER':\r\n return +a > +b;\r\n case 'AFTER_EQUALS':\r\n return +a >= +b;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nexport const addHours = (date, hours) => {\r\n date.setHours(date.getHours() + hours);\r\n return date;\r\n};\r\n","/*\r\nDebouncing enforces a function not to be called again until a certain amount of time has passed without it being called. \r\nAs in \"execute this function only if 100 milliseconds have passed without it being called\".\r\n */\r\nexport const debounce = (callback, wait = 300) => {\r\n let timeout;\r\n return (...args) => {\r\n const context = this;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => {\r\n callback.apply(context, args);\r\n }, wait);\r\n };\r\n};\r\nexport const debounceEvent = (callback, wait = 100) => {\r\n let timeout;\r\n return (event) => {\r\n const { target } = event;\r\n const composedPath = event.composedPath();\r\n const copy = { ...event };\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => callback({ ...copy, target, composedPath: () => composedPath }), wait);\r\n };\r\n};\r\n","/**\r\n * Deep Compare\r\n * @param { * } value first entry value\r\n * @param { * } other second entry value\r\n * @param { Boolean } sorted Sort any array before deep comparison\r\n * @param { Number } deep The deep that it can compare nested properties\r\n */\r\nlet refs = [];\r\nexport const deepCompare = (value, other, sorted, cyclic, omit = [], initial = true) => {\r\n try {\r\n if (initial) refs = [];\r\n /**\r\n * Compare possible primitives\r\n * Object.is works like `===` but additionally differes positive from negative values\r\n * https://is.gd/tEiQVP\r\n * I.E:\r\n * Object.is(-0, 0) // False\r\n * -0 === 0 // True\r\n */\r\n if (Object.is(value, other)) return true;\r\n\r\n let isCyclicEqual = null;\r\n /**\r\n * Check if either value is undefined or the constructor is different for each value\r\n * given the case return false\r\n */\r\n if (!value || !other || value.constructor !== other.constructor) return false;\r\n /**\r\n * Check Object and Array deep comparisons\r\n */\r\n switch (value.constructor) {\r\n case Array:\r\n isCyclicEqual = cyclic && deepRefCompare(value, other);\r\n if (cyclic && isCyclicEqual !== null) return isCyclicEqual;\r\n /**\r\n * Check if both values have the same amount of items\r\n * if they don't immediatelly omit the comparison and return false\r\n */\r\n if (value.length === other.length) {\r\n return deepArrayCompare(value, other, sorted, cyclic, omit, false);\r\n }\r\n return false;\r\n case Object:\r\n isCyclicEqual = cyclic && deepRefCompare(value, other);\r\n if (cyclic && isCyclicEqual !== null) return isCyclicEqual;\r\n /**\r\n * Check if both values have the same amount of keys\r\n * if they don't immediatelly omit the comparison and return false\r\n */\r\n if (Object.keys(value).length === Object.keys(other).length) {\r\n return deepObjectCompare(value, other, sorted, cyclic, omit, false);\r\n }\r\n return false;\r\n case Function:\r\n return value.toString() === other.toString();\r\n }\r\n return false;\r\n } catch {\r\n return false;\r\n }\r\n};\r\n/**\r\n * Deep Object Compare\r\n * @param { * } value first entry value\r\n * @param { * } other second entry value\r\n *\r\n * 'deepArrayCompare(Object.keys(value), Object.keys(other), sorted)'\r\n * This checks that both objects have the same keys\r\n * I.E:\r\n * deepArrayCompare(Object.keys({ a: 1, b: 2, c:3 }), Object.keys({ a: 10, b: 22, c: 54 }), true) // True\r\n * deepArrayCompare(Object.keys({ a: 1, b: 2, c:3 }), Object.keys({ g: 1, f: 2, d: 3 }), true) // False\r\n *\r\n * 'Object.keys(value).every(key => deepCompare(value[key], other[key]))'\r\n * This iterates on each key of the object over a 'every' comparison and performs a deepCompare on both values\r\n *\r\n */\r\nconst deepObjectCompare = (value, other, sorted, cyclic, omit, initial) => deepArrayCompare(Object.keys(value), Object.keys(other), true, false, omit, initial) && Object.keys(value).every((key) => (!omit.includes(key) ? deepCompare(value[key], other[key], sorted, cyclic, omit, initial) : true));\r\n/**\r\n * Deep Array Compare\r\n * @param { * } value first entry value\r\n * @param { * } other second entry value\r\n * @param { Boolean } sorted Sort any array before deep comparison\r\n *\r\n * '(sorted && value.sort(), sorted && other.sort(), ...)'\r\n * This manages the optional sorting through Comma Operator\r\n * https://is.gd/9Ad5AH\r\n *\r\n * 'value.every((item, index) => deepCompare(item, other[index]))'\r\n * This performs the deepComparison of values between both arrays\r\n */\r\nconst deepArrayCompare = (value, other, sorted, cyclic, omit, initial) => (sorted && value.sort(), sorted && other.sort(), value.every((item, index) => deepCompare(item, other[index], sorted, cyclic, omit, initial)));\r\n/**\r\n * reference_equals( a, b )\r\n *\r\n * Helper function to compare object references on cyclic objects or arrays.\r\n *\r\n * Returns:\r\n * - null if a or b is not part of a cycle, adding them to object_references array\r\n * - true: same cycle found for a and b\r\n * - false: different cycle found for a and b\r\n *\r\n * On the first call of a specific invocation of equal(), replaces self with inner function\r\n * holding object_references array object in closure context.\r\n *\r\n * This allows to create a context only if and when an invocation of equal() compares\r\n * objects or arrays.\r\n */\r\nconst deepRefCompare = (value, other) => {\r\n let { length } = refs;\r\n /* eslint-disable-next-line */\r\n while (length--) if (refs[length--] === other) return refs[length] === value;\r\n\r\n refs.push(value, other);\r\n return null;\r\n};\r\n\r\n/**\r\n * Checks wheter a lit property has changed or not.\r\n *\r\n * @param {*} newVal new value assigned to the property.\r\n * @param {*} oldVal previous value of the property.\r\n * @returns {Boolean} true if the property has changed, otherwise false.\r\n */\r\nexport const hasChanged = (newVal, oldVal) => {\r\n if (oldVal === undefined) return false;\r\n return !deepCompare(oldVal, newVal);\r\n};\r\n","import { deepCompare } from './deepCompare';\r\n/**\r\n * Check that a one value is included in the other\r\n * Array: One of the items is the value to compare\r\n * Object: One of the properties have the value to compare\r\n * String: It contains the value to compare\r\n * Other: Its converted into string and compared the same way\r\n *\r\n * const value = [1,3,4,[5,6,[7,[8],{ a: [12, { b: [13] }]}]],9,[10]];\r\n * deepInclude(value, 8) => true\r\n * deepInclude(value, 18) => false\r\n * deepInclude(value, [10]) => true\r\n * deepInclude(value, [6]) => false\r\n * deepInclude(value, { b : [13] }) => true\r\n * deepInclude(value, { b : [14] }) => false\r\n * deepInclude(value, { a: [12, { b: [13] }] }) => true\r\n * deepInclude(value, { c: [12, { b: [13] }] }) => false\r\n *\r\n * const value = [1,2,3,[4,5,6,[7]]];\r\n * deepInclude(value, [5,[7],4,6], { asorted: true }) => true\r\n * deepInclude(value, [5,[7],4,6], { asorted: false }) => false\r\n *\r\n * Other: Its converted into string and compared the same way\r\n * @param { * } value object containing the values to compare\r\n * @param { * } other object to be found within the first value\r\n */\r\nexport const deepInclude = (_item, other, { caseInsensitive, asorted } = {}) => {\r\n if (!_item) return false;\r\n if (deepCompare(_item, other, asorted)) return true;\r\n\r\n switch (_item.constructor) {\r\n case String:\r\n return caseInsensitive ? _item.toLowerCase().includes(other.toLowerCase()) : false;\r\n case Array:\r\n return _item.some((__item) => deepInclude(__item, other, { caseInsensitive, asorted }));\r\n case Object:\r\n return deepInclude(Object.values(_item), other, { caseInsensitive, asorted });\r\n default:\r\n return false;\r\n }\r\n};\r\n","const _instanceof = (obj, type) => type != null && obj instanceof type;\r\n\r\nconst clone = (parent, circular, depth, prototype, includeNonEnumerable) => {\r\n if (typeof circular === 'object') {\r\n depth = circular.depth;\r\n prototype = circular.prototype;\r\n includeNonEnumerable = circular.includeNonEnumerable;\r\n circular = circular.circular;\r\n }\r\n const allParents = [];\r\n const allChildren = [];\r\n const useBuffer = typeof Buffer !== 'undefined';\r\n\r\n if (typeof circular === 'undefined')\r\n circular = true;\r\n\r\n if (typeof depth === 'undefined')\r\n depth = Infinity;\r\n\r\n const _clone = (parent, depth) => {\r\n if (parent === null)\r\n return null;\r\n\r\n if (depth === 0)\r\n return parent;\r\n\r\n let child;\r\n let proto;\r\n if (typeof parent !== 'object') {\r\n return parent;\r\n }\r\n\r\n if (_instanceof(parent, Map)) {\r\n child = new Map();\r\n } else if (_instanceof(parent, Set)) {\r\n child = new Set();\r\n } else if (_instanceof(parent, Promise)) {\r\n child = new Promise((resolve, reject) => {\r\n parent.then(value => {\r\n resolve(_clone(value, depth - 1));\r\n }, err => {\r\n reject(_clone(err, depth - 1));\r\n });\r\n });\r\n } else if (Array.isArray(parent)) {\r\n child = [];\r\n } else if (parent instanceof FormData) {\r\n return parent;\r\n } else if (parent instanceof File) {\r\n return parent;\r\n } else if (_instanceof(parent, Error)) {\r\n child = Object.create(parent);\r\n } else {\r\n if (typeof prototype === 'undefined') {\r\n proto = Object.getPrototypeOf(parent);\r\n child = Object.create(proto);\r\n } else {\r\n child = Object.create(prototype);\r\n proto = prototype;\r\n }\r\n }\r\n\r\n if (circular) {\r\n const index = allParents.indexOf(parent);\r\n\r\n if (index !== -1) {\r\n return allChildren[index];\r\n }\r\n allParents.push(parent);\r\n allChildren.push(child);\r\n }\r\n\r\n if (_instanceof(parent, Map)) {\r\n parent.forEach((value, key) => {\r\n const keyChild = _clone(key, depth - 1);\r\n const valueChild = _clone(value, depth - 1);\r\n child.set(keyChild, valueChild);\r\n });\r\n }\r\n if (_instanceof(parent, Set)) {\r\n parent.forEach(value => {\r\n const entryChild = _clone(value, depth - 1);\r\n child.add(entryChild);\r\n });\r\n }\r\n\r\n for (let i in parent) {\r\n const attrs = Object.getOwnPropertyDescriptor(parent, i);\r\n if (attrs) {\r\n child[i] = _clone(parent[i], depth - 1);\r\n }\r\n\r\n try {\r\n const objProperty = Object.getOwnPropertyDescriptor(parent, i);\r\n if (objProperty.set === 'undefined') {\r\n continue;\r\n }\r\n child[i] = _clone(parent[i], depth - 1);\r\n } catch (e) {\r\n if (e instanceof TypeError) {\r\n continue;\r\n } else if (e instanceof ReferenceError) {\r\n continue;\r\n }\r\n }\r\n }\r\n\r\n if (Object.getOwnPropertySymbols) {\r\n const symbols = Object.getOwnPropertySymbols(parent);\r\n for (let i = 0; i < symbols.length; i++) {\r\n const symbol = symbols[i];\r\n const descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\r\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\r\n continue;\r\n }\r\n child[symbol] = _clone(parent[symbol], depth - 1);\r\n Object.defineProperty(child, symbol, descriptor);\r\n }\r\n }\r\n\r\n if (includeNonEnumerable) {\r\n const allPropertyNames = Object.getOwnPropertyNames(parent);\r\n for (let i = 0; i < allPropertyNames.length; i++) {\r\n const propertyName = allPropertyNames[i];\r\n const descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\r\n if (descriptor && descriptor.enumerable) {\r\n continue;\r\n }\r\n child[propertyName] = _clone(parent[propertyName], depth - 1);\r\n Object.defineProperty(child, propertyName, descriptor);\r\n }\r\n }\r\n\r\n return child;\r\n };\r\n\r\n return _clone(parent, depth);\r\n};\r\n\r\nexport default clone;\r\n","/* eslint-disable guard-for-in */\r\n/* eslint-disable no-restricted-syntax */\r\n// export const deepMerge = (...args) => {\r\n// let _kind;\r\n// const _objects = args.reverse().filter((arg) => {\r\n// if (!_kind) _kind = typeof arg;\r\n// return arg;\r\n// });\r\n// };\r\n\r\nimport clone from '../external/clone';\r\nimport { empty } from './empty';\r\n/**\r\n * Merge Two objects recursive\r\n * @param {Object} obj1 first object to merge\r\n * @param {Object} obj2 second object to merge\r\n */\r\nexport const deepMerge = (obj1, obj2, { keepExistent, keepEmptyObject, arrayPropertyToMerge } = {}) => {\r\n obj1 = clone(obj1);\r\n obj2 = clone(obj2);\r\n for (const p in obj2) {\r\n try {\r\n // Property in destination object set; update its value.\r\n if (obj1[p]?.constructor === Object && obj2[p] !== null) {\r\n if (keepEmptyObject && obj2[p] instanceof Object && empty(obj2[p])) {\r\n obj1[p] = obj2[p];\r\n } else {\r\n obj1[p] = deepMerge(obj1[p], obj2[p], { keepExistent, keepEmptyObject, arrayPropertyToMerge });\r\n }\r\n // added special condition when it is an array, so we can merge based on a property (example phones in community)\r\n } else if (Array.isArray(obj1[p]) && Array.isArray(obj2[p])) {\r\n if (arrayPropertyToMerge && obj1[p].some((item) => item[arrayPropertyToMerge])) {\r\n mergeByProperty(obj1[p], obj2[p], arrayPropertyToMerge);\r\n // if the property name is not specified, just merge with spread operator\r\n } else {\r\n obj1[p] = obj2[p];\r\n }\r\n } else {\r\n obj1[p] = keepExistent && obj1[p] !== undefined ? obj1[p] : obj2[p];\r\n }\r\n } catch (e) {\r\n // Property in destination object not set; create it and set its value.\r\n obj1[p] = obj2[p];\r\n }\r\n }\r\n\r\n return obj1;\r\n};\r\n\r\nconst mergeByProperty = (target, source, prop) => {\r\n source.forEach((sourceElement) => {\r\n const targetElement = target.find((item) => {\r\n return sourceElement[prop] === item[prop];\r\n });\r\n targetElement ? Object.assign(targetElement, sourceElement) : target.push(sourceElement);\r\n });\r\n};\r\n","import cryptojs from 'crypto-js';\r\n\r\nconst bdxLiveDESKey = [1, 2, 3, 4, 5, 6, 7, 8];\r\nconst bdxLiveDESIv = [1, 2, 3, 4, 5, 6, 7, 8];\r\n\r\n/**\r\n * Returns the AES(CBC) encrypted version of the passed text\r\n * @param {String} value Text to encrypt\r\n */\r\nexport const encryptAES = (value) => {\r\n const key = getRandom16DigitsInt();\r\n const iv = getRandom16DigitsInt();\r\n\r\n const text = cryptojs.enc.Utf8.parse(value);\r\n\r\n const encrypted = cryptojs.AES.encrypt(text, cryptojs.enc.Utf8.parse(key), {\r\n keySize: 128 / 8,\r\n iv: cryptojs.enc.Utf8.parse(iv),\r\n mode: cryptojs.mode.CBC,\r\n padding: cryptojs.pad.Pkcs7,\r\n });\r\n\r\n const encodedEncrypted = window.btoa(`${key}.${iv}.${encrypted.toString()}`);\r\n\r\n return encodedEncrypted;\r\n};\r\n\r\n/**\r\n * Dencrypt a text encrypted with AES(CBC) algorithm\r\n * @param {String} value Text to deencrypt\r\n */\r\nexport const decryptAES = (value) => {\r\n const decoded = window.atob(value);\r\n\r\n if (!decoded || decoded.split('.').length < 3) throw Error('Invalid encrypted text');\r\n\r\n const key = decoded.split('.')[0];\r\n const iv = decoded.split('.')[1];\r\n const encryptedText = decoded.split('.')[2];\r\n\r\n const decrypted = cryptojs.AES.decrypt(encryptedText, cryptojs.enc.Utf8.parse(key), {\r\n keySize: 128 / 8,\r\n iv: cryptojs.enc.Utf8.parse(iv),\r\n mode: cryptojs.mode.CBC,\r\n padding: cryptojs.pad.Pkcs7,\r\n });\r\n\r\n return decrypted.toString(cryptojs.enc.Utf8);\r\n};\r\n\r\nconst byteArray = (arr) => {\r\n const word = [];\r\n for (let i = 0; i < arr.length; i += 4) {\r\n // eslint-disable-next-line no-bitwise\r\n word.push((arr[i + 0] << 24) | (arr[i + 1] << 16) | (arr[i + 2] << 8) | (arr[i + 3] << 0));\r\n }\r\n\r\n return cryptojs.lib.WordArray.create(word, arr.length);\r\n};\r\n\r\n/**\r\n * Decrypt a text encrypted with DES(CBC) algorithm, with the keys used by BDX Live\r\n * @param {String} value Text to decrypt\r\n */\r\nexport const decryptBdxLiveDES = (value) => {\r\n const key = byteArray(bdxLiveDESKey);\r\n const iv = byteArray(bdxLiveDESIv);\r\n\r\n const decryptedValue = cryptojs.DES.decrypt({ ciphertext: cryptojs.enc.Base64.parse(value) }, key, { iv, mode: cryptojs.mode.CBC, padding: cryptojs.pad.Pkcs7 });\r\n\r\n return decryptedValue.toString(cryptojs.enc.Utf8);\r\n};\r\n\r\n/**\r\n * Encodes an string to base 64, escaping special chars (example foreing languages)\r\n */\r\nexport const b64Encode = (value) => window.btoa(unescape(encodeURIComponent(value)));\r\n\r\n/**\r\n * Decodes an string from base 64, escaping special chars (example foreing languages)\r\n */\r\nexport const b64Decode = (value) => decodeURIComponent(escape(window.atob(value)));\r\n\r\n/**\r\n * Encrypt text with DES(CBC) algorithm, with the keys used by BDX Live\r\n * @param {String} value Text to encrypt\r\n */\r\nexport const encryptBdxLiveDES = (value) => {\r\n const key = byteArray(bdxLiveDESKey);\r\n const iv = byteArray(bdxLiveDESIv);\r\n\r\n const encrypted = cryptojs.DES.encrypt(value, key, { iv, mode: cryptojs.mode.CBC, padding: cryptojs.pad.Pkcs7 });\r\n\r\n return encrypted.toString();\r\n};\r\n\r\nconst getRandom16DigitsInt = () => {\r\n const factor = 1000000000000000;\r\n return parseInt(factor + Math.random() * 9 * factor, 10);\r\n};\r\n\r\n/**\r\n * Encrypt text with the AES algorithm (CBC)\r\n * @param {String} value Text to encrypt\r\n */\r\nexport const encryptBdxLiveAES = (value) => {\r\n const key = getRandom16DigitsInt();\r\n const iv = getRandom16DigitsInt();\r\n\r\n const userObject = cryptojs.enc.Utf8.parse(value);\r\n\r\n const encrypted = cryptojs.AES.encrypt(userObject, cryptojs.enc.Utf8.parse(key), {\r\n keySize: 128 / 8,\r\n iv: cryptojs.enc.Utf8.parse(iv),\r\n mode: cryptojs.mode.CBC,\r\n padding: cryptojs.pad.Pkcs7,\r\n });\r\n\r\n const encoded = window.btoa(`${key}.${iv}.${encrypted.toString()}`);\r\n\r\n return encoded;\r\n};\r\n","/**\r\n * Takes two values and merge them together into a new instance\r\n * @param {*} value\r\n * @param {*} other\r\n */\r\nexport const extend = (value, other) => Object.assign(value, other);\r\n","export const isArray = (object) => object instanceof Array;\r\nexport const areArray = (...args) => args.every((item) => isArray(item));\r\n","/* eslint-disable no-restricted-syntax */\r\nimport { empty } from './empty';\r\nimport { isArray } from './isArray';\r\n\r\nconst partsRegex = /\\./g;\r\nconst findRegex = /^\\$find\\{(?:(.*=.*),(.*=.*)|(.*=.*))\\}$/;\r\n\r\n/**\r\n * @typedef { Object } objectPathOperationgs\r\n * @property { function } get returns the value based on the object path\r\n * @property { function } set sets a value on a certain path\r\n * @property { function } has returns a boolean based on the existance of the value to be found\r\n *\r\n * Takes an object and returns a series of operations to implement on top of the object\r\n * @param { Object } obj the object\r\n * @returns { objectPathOperationgs } object path operations\r\n */\r\nexport const objectPath = (obj) => ({\r\n /**\r\n * Finds the value on an object by dot notation 'a.b.c.0'\r\n * @param { String } path to access\r\n * @returns { * } value recovered or undefined\r\n */\r\n get(path) {\r\n if (empty(path)) return;\r\n switch (path.constructor) {\r\n case String:\r\n return this.get(path.split(partsRegex));\r\n case Array:\r\n if (findRegex.test(path[0]) && obj instanceof Array) {\r\n const [, ...filters] = findRegex.exec(path[0]) || [];\r\n const pairs = filters.filter(Boolean).map((filter) => filter.split('='));\r\n obj = obj.find((item) => pairs.every(([key, value]) => objectPath(item).get(key) === JSON.parse(value)));\r\n return path.length > 1 ? objectPath(obj).get(path.slice(1)) : obj;\r\n }\r\n if (obj?.[path[0]] !== undefined && path.length > 1) return objectPath(obj?.[path[0]]).get(path.slice(1));\r\n return obj?.[path[0]];\r\n }\r\n },\r\n /**\r\n * Sets a value to a certain path in the object by dot notation 'a.b.c.0'\r\n * @param { string } path to set\r\n * @param { * } value any value\r\n * @returns { boolean } based if the value was changed or not\r\n */\r\n set(path, value) {\r\n const [firstField] = path || [];\r\n const firstPath = firstField?.replace(/{/g, '')?.replace(/}/g, ''); // remove any { or } in the property name, this is used when we wanna use numbers as names in some cases(example bdxforminput changes obj)\r\n\r\n if (empty(path) || path.includes('-1')) return;\r\n switch (path.constructor) {\r\n case String:\r\n return this.set(path.split(partsRegex), value);\r\n case Array:\r\n if (findRegex.test(firstField) && obj instanceof Array) {\r\n const [, ...filters] = findRegex.exec(firstField) || [];\r\n const pairs = filters.filter(Boolean).map((filter) => filter.split('='));\r\n const item = obj.find((i) => pairs.every(([key, _value]) => objectPath(i).get(key) === JSON.parse(_value)));\r\n\r\n if (!item) {\r\n const newItem = {};\r\n pairs.forEach(([key, _value]) => {\r\n newItem[key] = JSON.parse(_value);\r\n });\r\n obj.push(newItem);\r\n obj = newItem;\r\n } else {\r\n obj = item;\r\n }\r\n\r\n return objectPath(obj).set(path.slice(1), value);\r\n }\r\n\r\n if (obj?.[firstPath] !== undefined && !(obj?.[firstPath] === null && path.length > 1)) {\r\n if (path.length > 1) {\r\n return objectPath(obj[firstPath]).set(path.slice(1), value);\r\n }\r\n // if the assigment for the array is null remove it\r\n // eslint-disable-next-line no-restricted-globals\r\n if ((value === null || typeof value === 'undefined') && !isNaN(firstPath)) obj.splice(firstPath, 1);\r\n else obj[firstPath] = value;\r\n return true;\r\n }\r\n\r\n // if this is a array index and doesnt exists add it.\r\n // if the path have number only handle this as array if it is less than a reasonable number\r\n // eslint-disable-next-line no-restricted-globals\r\n if (!isNaN(firstField) && isArray(obj)) {\r\n obj.push({});\r\n } else {\r\n // else if the object path doesnt exist create it\r\n // eslint-disable-next-line no-restricted-globals\r\n // We have a hack to set properties wich name is a number, if they come with {}, they are treated as object and not array, also if the index is so big (is not common to update array index > 100 )\r\n obj[firstPath] = path.length > 1 && !isNaN(path[1]) && Number(path[1]) < 100 ? [] : {};\r\n }\r\n\r\n return objectPath(obj).set(path, value);\r\n }\r\n },\r\n /**\r\n * Check the existance of a value 'a.b.c.0'\r\n * @param { boolean } path to check\r\n * @returns { boolean } based on the existance of a value\r\n */\r\n has(path) {\r\n return this.get(path) !== undefined;\r\n },\r\n});\r\n\r\n/**\r\n * Delete a property from a object, specifying the nested property in a dot notation\r\n * This is basic version, it doesnt handle arrays, will be integrated with objectPath in the future\r\n */\r\nexport const deleteByPath = (object, path) => {\r\n let currentObject = object;\r\n const parts = path.split('.');\r\n const last = parts.pop();\r\n for (const part of parts) {\r\n currentObject = currentObject[part];\r\n if (!currentObject) {\r\n return;\r\n }\r\n }\r\n delete currentObject[last];\r\n};\r\n\r\nexport const objectToDotNotation = (obj, result, dotPathArr) => {\r\n result = result || {};\r\n dotPathArr = dotPathArr || [];\r\n Object.keys(obj).forEach((key) => {\r\n const val = obj[key];\r\n if (isObj(val)) {\r\n return objectToDotNotation(val, result, dotPathArr.concat(key));\r\n }\r\n result[dotPathArr.concat(key).join('.')] = val;\r\n });\r\n return result;\r\n};\r\n\r\n/**\r\n * Check a field name and convert it to object notation if it have a dotted notation, so we can ask for fields\r\n * with hierarchy in a simpler way\r\n * Example: a field like a.b.c.d => { a : { b :{ c : { d: value } } } }\r\n */\r\nexport const dotNotationToObject = (fieldName, value) => {\r\n const innerFields = fieldName.split('.');\r\n if (innerFields.length === 1) return fieldName;\r\n return JSON.parse(\r\n `{${fieldName\r\n .split('.')\r\n .reverse()\r\n .reduce((prev, curr, index) => `\"${curr}\":{${index === 1 ? '\"' : ''}${prev}${index === 1 ? '\"' : ''}${index === 1 ? `:${value}` : ''}}`)}}`\r\n );\r\n};\r\n\r\nconst isObj = (object) => {\r\n const type = typeof object;\r\n return object !== null && (type === 'object' || type === 'function');\r\n};\r\n","/**\r\n * Format Dates based in the Internationalization JS Api (Define more functions with new options settings)\r\n * Referene: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\r\n * Use: moneyFormater.format(2500) => $2,500.00\r\n */\r\nexport const moneyFormater = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 0,\r\n // the default value for minimumFractionDigits depends on the currency\r\n // and is usually already 2\r\n});\r\n\r\nexport const moneyDecimalFormater = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2,\r\n // the default value for minimumFractionDigits depends on the currency\r\n // and is usually already 2\r\n});\r\n\r\nexport const money1DecimalFormater = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 1,\r\n});\r\n\r\n/**\r\n * Use: dateFormater.format(date) => \"12/19/2012\"\r\n */\r\nexport const dateLocalFormater = new Intl.DateTimeFormat('en-US');\r\n\r\n/**\r\n * Format Dates based in the Internationalization JS Api (Define more functions with new options settings)\r\n * Referene: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\r\n * Use: dateFormater.format(date) => \"12/19/2012, 19:00:00\"\r\n */\r\nexport const dateFormater = new Intl.DateTimeFormat('en-US', {\r\n year: 'numeric',\r\n month: '2-digit',\r\n day: '2-digit',\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n second: 'numeric',\r\n hour12: true,\r\n timeZone: 'GMT',\r\n});\r\n\r\n/**\r\n * Format Dates based in the Internationalization JS Api (Define more functions with new options settings)\r\n * Referene: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\r\n * Use: dateFormater.format(date) => \"2023-01-20\"\r\n */\r\nexport const dateNumericalFormater = new Intl.DateTimeFormat('fr-CA', {\r\n year: 'numeric',\r\n month: '2-digit',\r\n day: '2-digit',\r\n});\r\n\r\n/**\r\n * Format Dates to its long text form based in the Internationalization JS Api (Define more functions with new options settings)\r\n * Referene: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\r\n * Use: dateFormater.format(date) => \"November 05, 2023\"\r\n */\r\nexport const dateLongTextFormater = new Intl.DateTimeFormat('en-US', {\r\n year: 'numeric',\r\n month: 'long',\r\n day: '2-digit',\r\n});\r\n\r\n/**\r\n * Format Dates to its short text form based in the Internationalization JS Api (Define more functions with new options settings)\r\n * Referene: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\r\n * Use: dateFormater.format('20231101') => \"Jan 2023\"\r\n */\r\nexport const dateShortTextFormater = new Intl.DateTimeFormat('en-US', {\r\n month: 'short',\r\n year: '2-digit',\r\n});\r\n\r\n/**\r\n * Short Format Dates based in the Internationalization JS Api (Define more functions with new options settings)\r\n * Referene: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\r\n * Use: dateFormater.format(date) => \"12/19/2012\"\r\n */\r\nexport const dateShortFormater = new Intl.DateTimeFormat('en-US', {\r\n year: 'numeric',\r\n month: 'numeric',\r\n day: 'numeric',\r\n timeZone: 'GMT',\r\n});\r\n\r\n/**\r\n * Short Format time based in the Internationalization JS Api (Define more functions with new options settings)\r\n * Referene: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\r\n * Use: dateFormater.format(date) => \"12/19/2012\"\r\n */\r\nexport const timeFormater = new Intl.DateTimeFormat('en-US', {\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n timeZone: 'GMT',\r\n});\r\n\r\n/**\r\n * Formats simple numbers.\r\n * Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat\r\n * Use: numberFormater.format(10000) => 10,000\r\n */\r\nexport const numberFormater = new Intl.NumberFormat('en-US');\r\n\r\n/**\r\n * Short Format time based in the Internationalization JS Api (Define more functions with new options settings)\r\n * Referene: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\r\n * Use: monthYearFormater.format(date) => \"August 2020\"\r\n */\r\nexport const monthYearFormater = new Intl.DateTimeFormat('en-US', { month: 'long', year: 'numeric' });\r\n\r\n/**\r\n * @param {number|string} number Number to format\r\n * @param {object} options Format options\r\n * @param {string} options.thousand Thousands character separator (default: \",\")\r\n * @param {string} options.decimal Decimals character separator (default: \".\")\r\n * @param {string} options.formatDecimals (default: \"false\")\r\n * @param {string} options.negative Negative character (default: \"-\")\r\n * @returns {string} Formatted number\r\n */\r\nexport function formatNumber(number, { thousand = ',', decimal = '.', negative = '-', formatDecimals = false, _isDecimalPart } = {}) {\r\n const parsed = parseFloat(number);\r\n if (Number.isNaN(parsed)) {\r\n return '';\r\n }\r\n const _negative = parsed < 0;\r\n const _number = String(number)\r\n .replace(/^0+/, '')\r\n .trim()\r\n .replace(new RegExp(`[\\\\${thousand}\\\\-]`, 'g'), '');\r\n\r\n if (_number.includes(decimal)) {\r\n const [value, decimals] = _number.split(decimal);\r\n const opts = { thousand, decimal, formatDecimals };\r\n return `${_negative ? negative : ''}${formatNumber(value, opts)}${!decimals ? '' : `${decimal}${formatDecimals ? formatNumber(decimals, { ...opts, _isDecimalPart: true }) : decimals}`}`;\r\n }\r\n\r\n let parts = _number.split('');\r\n\r\n if (!_isDecimalPart) {\r\n parts = parts.reverse();\r\n }\r\n\r\n let processedParts = parts.map((char, index, { length }) => ((index + 1) % 3 === 0 && index !== length - 1 ? [char, thousand] : char)).flat(Infinity);\r\n\r\n if (!_isDecimalPart) {\r\n processedParts = processedParts.reverse();\r\n }\r\n\r\n return `${_negative ? negative : ''}${processedParts.join('')}`;\r\n}\r\n","/**\r\n * Groups an array by one or more properties\r\n * @param {*} keys Array with the property names\r\n */\r\nexport const groupByProperty = (keys) => (array) =>\r\n array.reduce((objectsByKeyValue, obj) => {\r\n const value = keys.map((key) => obj[key]).join('-');\r\n objectsByKeyValue[value] = (objectsByKeyValue[value] || []).concat(obj);\r\n return objectsByKeyValue;\r\n }, {});\r\n\r\n/**\r\n * Groups an array by an aggregate function\r\n * @param {*} array Array to be grouped\r\n * @param {*} f function that define the grouping logic\r\n */\r\nexport const groupByFunction = (array, f) => {\r\n return array.reduce((out, val) => {\r\n const by = typeof f === 'function' ? `${f(val)}` : val[f];\r\n (out[by] = out[by] || []).push(val);\r\n return out;\r\n }, {});\r\n};\r\n","export const hasOwnProp = (obj, prop) => Object.getOwnPropertyNames(obj).includes(prop);\r\n","/**\r\n * Check that a one value is included in the other\r\n * Array: One of the items is the value to compare\r\n * Object: One of the properties have the value to compare\r\n * String: It contains the value to compare\r\n * Other: Its converted into string and compared the same way\r\n * @param { * } value object containing the values to compare\r\n * @param { * } other object to be found within the first value\r\n */\r\nexport const includes = (value, other) => {\r\n switch (value.constructor) {\r\n case String:\r\n return value.toLowerCase().includes(other.toLowerCase());\r\n case Array:\r\n return value.includes(other);\r\n case Object:\r\n return Object.values(value).includes(other);\r\n default:\r\n return value.toString().toLowerCase().includes(other.toString().toLowerCase());\r\n }\r\n};\r\n","export const isPrimitive = (value) => value !== Object(value);\r\n","/**\r\n * loop through the properties of an object\r\n * @param {*} obj\r\n * @param {*} func\r\n */\r\nexport const loopObject = (obj = {}, func) => obj.constructor === Object && Object.keys(obj).forEach((key) => ({ [key]: func(obj[key], key, obj) }));\r\n","import IMask from 'imask';\r\nimport { empty } from './empty';\r\n\r\n/**\r\n * Masks an input HTML element with custom configuration.\r\n */\r\nexport const basicMask = (input, { mask, definitions } = {}) => {\r\n const element = input?.inputElement ? input.inputElement : input;\r\n IMask(element, {\r\n mask,\r\n definitions,\r\n });\r\n};\r\n\r\nexport const runPhoneMaskFormat = (value) => {\r\n if (empty(value)) return value;\r\n const regularExp = value\r\n .replace('null', '')\r\n .replace(/\\W/g, '')\r\n .match(/(\\w{0,3})(\\w{0,3})(\\w{0,4})/);\r\n return !regularExp[2] ? regularExp[1] : `(${regularExp[1]}) ${regularExp[2]}${regularExp[3] ? `-${regularExp[3]}` : ''}`;\r\n};\r\n\r\n/**\r\n * Mask a input html element to format its text for US based Phone Numbers\r\n */\r\nexport const maskPhone = (input, validate = false) => {\r\n if (input) {\r\n // const { inputElement } = input;\r\n IMask(input.inputElement, {\r\n mask: '(www) www-wwww',\r\n definitions: { w: /\\w/ },\r\n });\r\n\r\n // eslint-disable-next-line func-names\r\n input.addEventListener('input', (e) => {\r\n if (validate && e.target.validate instanceof Function) {\r\n e.target.validate();\r\n }\r\n });\r\n\r\n if (input.value) {\r\n input.value = runPhoneMaskFormat(input.value);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Mask a input html element to only allow numeric values\r\n */\r\nexport const maskNumbersOnly = (input, acceptDecimal = false) => {\r\n let keys = [8, 9, 13, 16, 17, 18, 19, 20, 27, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 91, 92, 93];\r\n\r\n if (acceptDecimal) {\r\n keys = keys.concat([46, 110, 190]);\r\n }\r\n\r\n if (input) {\r\n // eslint-disable-next-line func-names\r\n input.addEventListener(\r\n 'keypress',\r\n (e) => {\r\n // eslint-disable-next-line no-restricted-globals\r\n const key = !isNaN(e.charCode) ? e.charCode : e.keyCode;\r\n if (key && keys.indexOf(key) === -1) e.preventDefault();\r\n },\r\n false\r\n );\r\n\r\n // EDIT: Disallow pasting non-number content\r\n input.addEventListener(\r\n 'paste',\r\n (e) => {\r\n const pasteData = e.clipboardData.getData('text/plain');\r\n if (pasteData.match(/[^0-9]/)) e.preventDefault();\r\n },\r\n false\r\n );\r\n }\r\n};\r\n","import { deepCompare } from './deepCompare';\r\n\r\nexport const omit = (arr = [], remove = []) => (arr && arr.filter((item) => (remove != null ? !remove.some((_item) => deepCompare(_item, item)) : true))) || [];\r\n","import { areArray } from './isArray';\r\nimport { empty } from './empty';\r\nimport { objectPath } from './objectPath';\r\n\r\n/**\r\n * Order an array of objects, based in their properties, using the array of properties to beorderer\r\n * @param {*} array the array of objects to be ordered\r\n * @param {*} properties the array of properties to order by\r\n * @param {*} order order direction array for each property\r\n * @returns\r\n */\r\nexport const orderBy = (array = [], fields = [], orders = []) => (areArray(array, fields, orders) ? fields.reduceRight((result, field, index) => orderByField(result, field, orders[index]), [...array]) : []);\r\n\r\n/**\r\n * Order an array of objects, based on one Property name\r\n * @param {*} array the array of objects to be ordered\r\n * @param {*} properties the property name to order by\r\n * @param {*} order order direction\r\n * @returns\r\n */\r\nexport const orderByField = (array = [], field, orientation = '') => {\r\n const reverse = orientation.toUpperCase() === 'DESC';\r\n const result = array.sort((current, next) => {\r\n const currentValue = !empty(current) && objectPath(current).get(field);\r\n const nextValue = !empty(next) && objectPath(next).get(field);\r\n\r\n const invalid = [undefined, null];\r\n\r\n if (invalid.includes(currentValue) && invalid.includes(nextValue)) return 0;\r\n if (invalid.includes(currentValue)) return 1;\r\n if (invalid.includes(nextValue)) return -1;\r\n return currentValue.toString().localeCompare(nextValue, undefined, { numeric: true, sensitivity: 'base' });\r\n });\r\n\r\n return reverse ? result.reverse() : result;\r\n};\r\n","export const reverseEntries = (object) => Object.entries(object).reduce((memo, [key, value]) => ({ ...memo, [value]: key }), {});\r\n","/**\r\n * Takes an string value and return its primitive real form\r\n * @value {String} value\r\n */\r\nexport const stringToPrimitive = (value) => {\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return value;\r\n }\r\n};\r\n","import { deepInclude } from './deepInclude';\r\n\r\n/**\r\n *\r\n * @param { Array } item array to process\r\n */\r\nexport const uniq = (item) => (item instanceof Array ? item.reduce((memo, obj) => (!deepInclude(memo, obj) ? (memo.push(obj), memo) : memo), []) : []);\r\nexport const uniqBy = (item, fn) => (item instanceof Array ? item.reduce((memo, obj) => (fn(obj, memo) ? (memo.push(obj), memo) : memo), []) : []);\r\n\r\n/**\r\n * Use this function only if Array where T is primitive\r\n * @returns {Array} Array of unique primitive entries\r\n */\r\nexport const uniqPrimitive = (arr) => (arr instanceof Array ? Array.from(new Set(arr)) : []);\r\n","export const unquotedStringify = (value) => {\r\n switch (value.constructor) {\r\n case Object:\r\n return JSON.stringify(value).replace(/\"([^(\")\"]+)\":/g, '$1:');\r\n case Array:\r\n return JSON.stringify(value).replace(/\"/g, '');\r\n }\r\n};\r\n","/**\r\n * Wait for a condition returned by the condFunc function, when the condition is true, executes readyFunction\r\n * it check the condFunction every checkInterval milliseconds\r\n * @param {*} function to be executed that returns true or false\r\n * @param {*} function to be executed in case first condition returns true\r\n * @param {*} every interval time the first function will be executed\r\n */\r\nexport const wait = (condFunc, readyFunc, checkInterval) => {\r\n const checkFunc = () => {\r\n if (condFunc()) {\r\n readyFunc();\r\n } else {\r\n setTimeout(checkFunc, checkInterval);\r\n }\r\n };\r\n\r\n checkFunc();\r\n};\r\n","/* eslint-disable no-restricted-syntax */\r\n/* eslint-disable guard-for-in */\r\n/**\r\n * Connvert a word to its plural form\r\n * @param {String} word Word to be transformed\r\n */\r\nexport const plural = (word) => {\r\n const pluralWords = {\r\n '(quiz)$': '$1zes',\r\n '(partner|builder|plan|spec|lot|user|promotion|lead|spot)$': '$1s',\r\n '(communit)y$': '$1ies',\r\n '^(ox)$': '$1en',\r\n '([m|l])ouse$': '$1ice',\r\n '(matr|vert|ind)ix|ex$': '$1ices',\r\n '(x|ch|ss|sh)$': '$1es',\r\n '([^aeiouy]|qu)y$': '$1ies',\r\n '(hive)$': '$1s',\r\n '(?:([^f])fe|([lr])f)$': '$1$2ves',\r\n '(shea|lea|loa|thie)f$': '$1ves',\r\n sis$: 'ses',\r\n '([ti])um$': '$1a',\r\n '(tomat|potat|ech|her|vet)o$': '$1oes',\r\n '(bu)s$': '$1ses',\r\n '(alias)$': '$1es',\r\n '(octop)us$': '$1i',\r\n '(ax|test)is$': '$1es',\r\n '(us)$': '$1es',\r\n '([^s]+)$': '$1s',\r\n '(Home)$': '$1s',\r\n };\r\n\r\n // check for matches using regular expressions\r\n for (const reg in pluralWords) {\r\n const pattern = new RegExp(reg, 'i');\r\n if (pattern.test(word)) {\r\n return word.replace(pattern, pluralWords[reg]);\r\n }\r\n }\r\n\r\n return word;\r\n};\r\n\r\n/**\r\n * Connvert a word to its singular form\r\n * @param {String} word Word to be transformed\r\n */\r\nexport const singular = (word) => {\r\n const singularWords = {\r\n '(quiz)zes$': '$1',\r\n '(matr)ices$': '$1ix',\r\n '(promotion|lead)s$': '$1',\r\n '(vert|ind)ices$': '$1ex',\r\n '^(ox)en$': '$1',\r\n '(alias)es$': '$1',\r\n '(octop|vir)i$': '$1us',\r\n '(cris|ax|test)es$': '$1is',\r\n '(shoe)s$': '$1',\r\n '(o)es$': '$1',\r\n '(bus)es$': '$1',\r\n '([m|l])ice$': '$1ouse',\r\n '(x|ch|ss|sh)es$': '$1',\r\n '(m)ovies$': '$1ovie',\r\n '(s)eries$': '$1eries',\r\n '([^aeiouy]|qu)ies$': '$1y',\r\n '([lr])ves$': '$1f',\r\n '(tive)s$': '$1',\r\n '(hive)s$': '$1',\r\n '(li|wi|kni)ves$': '$1fe',\r\n '(shea|loa|lea|thie)ves$': '$1f',\r\n '(^analy)ses$': '$1sis',\r\n '((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$': '$1$2sis',\r\n '([ti])a$': '$1um',\r\n '(n)ews$': '$1ews',\r\n '(h|bl)ouses$': '$1ouse',\r\n '(corpse)s$': '$1',\r\n '(us)es$': '$1',\r\n s$: '',\r\n };\r\n\r\n // check for matches using regular expressions\r\n for (const reg in singularWords) {\r\n const pattern = new RegExp(reg, 'i');\r\n\r\n if (pattern.test(word)) {\r\n return word.replace(pattern, singularWords[reg]);\r\n }\r\n }\r\n\r\n return word;\r\n};\r\n\r\n/**\r\n * Convert any word to lowerCamelCase format\r\n * @param {*} word to be converted\r\n */\r\nexport const toLowerCamelCase = (word) =>\r\n word.replace(/^([A-Z])|\\s(\\w)/g, (match, p1, p2) => {\r\n if (p2) return p2.toUpperCase();\r\n return p1.toLowerCase();\r\n });\r\n\r\n/**\r\n * Converts any word/sentence into its capitalized form.\r\n * @param {*} word to be converted\r\n */\r\nexport const capitalize = (word) => {\r\n if (!word) return null;\r\n\r\n return word\r\n .toLowerCase()\r\n .split(' ')\r\n .map((chunk) => `${chunk.charAt(0).toUpperCase()}${chunk.substring(1)}`)\r\n .join(' ');\r\n};\r\n\r\n/**\r\n * Converts any word to its UpperCamelCase form\r\n * @param {*} word to be converted\r\n */\r\nexport const toUpperCamelCase = (word) => {\r\n return word.charAt(0).toUpperCase() + word.slice(1);\r\n};\r\n\r\n/**\r\n * Converts a camel case string into a space-separated fashion.\r\n * @param {*} word\r\n */\r\nexport const splitCamelCase = (word) => {\r\n return word.replace(/([A-Z])/g, ' $1').replace(/^./, (str) => {\r\n return str.toUpperCase();\r\n });\r\n};\r\n\r\n/**\r\n * Generates words of [size] size, with random letters\r\n */\r\nexport const randomWord = (size) =>\r\n Math.random()\r\n .toString(36)\r\n .replace(/[^a-z]+/g, '')\r\n .substr(0, size);\r\n","export const JSONText = (text) => JSON.stringify(text);\r\n","export const isDevMode = () => import.meta.env.DEV || document.location.hostname.includes('localhost') || document.location.hostname.includes('https://dev.zondalive.com');\r\n","export const isNullish = (object) => object === null || object === undefined;\r\n","export class Model {\r\n model;\r\n\r\n name;\r\n\r\n query;\r\n\r\n contextRequest;\r\n\r\n schema;\r\n\r\n describerFields;\r\n\r\n parent;\r\n\r\n constructor(params) {\r\n Object.assign(this, params);\r\n }\r\n}\r\n","import { uniq, empty, extend, isPrimitive, unquotedStringify } from '../bdx-lodash-lite';\r\n/**\r\n * @typedef { Object } Operation\r\n * @property { string } operation operation name\r\n * @property { object } argument argument object\r\n * @property { array } fields list of fields\r\n *\r\n * The constructor receives the list of operations\r\n * @class GraphQLQuery\r\n * @param { Operation[] } [operations=[]] list of operations to be performed\r\n */\r\nexport class GraphQLQuery {\r\n constructor(operations = []) {\r\n this.operations = operations;\r\n }\r\n\r\n /**\r\n * Generate the operation query\r\n * Arguments is build into individual string of the format 'key:value' and joined by comma\r\n * Fields are joined by comma, some fields might be nested operations so they are processed then added to the result\r\n *\r\n * ```\r\n * I.E\r\n * operation(key:value) {\r\n * field1,\r\n * nestedOperation(key:value,key:value) {\r\n * field1,\r\n * field2\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @param {string} operation.operation operation name\r\n * @param {object} operation.argument arguments list\r\n * @param {array} operation.fields field list\r\n *\r\n\r\n */\r\n generateOperation(operationConfig) {\r\n if (empty(operationConfig)) return '';\r\n const { operation } = operationConfig;\r\n let { argument, fields } = operationConfig;\r\n argument = !empty(argument)\r\n ? `(${Object.entries(argument)\r\n .map(([key, value]) => (key && !empty(value) ? `${key}:${isPrimitive(value) ? value : unquotedStringify(value)}` : null))\r\n .filter((entry) => !empty(entry))\r\n .join(',')})`\r\n : '';\r\n fields = !empty(fields) ? fields.map((field) => (field instanceof GraphQLQuery ? field.getSubQuery() : this._convertField(field))) : '';\r\n\r\n return `${operation}${argument}${!empty(fields) ? `{${fields}}` : ''}`;\r\n }\r\n\r\n /**\r\n * parent query holder\r\n *\r\n * IE\r\n * query {\r\n * ... operation details\r\n * }\r\n */\r\n getQuery() {\r\n return `query{${this.getSubQuery()}}`;\r\n }\r\n\r\n /**\r\n * This loops through each operation and calls generateOperation to get it's respective query\r\n */\r\n getSubQuery() {\r\n return `${(this.operations && this.operations.map((operation) => this.generateOperation(operation)).join()) || ''}`;\r\n }\r\n\r\n // Exposed Methods\r\n /**\r\n * Set the provided argument values to the operation\r\n * @param {string} operation operation name\r\n * @param {object} args object containing the arguments to add or override\r\n */\r\n setArguments(operation, args) {\r\n const _operation = this.getOperation(operation);\r\n if (empty(_operation)) throw new Error('Invalid Operation');\r\n this._setArguments(_operation, args);\r\n return this;\r\n }\r\n\r\n /**\r\n * Set the provided argument values to all the operations\r\n * @param {object} args object containing the arguments to add or override\r\n */\r\n setArgumentsAll(args) {\r\n this._setArgumentsAll(args);\r\n return this;\r\n }\r\n\r\n /**\r\n * Add fields to the request\r\n * @param {string} operation operation name\r\n * @param {array} _fields list of fields to add\r\n */\r\n addFields(operation, _fields) {\r\n const _operation = this.getOperation(operation);\r\n if (empty(_operation)) throw new Error('Invalid Operation');\r\n this._addFields(_operation, _fields);\r\n return this;\r\n }\r\n\r\n /**\r\n * Replace the whole list of fields with a given array\r\n * @param {string} operation operation name\r\n * @param {array} fields list of fields to replace with\r\n */\r\n setFields(operation, fields) {\r\n const _operation = this.getOperation(operation);\r\n if (empty(_operation)) throw new Error('Invalid Operation');\r\n this._setFields(_operation, fields);\r\n return this;\r\n }\r\n\r\n /**\r\n * Get operation by name\r\n * @param {string} name operation name\r\n */\r\n getOperation(name) {\r\n return this._getOperation(name);\r\n }\r\n\r\n /**\r\n * Get all the operation names\r\n */\r\n getOperationNames() {\r\n return this.operations.map((operation) => operation.operation);\r\n }\r\n\r\n // Protected Methods\r\n /**\r\n * set override the arguments with a provided object\r\n * @param {object} _operation operation object\r\n * @param {object} _args arguments object\r\n */\r\n _setArguments(_operation, _args) {\r\n if (!_operation.argument) _operation.argument = {};\r\n extend(_operation.argument, _args);\r\n }\r\n\r\n /**\r\n * Set the provided argument values to all the operations\r\n * @param {object} _args object containing the arguments to add or override\r\n */\r\n _setArgumentsAll(_args) {\r\n this.operations.forEach((_operation) => {\r\n this._setArguments(_operation, _args);\r\n });\r\n }\r\n\r\n /**\r\n * Add fields to an operation\r\n * @param {object} operation operation object\r\n * @param {array} _fields list of fields to add\r\n */\r\n _addFields(_operation, _fields) {\r\n if (!_operation.fields) _operation.fields = [];\r\n _operation.fields = _operation.fields.concat(_fields);\r\n _operation.fields = uniq(_operation.fields);\r\n }\r\n\r\n /**\r\n * Replace the whole list of fields with a given array\r\n * @param {object} operation operation object\r\n * @param {array} fields list of fields to replace with\r\n */\r\n _setFields(_operation, _field) {\r\n _operation.fields = _field;\r\n }\r\n\r\n /**\r\n * Get operation by name\r\n * @param {string} name operation name\r\n */\r\n _getOperation(_name) {\r\n return this.operations.find((_operation) => _operation.operation === _name);\r\n }\r\n\r\n /**\r\n * Check a field name and convert it to object notation if it have a dotted notation, so we can ask for fields\r\n * with hierarchy in a simpler way\r\n * Example: a field like a.b.c.d => a { b { c { d } } }\r\n */\r\n _convertField(fieldName) {\r\n const innerFields = fieldName.split('.');\r\n if (innerFields.length === 1) return fieldName;\r\n return fieldName\r\n .split('.')\r\n .reverse()\r\n .reduce((prev, curr) => `${curr}{${prev}}`);\r\n }\r\n\r\n // #endregion\r\n}\r\n\r\n/**\r\n * Zips query\r\n */\r\nexport const gql = (...args) => {\r\n const [templateParts, ...variables] = args;\r\n const zipper = [];\r\n [...Array(templateParts.length > variables.length ? templateParts.length : variables.length)].forEach((n, i) => (templateParts[i] !== undefined && zipper.push(templateParts[i]), variables[i] !== undefined && zipper.push(variables[i])));\r\n return zipper.join('');\r\n};\r\n\r\n/**\r\n * Question if shortcut directive\r\n * @param {Boolean} flag Flag to know if the content should be returned\r\n * @param {Function} resolver Content that should be returned\r\n * @returns {String} template if flag is true otherwise empty string\r\n */\r\nexport const qif = (flag, resolver) => (flag ? resolver() : '');\r\n","import { Model } from '../utils/models';\r\nimport { GraphQLQuery } from '../utils/api/graph-helpers';\r\nimport { partnerSchema } from '../app.entities';\r\n\r\nexport const Partner = () =>\r\n new Model({\r\n model: 'partner',\r\n name: 'partners',\r\n query: new GraphQLQuery([\r\n {\r\n operation: 'partners',\r\n argument: {},\r\n fields: ['partnerId', 'partnerName'],\r\n },\r\n ]),\r\n schema: partnerSchema,\r\n urlKey: 'partnerId',\r\n describerFields: {\r\n id: 'partnerId',\r\n name: 'partnerName',\r\n relation: 'partner',\r\n relationId: 'partnerId',\r\n },\r\n });\r\n","import { Model } from '../utils/models';\r\nimport { GraphQLQuery } from '../utils/api/graph-helpers';\r\nimport { builderSchema } from '../app.entities';\r\nimport { Partner } from './Partner';\r\n\r\nexport class BuilderModel extends Model {\r\n model = 'builder';\r\n\r\n name = 'builders';\r\n\r\n query = new GraphQLQuery([\r\n {\r\n operation: 'builders',\r\n argument: { corpOnly: true },\r\n fields: ['builderId', 'builderName', 'statusId'],\r\n },\r\n ]);\r\n\r\n schema = builderSchema;\r\n\r\n urlKey = 'communityId';\r\n\r\n describerFields = {\r\n id: 'builderId',\r\n name: 'builderName',\r\n relation: 'parentBuilder',\r\n relationId: 'parentBuilderId',\r\n };\r\n\r\n parent = Partner();\r\n}\r\n\r\nexport const Builder = () => new BuilderModel();\r\n\r\nexport const corporateDistributionDefinition = {\r\n email: String(),\r\n ftpServerUrl: String(),\r\n ftpUserName: String(),\r\n ftpPassword: String(),\r\n leadFormatType: String(),\r\n leadDeliveryMethod: String(),\r\n apiToken: String(),\r\n allowLeadApiAccess: false,\r\n allowAccessAugmentedLeadData: false,\r\n deliverLeadsToCorpRecipientOnly: false,\r\n};\r\n","/**\r\n * Helper Importings\r\n */\r\nimport { schema } from 'normalizr';\r\nimport { empty } from './utils/bdx-lodash-lite';\r\nimport { corporateDistributionDefinition } from './models/Builder';\r\n\r\n/**\r\n * Entity Schemas\r\n */\r\nexport const userSchema = new schema.Entity('users', {}, { idAttribute: 'userId' });\r\nexport const planSchema = new schema.Entity('plans', {}, { idAttribute: 'id' });\r\nexport const specSchema = new schema.Entity('specs', {}, { idAttribute: 'id' });\r\nexport const lotSchema = new schema.Entity('lots', {}, { idAttribute: 'id' });\r\nexport const listHubSchema = new schema.Entity('listHubBuilderFilters', {}, { idAttribute: 'builderId' });\r\nexport const brandSchema = new schema.Entity(\r\n 'brands',\r\n {},\r\n {\r\n idAttribute: 'brandId',\r\n processStrategy: (entity) => {\r\n if (empty(entity.questions)) return entity;\r\n return { ...entity, questions: entity.questions?.map((question) => ({ ...question, sequence: question.sequence ? question.sequence : 0, answer: question.answer?.[0]?.name ?? '' })) };\r\n },\r\n }\r\n);\r\nexport const spotlightSchema = new schema.Entity('spotlightOrders', {}, { idAttribute: 'id' });\r\nexport const agentSchema = new schema.Entity('builderAgents', {}, { idAttribute: 'builderId' });\r\nexport const agentPolicySchema = new schema.Entity('agentPolicies', {}, { idAttribute: 'id' });\r\nexport const buyerPolicySchema = new schema.Entity('buyerPolicies', {}, { idAttribute: 'id' });\r\nexport const invoiceSchema = new schema.Entity('invoices', {}, { idAttribute: 'id' });\r\nexport const videosSchema = new schema.Entity(\r\n 'videos',\r\n {},\r\n {\r\n idAttribute: 'videoId',\r\n mergeStrategy: (currentEntity = {}, newEntity = {}) => ({\r\n ...currentEntity,\r\n ...newEntity,\r\n thumbnailUrl: newEntity.thumbnailUrl ? newEntity.thumbnailUrl : currentEntity.thumbnailUrl,\r\n }),\r\n }\r\n);\r\nexport const leadRecipientSchema = new schema.Entity('leadRecipients', {}, { idAttribute: 'id' });\r\nexport const imagesSchema = new schema.Entity('images', {}, { idAttribute: 'imageId' });\r\nexport const builderSchema = new schema.Entity(\r\n 'builders',\r\n {},\r\n {\r\n idAttribute: 'builderId',\r\n processStrategy: (entity) => {\r\n if (entity.corporateDistribution === null) {\r\n entity.corporateDistribution = corporateDistributionDefinition;\r\n } else if (entity.corporateDistribution !== undefined) {\r\n entity.corporateDistribution = { ...entity.corporateDistribution, allowLeadApiAccess: !empty(entity.corporateDistribution?.apiToken) };\r\n }\r\n return entity;\r\n },\r\n }\r\n);\r\nexport const partnerSchema = new schema.Entity('partners', {}, { idAttribute: 'partnerId' });\r\nexport const divisionSchema = new schema.Entity('divisions', {}, { idAttribute: 'builderId' });\r\nexport const roleGroupSchema = new schema.Entity('roleGroups', {}, { idAttribute: 'id' });\r\nexport const userPermissionSchema = new schema.Entity('userPermissions', {}, { idAttribute: 'id' });\r\nexport const permissionSchema = new schema.Entity('permissions', {}, { idAttribute: 'id' });\r\nexport const serviceSchema = new schema.Entity('services', {}, { idAttribute: 'id' });\r\nexport const changeHistorySchema = new schema.Entity('changeHistory', {}, { idAttribute: 'id' });\r\nexport const bdxTypeSchema = new schema.Entity('types', {}, { idAttribute: 'id' });\r\nexport const schoolDistrictSchema = new schema.Entity('schoolDistricts', {}, { idAttribute: 'id' });\r\nexport const schoolSchema = new schema.Entity('schools', {}, { idAttribute: 'id' });\r\nexport const mlsNameSchema = new schema.Entity('mlsNames', {}, { idAttribute: 'id' });\r\nexport const loaderDataSchema = new schema.Entity('loaderData', {}, { idAttribute: 'documentId' });\r\nexport const interactiveMediaSchema = new schema.Entity('interactiveMedias', {}, { idAttribute: 'id' });\r\nexport const planOptionSchema = new schema.Entity('planOptions', {}, { idAttribute: 'optionId' });\r\nexport const amenitySchema = new schema.Entity('amenities', {}, { idAttribute: 'id' });\r\nexport const utilitySchema = new schema.Entity('utilities', {}, { idAttribute: 'id' });\r\nexport const brochureSchema = new schema.Entity('brochures', {}, { idAttribute: 'id' });\r\nexport const greenProgramSchema = new schema.Entity('greenPrograms', {}, { idAttribute: 'id' });\r\nexport const testimonialSchema = new schema.Entity(\r\n 'testimonials',\r\n {},\r\n {\r\n idAttribute: 'id',\r\n processStrategy: (entity) => {\r\n const isVideoTestimonial = Object.prototype.hasOwnProperty.call(entity, 'originalPath');\r\n\r\n if (isVideoTestimonial) {\r\n entity.description = entity.originalPath;\r\n delete entity.originalPath;\r\n }\r\n\r\n entity.type = isVideoTestimonial ? 'Video' : 'Text';\r\n return entity;\r\n },\r\n }\r\n);\r\nexport const promotionSchema = new schema.Entity(\r\n 'promotions',\r\n {},\r\n {\r\n idAttribute: 'id',\r\n processStrategy: (entity) => {\r\n entity.communities = entity.communities || [];\r\n return entity;\r\n },\r\n }\r\n);\r\n\r\nexport const eventSchema = new schema.Entity(\r\n 'events',\r\n {},\r\n {\r\n idAttribute: 'id',\r\n processStrategy: (entity) => {\r\n entity.communities = entity.communities || [];\r\n return entity;\r\n },\r\n }\r\n);\r\nexport const communitySchema = new schema.Entity(\r\n 'communities',\r\n {},\r\n {\r\n idAttribute: 'id',\r\n processStrategy: (entity) => {\r\n if (!empty(entity.promotions)) {\r\n entity.promotions = entity.promotions.results || [];\r\n }\r\n if (!empty(entity.events)) {\r\n entity.events = entity.events.results || [];\r\n }\r\n if (!empty(entity.activeEvents)) {\r\n entity.activeEvents = entity.activeEvents.results || [];\r\n }\r\n if (!empty(entity.activePromotions)) {\r\n entity.activePromotions = entity.activePromotions.results || [];\r\n }\r\n if (entity.mlsNameId === null) {\r\n entity.mlsNameId = -1;\r\n }\r\n return entity;\r\n },\r\n }\r\n);\r\n\r\n/**\r\n * Composed Schemas\r\n */\r\nexport const arrayOfBuilders = new schema.Array(\r\n {\r\n builders: builderSchema,\r\n divisions: divisionSchema,\r\n },\r\n (input) => (!input.parentBuilderId ? 'builders' : 'divisions')\r\n);\r\n\r\nexport const builderObject = new schema.Union(\r\n {\r\n builders: builderSchema,\r\n divisions: divisionSchema,\r\n },\r\n (input) => (!input.parentBuilderId ? 'builders' : 'divisions')\r\n);\r\n\r\n/**\r\n * Schema extensions\r\n */\r\npartnerSchema.define({ builders: arrayOfBuilders });\r\n\r\nbuilderSchema.define({\r\n divisions: [divisionSchema],\r\n communities: [communitySchema],\r\n partner: partnerSchema,\r\n parentBuilder: builderSchema,\r\n});\r\n\r\ndivisionSchema.define({\r\n plans: [planSchema],\r\n communities: [communitySchema],\r\n partner: partnerSchema,\r\n parentBuilder: builderSchema,\r\n promotions: [promotionSchema],\r\n events: [eventSchema],\r\n textTestimonials: [testimonialSchema],\r\n videoTestimonials: [testimonialSchema],\r\n});\r\n\r\ncommunitySchema.define({\r\n plans: [planSchema],\r\n specs: [specSchema],\r\n lots: [lotSchema],\r\n builder: divisionSchema,\r\n pciImage: imagesSchema,\r\n images: [imagesSchema],\r\n videos: [videosSchema],\r\n promotions: [promotionSchema],\r\n events: [eventSchema],\r\n schools: [schoolSchema],\r\n mlsName: mlsNameSchema,\r\n openAmenities: [amenitySchema],\r\n utilities: [utilitySchema],\r\n schoolDistricts: [schoolDistrictSchema],\r\n interactiveMedias: [interactiveMediaSchema],\r\n brochures: [brochureSchema],\r\n greenPrograms: [greenProgramSchema],\r\n textTestimonials: [testimonialSchema],\r\n videoTestimonials: [testimonialSchema],\r\n childCommunities: [communitySchema],\r\n parentCommunity: communitySchema,\r\n});\r\n\r\nplanSchema.define({\r\n childPlans: [planSchema],\r\n specs: [specSchema],\r\n images: [imagesSchema],\r\n videos: [videosSchema],\r\n community: communitySchema,\r\n builder: builderObject,\r\n interactiveMedias: [interactiveMediaSchema],\r\n planOptions: [planOptionSchema],\r\n parentPlan: planSchema,\r\n});\r\n\r\nspecSchema.define({\r\n images: [imagesSchema],\r\n videos: [videosSchema],\r\n plan: planSchema,\r\n community: communitySchema,\r\n interactiveMedias: [interactiveMediaSchema],\r\n builder: divisionSchema,\r\n});\r\n\r\nbrandSchema.define({\r\n images: [imagesSchema],\r\n videos: [videosSchema],\r\n corporations: arrayOfBuilders,\r\n});\r\n\r\ninvoiceSchema.define({ builder: divisionSchema });\r\n\r\nlotSchema.define({\r\n images: [imagesSchema],\r\n videos: [videosSchema],\r\n community: communitySchema,\r\n interactiveMedias: [interactiveMediaSchema],\r\n builder: divisionSchema,\r\n});\r\n\r\nchangeHistorySchema.define({ users: [userSchema] });\r\n\r\nuserSchema.define({\r\n partner: partnerSchema,\r\n builders: [builderSchema],\r\n communities: [communitySchema],\r\n});\r\n\r\nagentSchema.define({\r\n builder: [builderSchema],\r\n agentPolicies: [agentPolicySchema],\r\n buyerPolicies: [buyerPolicySchema],\r\n});\r\n\r\nschoolDistrictSchema.define({ schools: [schoolSchema] });\r\npromotionSchema.define({ builder: divisionSchema, communities: [communitySchema] });\r\neventSchema.define({ builder: divisionSchema, communities: [communitySchema] });\r\n\r\n/**\r\n * Complex Schemas\r\n */\r\nexport const modelRequestSchema = new schema.Object({\r\n plans: [planSchema],\r\n specs: [specSchema],\r\n lots: [lotSchema],\r\n brands: [brandSchema],\r\n builderAgents: [agentSchema],\r\n agentPolicies: [agentPolicySchema],\r\n buyerPolicies: [buyerPolicySchema],\r\n listHubBuilderFilters: [listHubSchema],\r\n invoices: [invoiceSchema],\r\n videos: [videosSchema],\r\n images: [imagesSchema],\r\n partners: [partnerSchema],\r\n builders: arrayOfBuilders,\r\n communities: [communitySchema],\r\n users: [userSchema],\r\n userPermissions: [userPermissionSchema],\r\n roleGroups: [roleGroupSchema],\r\n permissions: [permissionSchema],\r\n services: [serviceSchema],\r\n promotions: { results: [promotionSchema] },\r\n events: { results: [eventSchema] },\r\n bdxTypes: [bdxTypeSchema],\r\n changeHistory: [changeHistorySchema],\r\n schoolDistricts: [schoolDistrictSchema],\r\n schools: [schoolSchema],\r\n mlsNames: [mlsNameSchema],\r\n loaderData: [loaderDataSchema],\r\n interactiveMedias: [interactiveMediaSchema],\r\n planOptions: [planOptionSchema],\r\n leadRecipients: [leadRecipientSchema],\r\n spotlightOrders: [spotlightSchema],\r\n greenPrograms: [greenProgramSchema],\r\n});\r\n\r\nexport const modelMutateSchema = new schema.Object({\r\n updatePlan: planSchema,\r\n insertPlan: planSchema,\r\n\r\n updateSpec: specSchema,\r\n insertSpec: specSchema,\r\n\r\n updateLot: lotSchema,\r\n insertLot: lotSchema,\r\n\r\n updateBuilder: builderSchema,\r\n\r\n updateImage: imagesSchema,\r\n insertImage: imagesSchema,\r\n updateVideo: videosSchema,\r\n insertVideo: videosSchema,\r\n updateCommunity: communitySchema,\r\n insertCommunity: communitySchema,\r\n insertPromotion: promotionSchema,\r\n updatePromotion: promotionSchema,\r\n insertInteractiveMedia: interactiveMediaSchema,\r\n updateInteractiveMedia: interactiveMediaSchema,\r\n insertEvent: eventSchema,\r\n updateEvent: eventSchema,\r\n /**\r\n * Open Amenities\r\n */\r\n insertCustomOpenAmenity: amenitySchema,\r\n updateCustomOpenAmenity: amenitySchema,\r\n deleteCustomOpenAmenity: amenitySchema,\r\n /**\r\n * Utilities\r\n */\r\n insertUtility: utilitySchema,\r\n updateUtility: utilitySchema,\r\n deleteUtility: utilitySchema,\r\n /**\r\n * Testimonials\r\n */\r\n insertTestimonial: testimonialSchema,\r\n updateTestimonial: testimonialSchema,\r\n deleteTestimonial: testimonialSchema,\r\n /**\r\n * Brochures\r\n */\r\n insertBrochure: brochureSchema,\r\n updateBrochure: brochureSchema,\r\n deleteBrochure: brochureSchema,\r\n /**\r\n * Green Programs\r\n */\r\n updateGreenProgram: greenProgramSchema,\r\n associateParentPlan: planSchema,\r\n assignPlansToCommunities: [planSchema],\r\n breakParentPlanInheritance: [planSchema],\r\n /**\r\n * User\r\n */\r\n updateUser: userSchema,\r\n updateBrand: brandSchema,\r\n});\r\n\r\nexport const navigationSchema = new schema.Object({\r\n partner: partnerSchema,\r\n builder: builderSchema,\r\n division: divisionSchema,\r\n community: communitySchema,\r\n plan: planSchema,\r\n spec: specSchema,\r\n lot: lotSchema,\r\n brand: brandSchema,\r\n agent: agentSchema,\r\n});\r\n","import { deepCompare } from '@/lodash/deepCompare';\r\nimport { empty } from '@/lodash/empty';\r\nimport { includes } from '@/lodash/includes';\r\nimport { reverseEntries } from '../bdx-lodash-lite/reverseEntries';\r\nimport { statusText } from '../../constants/bdx-lookups';\r\n\r\n/**\r\n * Receives the current and next value for a sorting function\r\n * @param {*} current\r\n * @param {*} next\r\n */\r\nexport const SORT = (current, next) => {\r\n if (!current && !next) return 0;\r\n if (!current) return 1;\r\n if (!next) return -1;\r\n return current.toString().localeCompare(next, undefined, { numeric: true, sensitivity: 'base' });\r\n};\r\n\r\nconst PRIMITIVE_TO_STRING = (value) => (value !== Object(value) && value.constructor !== String ? value.toString() : value);\r\n\r\n/**\r\n * Collection of filtering options\r\n */\r\nexport const FILTER_OPTIONS = {\r\n DEFINED(obj, prop) {\r\n return !empty(obj) ? Object.prototype.hasOwnProperty.call(obj, prop) : false;\r\n },\r\n NOT_DEFINED(obj, prop) {\r\n return !this.DEFINED(obj, prop);\r\n },\r\n EQUALS(obj, prop, value) {\r\n return this.DEFINED(obj, prop) ? deepCompare(PRIMITIVE_TO_STRING(obj[prop]), PRIMITIVE_TO_STRING(value)) : false;\r\n },\r\n NOT_EQUALS(obj, prop, value) {\r\n return !this.EQUALS(obj, prop, value);\r\n },\r\n CONTAINS(obj, prop, value) {\r\n return this.DEFINED(obj, prop) ? includes(obj[prop], value) : false;\r\n },\r\n OBJ_CONTAINS(obj, value) {\r\n return includes(obj, value);\r\n },\r\n};\r\n\r\n/**\r\n * Collection of sorting options\r\n */\r\nexport const SORTING_OPTIONS = {\r\n BY_FIELD: (array, field) =>\r\n array.sort((current, next) => {\r\n const CURRENT_VALUE = (!empty(current) && current[field]) || undefined;\r\n const NEXT_VALUE = (!empty(next) && next[field]) || undefined;\r\n return SORT(CURRENT_VALUE, NEXT_VALUE);\r\n }),\r\n BY_FUNC: (array, func) => array.sort(func),\r\n};\r\n\r\n/**\r\n *\r\n * @param {*} array\r\n * @param {*} config.action\r\n * @param {*} config.params\r\n */\r\nexport const processArray = (array, filters = [], sorts = [], status = []) => {\r\n const SYSTEM_STATUS = reverseEntries(statusText);\r\n\r\n const SORTS = sorts.filter(({ action }) => Object.prototype.hasOwnProperty.call(SORTING_OPTIONS, action));\r\n const FILTERS = filters.filter(({ action }) => Object.prototype.hasOwnProperty.call(FILTER_OPTIONS, action));\r\n const STATUS = status.filter((_status) => Object.prototype.hasOwnProperty.call(SYSTEM_STATUS, _status));\r\n if (!empty(FILTERS)) {\r\n FILTERS.forEach(({ action, params: { prop, value } }) => {\r\n array = array.filter((item) => FILTER_OPTIONS[action](item, prop, value));\r\n });\r\n }\r\n if (!empty(STATUS)) {\r\n array = STATUS.map((_status) => array.filter((item) => FILTER_OPTIONS.EQUALS(item, 'statusId', SYSTEM_STATUS[_status]))).flat();\r\n }\r\n\r\n if (!empty(SORTS)) {\r\n SORTS.forEach(({ action, param }) => {\r\n array = SORTING_OPTIONS[action](array, param);\r\n });\r\n }\r\n return array;\r\n};\r\n","import { denormalize } from 'normalizr';\r\nimport { createSelector } from 'reselect';\r\nimport { loopObject } from '@/lodash/loopObject';\r\nimport { isArray } from '@/lodash/isArray';\r\nimport { processArray } from '../../utils/filter/filtering-lib';\r\nimport { empty, objectPath } from '../../utils/bdx-lodash-lite';\r\nimport { modelRequestSchema } from '../../app.entities';\r\nimport { orderBy } from '@/lodash/orderBy';\r\n\r\n/**\r\n * Basic Selector\r\n * @param {*} state current state\r\n */\r\nexport const entitiesSelector = (state) => state && state.app.entities;\r\n\r\n/**\r\n * This selector takes the current state and the name of a model\r\n * to extract it from the entities state\r\n * @param {*} state current state\r\n * @param {*} model entitie to be extracted\r\n */\r\nexport const entitySelector = (state, model) => Object.values(entitiesSelector(state)[model] || {}) || [];\r\n\r\n/**\r\n * Returns a denormalized version of the entity\r\n * @param {*} state\r\n * @param {*} selector\r\n * @param {*} schema\r\n */\r\nexport const entityById = (state, selector, schema) => selector && schemaDenormalizer(selector.constructor === Function ? selector : () => selector, schema)(state);\r\n\r\n/**\r\n * Returns the raw or still normalized version of the entity\r\n * @param {*} state\r\n * @param {*} selector\r\n * @param {*} schema\r\n */\r\nexport const entityRawById = (state, id, model) => state?.app?.entities?.[model]?.[id];\r\n\r\n/**\r\n * Factory for schema denormalizers\r\n * @param {*} entities app entities\r\n * @param {*} models models to denormalize over modelRequest schema\r\n * @param {*} def default value\r\n */\r\nexport const schemaDenormalizer = (modelsSelector, schema = modelRequestSchema, def = undefined) =>\r\n createSelector(entitiesSelector, modelsSelector, (entities, models) => {\r\n if (!empty(entities)) {\r\n try {\r\n const denormalized = denormalize(models, schema, entities, def);\r\n if (!empty(denormalized)) {\r\n return denormalized;\r\n }\r\n } catch {\r\n return def;\r\n }\r\n return def;\r\n }\r\n });\r\n\r\n/**\r\n * This selector is incharged to search on a certain list of models by a term\r\n * @param {*} state current state\r\n * @param {*} term search term\r\n * @param {*} models models to be searched\r\n */\r\nexport const modelsSelector = (state, models, { filters, sorts, status }) =>\r\n models.map(({ schema }) => {\r\n // get the respective entities\r\n const MODEL_ENTITIES = entitySelector(state, schema.key);\r\n // filter the optained entities\r\n return { [schema.key]: processArray(MODEL_ENTITIES, filters, sorts, status) };\r\n });\r\n\r\nexport const modelById = (state, id, { schema, describerFields }) => {\r\n // get the respective entities\r\n const MODEL_ENTITIES = entitySelector(state, schema.key);\r\n // get filter the entity\r\n const ENTITIES = processArray(MODEL_ENTITIES, [\r\n {\r\n action: 'EQUALS',\r\n params: { value: id, prop: describerFields.id },\r\n },\r\n ]);\r\n return !empty(ENTITIES) ? ENTITIES[0] : {};\r\n};\r\n\r\nexport const selectorByFlags = (state, selector, $flags, ...params) => {\r\n if (selector) {\r\n /**\r\n * Executed the provided selector with the additional list of params\r\n */\r\n let values = selector(state, ...params);\r\n\r\n /**\r\n * If the selector returns an array\r\n */\r\n if (isArray(values)) {\r\n /**\r\n * Loop through each value on the flags\r\n */\r\n loopObject($flags, (value, key) => {\r\n /**\r\n * And filter the values based on the $flags object\r\n */\r\n values = values.filter((item) => item.$flags && item.$flags[key] === value);\r\n });\r\n }\r\n\r\n return values;\r\n }\r\n};\r\n\r\nexport const selectorWithSorts = (state, selector, { fields = [], orders = [], key }, ...params) => {\r\n if (selector) {\r\n /**\r\n * Executed the provided selector with the additional list of params\r\n */\r\n let values = selector(state, ...params);\r\n\r\n /**\r\n * If the selector returns an array\r\n */\r\n if (isArray(values)) {\r\n let entities = [];\r\n if (key && objectPath(values).has(key)) {\r\n entities = objectPath(values).get(key);\r\n } else {\r\n entities = values;\r\n }\r\n /**\r\n * Loop through each value on the flags\r\n */\r\n entities = orderBy(entities, fields, orders);\r\n\r\n if (key && objectPath(values).has(key)) {\r\n objectPath(values).set(key, entities);\r\n } else {\r\n values = entities;\r\n }\r\n }\r\n\r\n return values;\r\n }\r\n};\r\n","import { createSelector } from 'reselect';\r\nimport { userSchema, builderSchema } from '../../../app.entities';\r\nimport { schemaDenormalizer, entityById } from '../../../@redux/models/selectors';\r\nimport { processArray, SORT } from '../../../utils/filter/filtering-lib';\r\nimport { empty } from '@/lodash/';\r\n\r\n// Selector to check if the Current user Is Authenticated (user obg exists in the state )\r\nexport const getCurrentUser = (state) => state.app.entities?.users?.[state.app.authentication?.user];\r\n\r\nconst getPermissions = (state) => (state.app.authentication.userPermissions ? state.app.authentication.userPermissions.map((id) => state.app.entities.userPermissions[id]) : []);\r\n\r\nconst getServices = (state) => (state.app.authentication.services ? state.app.authentication.services.map((id) => state.app.entities.services[id]) : []);\r\n\r\nconst getContacts = (state) => (state.app.entities.users[state.app.authentication.user].contacts ? state.app.entities.users[state.app.authentication.user].contacts : null);\r\n\r\nconst getProducts = (user) => user?.portalProducts || {};\r\n\r\nconst getActivities = (state) => state.app?.entities?.users?.[state.app?.authentication?.user]?.activities || null;\r\n\r\nexport const isCorpLevel = (state) => {\r\n const { builderId, corpLevelFlag = false } = getCurrentUser(state) || {};\r\n return !builderId || corpLevelFlag;\r\n};\r\n/**\r\n * Checks if the currently logged-in user is a \"single division user\".\r\n * A \"single division user\" means the user's associated builder has only one division assignated.\r\n * This is strictly measured by quantity of divisions, and not by active/inactive builders.\r\n */\r\nexport const isSingleDivisionUser = (state) => {\r\n const { builders = [] } = getCurrentUser(state) || {};\r\n const { divisions = [] } = entityById(state, builders && builders[0], builderSchema) || {};\r\n return divisions.length === 1;\r\n};\r\n\r\n/**\r\n * Checks if the currently logged-in user is a \"single division user\".\r\n * A \"single division user\" means the user's associated builder has only one division assignated.\r\n * This is strictly measured by quantity of divisions, and not by active/inactive builders.\r\n */\r\nexport const isInternalBuilder = (state) => {\r\n const currentUser = getCurrentUser(state);\r\n return empty(currentUser?.builders?.[0]);\r\n};\r\n\r\n// Create a Memorized Selector with Reselect\r\nexport const getUserPermissions = createSelector(getPermissions, (userPermissions) => (!userPermissions ? [] : userPermissions.map((p) => ({ subject: p.name, action: permissionValueToActions(p.accessCode) }))));\r\n\r\nexport const getUserServices = createSelector(getServices, (services) => (!services ? [] : services.map((p) => ({ subject: p.name, action: serviceValueToActions(p.value) }))));\r\n\r\nexport const getUserActivities = createSelector(getActivities, (userActivities) => (!userActivities ? [] : userActivities.map(({ activityDate, activityTypeCode, id, userId }) => ({ activityDate, activityTypeCode, id, userId }))));\r\n\r\n/* CONTACTS */\r\n\r\n// Create a Memorized Selector with Reselect, return contacts grouped by product Name in the form { product1 : [{contact}, {contact}], product2 : [{contact}, {contact}]}\r\nconst __existingContactGroups = [];\r\nexport const getUserContacts = createSelector(getContacts, (contacts) =>\r\n !contacts\r\n ? { '': [{}] }\r\n : sortCategories(\r\n sortContactsPerRole(\r\n contacts.reduce((obj, item) => {\r\n const name = item.productGroupName && item.productGroupName !== '' ? item.productGroupName.trim() : 'N/A';\r\n obj[name] = obj[name] || [];\r\n\r\n const groupAlreadyExists = __existingContactGroups.some((g) => g.toLowerCase() === name.toLowerCase());\r\n if (!groupAlreadyExists) {\r\n __existingContactGroups.push(name);\r\n }\r\n\r\n if (obj[name] && !obj[name].some((c) => c.contact === item.contact)) {\r\n obj[groupAlreadyExists ? __existingContactGroups[__existingContactGroups.findIndex((g) => g.toLowerCase() === name.toLowerCase())] : name].push(item);\r\n }\r\n\r\n return obj;\r\n }, {})\r\n )\r\n )\r\n);\r\n\r\nconst sortCategories = (groups) => {\r\n const newObj = [];\r\n Object.keys(groups).forEach((group) => {\r\n switch (group.toLowerCase()) {\r\n case 'listings':\r\n newObj.push({ category: group, displayOrder: 1, content: groups[group] });\r\n break;\r\n case 'display advertising':\r\n newObj.push({ category: group, displayOrder: 2, content: groups[group] });\r\n break;\r\n case 'email marketing':\r\n newObj.push({ category: group, displayOrder: 3, content: groups[group] });\r\n break;\r\n case 'graphics production':\r\n newObj.push({ category: group, displayOrder: 4, content: groups[group] });\r\n break;\r\n case 'video':\r\n case 'video and nhs tv production':\r\n newObj.push({ category: 'Video', displayOrder: 5, content: groups[group] });\r\n break;\r\n case 'website solutions':\r\n newObj.push({ category: group, displayOrder: 6, content: groups[group] });\r\n break;\r\n case 'sales center solutions':\r\n newObj.push({ category: group, displayOrder: 7, content: groups[group] });\r\n break;\r\n case 'design center solutions':\r\n newObj.push({ category: group, displayOrder: 8, content: groups[group] });\r\n break;\r\n default:\r\n newObj.push({ category: group, displayOrder: 9, content: groups[group] });\r\n }\r\n });\r\n return newObj.sort((a, b) => {\r\n return a.displayOrder - b.displayOrder;\r\n });\r\n};\r\n\r\nconst sortContactsPerRole = (groups) => {\r\n Object.keys(groups).forEach((group) => {\r\n let contacts = groups[group];\r\n contacts.forEach((contact) => {\r\n switch (contact.type.toLowerCase()) {\r\n case 'account manager':\r\n case 'bdx connect manager':\r\n case 'bdx connect director':\r\n case 'producer':\r\n case 'sales center support':\r\n case 'custom graphic sr. manager':\r\n case 'custom graphics sr. manager':\r\n contact.displayOrder = 1;\r\n break;\r\n case 'standard production director':\r\n contact.displayOrder = 2;\r\n break;\r\n case 'digital marketing consultant':\r\n contact.displayOrder = 3;\r\n break;\r\n default:\r\n contact.displayOrder = 4;\r\n }\r\n });\r\n contacts = processArray(\r\n contacts,\r\n [],\r\n [\r\n {\r\n action: 'BY_FUNC',\r\n param: (current, next) => {\r\n return SORT(current.displayOrder, next.displayOrder);\r\n },\r\n },\r\n ]\r\n );\r\n });\r\n return groups;\r\n};\r\n\r\n/* CONTACTS */\r\n\r\nexport const getUserProducts = createSelector(getProducts, (products) =>\r\n !products\r\n ? { '': [{}] }\r\n : sortCategories(\r\n products.reduce((obj, item) => {\r\n const group = item.groupName && item.groupName !== '' ? item.groupName.trim() : 'N/A';\r\n obj[group] = obj[group] || [];\r\n\r\n if (obj[group] && !obj[group].some((c) => c.productName === item.productName)) {\r\n obj[group].push(item);\r\n }\r\n\r\n return obj;\r\n }, {})\r\n )\r\n);\r\n\r\n// Convert the hexadecimal values of the permission code access code to the representation values into actions (read, write, block)\r\n// accessCode meaning: 1: nothing, 2: read, 4: write, 8: lock, 14: full\r\n// For the value 14 it refers to the sum of 2 (read) + 4 (write) + 8 (block)\r\nconst permissionValueToActions = (value) => {\r\n const actions = [];\r\n\r\n if (value === 1) {\r\n actions.push('nothing');\r\n }\r\n if (value === 2 || value === 4 || value === 14) {\r\n actions.push('read');\r\n }\r\n if (value === 4 || value === 14) {\r\n actions.push('write');\r\n }\r\n if (value === 8 || value === 14) {\r\n actions.push('lock');\r\n }\r\n return actions;\r\n};\r\n\r\nconst serviceValueToActions = (value) => {\r\n const actions = [];\r\n\r\n if (value === '0' || value === '5') {\r\n actions.push('inactive');\r\n }\r\n if (value === '1' || value === '2' || value === '3' || value === '4') {\r\n actions.push('active');\r\n }\r\n return actions;\r\n};\r\n\r\n/**\r\n * Navigation UserContext Selectors\r\n */\r\nexport const userDenormalizeSelector = schemaDenormalizer((state) => state.app.authentication && state.app.authentication.user, userSchema, {});\r\n\r\nexport const userContextPartnerSelector = createSelector(userDenormalizeSelector, (user) => user && user.partner);\r\n\r\nexport const userContextBuilderSelector = createSelector(userDenormalizeSelector, (user) => user && user.builders && user.builders[0]);\r\n\r\nexport const userContextDivisionSelector = createSelector(userContextBuilderSelector, (builder) => builder && builder.divisions);\r\n\r\nexport const userContextCommunitiesSelector = createSelector(userDenormalizeSelector, (user) => user && user.communities);\r\n\r\nexport const userContextSelector = createSelector(userDenormalizeSelector, (user) => user);\r\n\r\nexport const userDivisionIdsSelector = (state) => {\r\n const divisionContext = userContextDivisionSelector(state);\r\n const isExternalUser = userContextBuilderSelector(state);\r\n return isExternalUser ? divisionContext?.map(({ builderId }) => builderId) : undefined;\r\n};\r\n","/*\r\nThis file contains string literals for your action types.\r\nThis provides an easy reference for the actions available.\r\nThese strings are exported as an object literal which can then be imported\r\ninto your reducers and action creators instead of hard-coding them.\r\nAlthough maintaining a separate file containing just your action\r\ntypes is optional, it is highly recommended.\r\n*/\r\n\r\n// ACTION TYPES\r\nexport const LOGIN_REQUEST = 'bdxlive/auth/login_request';\r\nexport const LOGIN_SUCCESS = 'bdxlive/auth/login_success';\r\nexport const LOGIN_FAIL = 'bdxlive/auth/login_fail';\r\nexport const LOGOUT = 'bdxlive/auth/logout';\r\nexport const REVALIDATE = 'bdxlive/auth/revalidate';\r\n\r\nexport const PERMISSION_REQUEST = 'bdxlive/auth/permissions_request';\r\nexport const PERMISSION_SUCCESS = 'bdxlive/auth/permissions_success';\r\nexport const PERMISSION_FAIL = 'bdxlive/auth/permissions_fail';\r\n\r\nexport const SERVICES_REQUEST = 'bdxlive/auth/services_request';\r\nexport const SERVICES_SUCCESS = 'bdxlive/auth/services_success';\r\nexport const SERVICES_FAIL = 'bdxlive/auth/services_fail';\r\n\r\nexport const USER_ACTIVITY_REQUEST = 'bdxlive/auth/user_activity_request';\r\nexport const USER_ACTIVITY_SUCCESS = 'bdxlive/auth/user_activity_success';\r\nexport const USER_ACTIVITY_FAIL = 'bdxlive/auth/user_activity_fail';\r\n\r\nexport const RECOVER_PASSWORD_REQUEST = 'bdxlive/auth/recover_password_request';\r\nexport const RECOVER_PASSWORD_SUCCESS = 'bdxlive/auth/recover_password_success';\r\nexport const RECOVER_PASSWORD_FAIL = 'bdxlive/auth/recover_password_fail';\r\n\r\nexport const RECOVER_USERNAME_REQUEST = 'bdxlive/auth/recover_username_request';\r\nexport const RECOVER_USERNAME_SUCCESS = 'bdxlive/auth/recover_username_success';\r\nexport const RECOVER_USERNAME_FAIL = 'bdxlive/auth/recover_username_fail';\r\n","/**\r\n * Custom base class to handle App Errors\r\n * @class\r\n * @property {string} appMessage - Friendly error message to display in the UI\r\n * */\r\nexport class BdxError extends Error {\r\n get appMessage() {\r\n return this._appMessage;\r\n }\r\n\r\n set appMessage(value) {\r\n this._appMessage = value;\r\n }\r\n}\r\n","import { BdxError } from './BdxError';\r\n\r\n/**\r\n * Custom Error class to handling Authentication errors\r\n * * @class\r\n */\r\nexport class AuthenticationError extends BdxError {}\r\n","import { BdxError } from './BdxError';\r\n\r\n/**\r\n * Custom Error class to handling Invalid entities in the app\r\n * * @class\r\n */\r\nexport class InvalidEntityError extends BdxError {}\r\n","import { BdxError } from './BdxError';\r\n\r\n/**\r\n * Custom Error class to handling Network connection errors\r\n * @class\r\n */\r\nexport class NetworkError extends BdxError {}\r\n","import { BdxError } from './BdxError';\r\n\r\n/**\r\n * Custom Error class to handling errors from the Api Server\r\n * * @class\r\n * @property {string} serverName Information about the server name that origins the error\r\n * @property {string} serverStack Information about the server error stack trace\r\n */\r\nexport class ServerError extends BdxError {\r\n get serverName() {\r\n return this._serverName;\r\n }\r\n\r\n set serverName(value) {\r\n this._serverName = value;\r\n }\r\n\r\n get serverStack() {\r\n return this.formatServerStackTrace();\r\n }\r\n}\r\n","import { AuthenticationError, ServerError, NetworkError } from './types';\r\nimport { logExtraInfo } from './logging';\r\nimport { empty } from '../bdx-lodash-lite';\r\n\r\n// List of errors that will not be captured by Sentry.\r\nconst errorblackList = [AuthenticationError];\r\n/**\r\n * Convert generic catched errors in the App ajax calls to a typed Error with extra information\r\n * @param {object} Original Error from the catched exception when the API is called\r\n * @module bdx-errors\r\n */\r\nexport function convertToCustomError(error) {\r\n const handled = empty(error.stackTrace);\r\n let appMessage = 'Server Error, please try Again.';\r\n let customError = error;\r\n let serverMsg = error.message || appMessage;\r\n logExtraInfo(error);\r\n\r\n if (error?.response?.data?.StatusCode === 'Error') {\r\n serverMsg = error.response.data.LastErrorMessage;\r\n const newError = new Error(serverMsg);\r\n Object.assign(newError, error);\r\n error = newError;\r\n }\r\n\r\n // Api Server Errors\r\n if (error.response) {\r\n // Authentication error messages (error 401)\r\n if (error.response.status === 401) {\r\n if (serverMsg.includes('Password')) {\r\n appMessage = 'Login failed. Incorrect password';\r\n } else if (serverMsg.includes('Username')) {\r\n appMessage = 'Login failed. Incorrect username';\r\n } else if (serverMsg.includes('Corporation')) {\r\n appMessage = 'Builder is inactive';\r\n } else {\r\n appMessage = `Login failed; ${serverMsg.replace('Authentication exception: ', '')}`;\r\n }\r\n\r\n customError = new AuthenticationError(error);\r\n customError.appMessage = appMessage;\r\n } else if (error.response.status === 400) {\r\n // Mutations errors\r\n appMessage = 'Application Connection Error. Sorry for the incovenience. Please try again.';\r\n customError = new ServerError(error);\r\n customError.appMessage = appMessage;\r\n } else if (error.response.data.StatusCode === 'Error') {\r\n // General Graphql errors\r\n customError = new ServerError(error);\r\n customError.appMessage = 'Server error, try again';\r\n customError.errorMessage = error.message;\r\n }\r\n // Timeout error.\r\n } else if (serverMsg.includes('timeout')) {\r\n customError = new NetworkError(error);\r\n customError.appMessage = 'Server timeout error.';\r\n } else {\r\n // Connection to the server error.\r\n customError = new NetworkError(error);\r\n customError.message = 'Application Connection Error. Sorry for the incovenience. Please try again.';\r\n customError.appMessage = 'Application Connection Error. Sorry for the incovenience. Please try again.';\r\n }\r\n customError.handled = handled;\r\n customError.config = error.config;\r\n return customError;\r\n}\r\n// Verify the error entered in a blacklist to register only those that are of greater importance or priority.\r\nexport const logErrorType = (error) => errorblackList.some((type) => error instanceof type);\r\n","/* eslint-disable no-console */\r\n// Api Client based on Axios, it is a wrapper that exposes common\r\n// http methods as functions with global configuration for our WebApi also handles\r\n// jwt authentication based in the generated token for the ajax calls and the refresh logic.\r\nimport axios from 'axios';\r\n// import { jwtDecode } from '../security/jwt';\r\nimport { config } from '../../@redux/config/selectors';\r\nimport { convertToCustomError } from '../error-handling/helpers';\r\nimport { store } from '@/app/app.store';\r\nimport { requestLogout } from '@/modules/auth/@redux/actions';\r\n\r\n// Validate if the token is still valid, if it exists or is not expired\r\nexport const isInValidToken = () => {\r\n const initialJwtTime = new Date(localStorage.getItem('jwtInitialTime'));\r\n const minsElapsed = Math.floor((new Date() - initialJwtTime) / 60000);\r\n\r\n return minsElapsed >= Number(localStorage.getItem('jwtTokenMinsExp'));\r\n};\r\n\r\n// Funtion to be executed\r\nexport const refreshToken = () =>\r\n new Promise((resolve) => {\r\n const apiBaseUrl = config('ApiBaseUrl');\r\n const url = `${apiBaseUrl}Bdx/refreshtoken`;\r\n\r\n // axios.defaults.headers.common.Authorization = localStorage.getItem('jwtToken') || token;\r\n axios.interceptors.response.use(undefined, function axiosRetryInterceptor(err) {\r\n // eslint-disable-next-line no-shadow\r\n const { config } = err;\r\n // If config does not exist or the retry option is not set, reject\r\n if (!config || !config.retry) return Promise.reject(err);\r\n\r\n config.__retryCount = config.__retryCount || 0; // Set the variable for keeping track of the retry count\r\n\r\n // Check if we've maxed out the total number of retries\r\n if (config.__retryCount >= config.retry) {\r\n return Promise.reject(err);\r\n }\r\n\r\n config.__retryCount += 1; // Increase the retry count\r\n\r\n // Create new promise to handle exponential backoff\r\n // eslint-disable-next-line no-shadow\r\n const backoff = new Promise(function (resolve) {\r\n setTimeout(function () {\r\n resolve();\r\n }, config.retryDelay || 1);\r\n });\r\n\r\n // Return the promise in which recalls axios to retry the request\r\n return backoff.then(function () {\r\n return axios(config);\r\n });\r\n });\r\n\r\n axios\r\n .post(url, null, { retry: 3, retryDelay: 3000, withCredentials: true, headers: { 'Content-Type': 'application/json;charset=UTF-8' } })\r\n .then((response) => {\r\n resolve(response.data);\r\n })\r\n .catch((error) => {\r\n console.error('Unable to refresh token, to prevent this error use \"Keep me signed in\"', error);\r\n store.dispatch(requestLogout());\r\n throw error;\r\n });\r\n });\r\n\r\n// Create a new Axios client instance\r\nconst getClient = (localApi = false, baseUrl = null, formData = false) => {\r\n // you can use 3 options for the url, a custom one when baseUrl is defined, or if not specified\r\n // the ApiBaseUrl config key if localApi specified loca app api would be used\r\n\r\n const appApiBaseUrl = config('AppApiBaseUrl');\r\n const apiBaseUrl = config('ApiBaseUrl');\r\n\r\n // const appApiBaseUrl = 'http://localhost:40233/api';\r\n const options = {\r\n baseURL: baseUrl || (localApi ? appApiBaseUrl : `${apiBaseUrl}Bdx`),\r\n timeout: config('ApiTimeout'),\r\n withCredentials: true,\r\n headers: { 'Content-Type': 'application/json;charset=UTF-8', crossorigin: 'true' },\r\n };\r\n\r\n // if the token was already generated use it in the header\r\n // const token = localStorage.getItem('jwtToken');\r\n\r\n // if (token) {\r\n // options.headers.Authorization = token; // TODO: Change it to be a a safe cookie\r\n // }\r\n\r\n // convert the returned data in to a valid json representation (if it is not an external url)\r\n if (baseUrl === null && !formData) {\r\n options.transformRequest = (data) => JSON.stringify(data);\r\n }\r\n // more configuration like interceptors here\r\n\r\n const client = axios.create(options);\r\n\r\n // Refresh JWT Token logic, if token expired save the original request,\r\n // execute the refresh function and then with the new token execute it again\r\n if (baseUrl === null) {\r\n client.interceptors.request.use(\r\n (context) => {\r\n const originalRequest = context;\r\n // exclude from refresh token calls to external sources, local app api and when authenticating\r\n const useRefreshToken = context?.baseURL != null && !context?.url?.includes('Authentication') && !context?.baseURL?.includes('/api');\r\n if (useRefreshToken && isInValidToken()) {\r\n return refreshToken()\r\n .then(() => {\r\n localStorage.setItem('jwtInitialTime', new Date());\r\n // originalRequest.headers.Authorization = `${response.Result.data}`;\r\n return Promise.resolve(originalRequest);\r\n })\r\n .catch(() => {\r\n // Redirect to login when token refresh fail? check if here or ni the saga that calls it\r\n });\r\n }\r\n return context;\r\n },\r\n (err) => Promise.reject(err)\r\n );\r\n }\r\n\r\n return client;\r\n};\r\n\r\nconst handleErrors = (error) => {\r\n // Log extra information in dev enviroment to the console\r\n if (import.meta.env.DEV) {\r\n if (error.response) {\r\n // The request was made and the server responded with a status code\r\n // that falls out of the range of 2xx\r\n console.log(error.response.data);\r\n console.log(error.response.status);\r\n console.log(error.response.headers);\r\n } else if (error.request) {\r\n console.log(error.request);\r\n }\r\n }\r\n const startStack = new Error().stack;\r\n error.returnedError = error.message;\r\n error.stack = `${error.stack}\\n${startStack.substring(startStack.indexOf('\\n') + 1)}`;\r\n const returnedError = Object.assign(error.stack, error);\r\n // TODO LOGIN ERRORS MSGS WITH EXTRA INFO FROM THE RESPONSE\r\n throw convertToCustomError(returnedError);\r\n};\r\n\r\nconst client = (localApi, baseUrl = null) => ({\r\n // Provide request methods with the default base_url\r\n get(url, settings = {}) {\r\n return getClient(localApi, baseUrl)\r\n .get(url, settings)\r\n .then((response) => Promise.resolve(response))\r\n .catch((error) => handleErrors(error));\r\n },\r\n\r\n delete(url, settings = {}) {\r\n return getClient(localApi, baseUrl)\r\n .delete(url, settings)\r\n .then((response) => Promise.resolve(response))\r\n .catch((error) => handleErrors(error));\r\n },\r\n\r\n head(url, settings = {}) {\r\n return getClient(localApi, baseUrl)\r\n .head(url, settings)\r\n .then((response) => Promise.resolve(response))\r\n .catch((error) => handleErrors(error));\r\n },\r\n\r\n options(url, settings = {}) {\r\n return getClient(localApi, baseUrl)\r\n .options(url, settings)\r\n .then((response) => Promise.resolve(response))\r\n .catch((error) => handleErrors(error));\r\n },\r\n\r\n /**\r\n *\r\n * @param {*} url\r\n * @param {*} data\r\n * @param {import('axios').AxiosRequestConfig} settings\r\n * @param {*} formData\r\n * @returns\r\n */\r\n post(url, data = {}, settings = {}, formData) {\r\n return getClient(localApi, baseUrl, formData)\r\n .post(url, data, settings)\r\n .then((response) => Promise.resolve(response))\r\n .catch((error) => handleErrors(error));\r\n },\r\n\r\n put(url, data = {}, settings = {}) {\r\n return getClient(localApi)\r\n .put(url, data, settings)\r\n .then((response) => Promise.resolve(response))\r\n .catch((error) => handleErrors(error));\r\n },\r\n\r\n patch(url, data = {}, settings = {}) {\r\n return getClient(localApi)\r\n .patch(url, data, settings)\r\n .then((response) => Promise.resolve(response))\r\n .catch((error) => handleErrors(error));\r\n },\r\n});\r\n\r\n// Import appApiClient named import when you need to call the local app Api\r\nexport const appApiClient = client(true);\r\n// Import axiosClient named import when you need to call a external Url\r\nexport const axiosClient = (url) => client(false, url);\r\n// Import the default import when you need to call the BdxLive Api\r\nexport default client(false);\r\n","// All the Ajax calls for Auth module are handled here\r\n\r\nimport apiClient from '../../../utils/api/api';\r\n\r\n// AUTH API End points\r\nconst API_LOGIN = '/Authentication?useCookie=True';\r\nconst API_RECOVER_PASSWORD = '/PasswordRecovery';\r\nconst API_USERNAME_PASSWORD = '/UserNameRecovery';\r\nconst API_REFRESH = '/refreshToken';\r\n\r\n// GET USER PERMISSIONS GRAPHQL QUERY\r\nconst API_GET_USER_INFO_QUERY = (userId) => `query {\r\n users(userId:${userId}) {\r\n userId\r\n userName\r\n firstName\r\n lastName\r\n email\r\n roleGroup\r\n roleName\r\n roleId\r\n dateCreated\r\n dateLastChanged\r\n corpLevelFlag\r\n partner{\r\n partnerId\r\n partnerName\r\n }\r\n builderId\r\n builders {\r\n builderId\r\n builderName\r\n dateCreated\r\n dateLastChanged\r\n statusId\r\n planLibraryType\r\n divisionsCount\r\n diagnostic\r\n publishReviews\r\n autoFeedFlag\r\n soldDataFlag\r\n recommendedLeadsSign\r\n displayChannelSelection {\r\n displayOnWebArch\r\n }\r\n partner{\r\n partnerName\r\n }\r\n builderLogo\r\n divisions {\r\n builderId\r\n builderName\r\n statusId\r\n orgTypeCode\r\n partner{\r\n partnerId\r\n }\r\n displayChannelSelection {\r\n displayOnWebArch\r\n }\r\n }\r\n }\r\n communities {\r\n id\r\n name\r\n status\r\n specs(sortBy: [{order: Asc, field: Number}], status: [Active, Inactive]) {\r\n id\r\n number\r\n }\r\n plans(sortBy : [{order: Asc, field: Name}], status: [Active, Inactive]) {\r\n id\r\n name\r\n }\r\n }\r\n userPermissions {\r\n accessCode\r\n displayName\r\n groupId\r\n id\r\n isActive\r\n name\r\n }\r\n services {\r\n id\r\n name\r\n value\r\n }\r\n activities(types: [URL, RLS, RLP]) {\r\n id\r\n activityDate\r\n activityTypeCode\r\n }\r\n logInActivities: activities (types: [IN], top: 2, sortBy: { field: ActivityDate, order: Desc }) {\r\n id\r\n activityDate\r\n activityTypeCode\r\n }\r\n contacts {\r\n contact\r\n imagePath\r\n primaryEmail\r\n primaryPhone\r\n productGroupName\r\n productName\r\n type\r\n }\r\n dDRMonthlyApproval {\r\n period\r\n }\r\n }\r\n}`;\r\n\r\n// GET USER CONTACTS GRAPHQL QUERY\r\nconst API_GET_USER_CONTACTS_QUERY = (userId) => `query {\r\n user(userId:${userId}){\r\n contacts {\r\n contact\r\n imagePath\r\n primaryEmail\r\n primaryPhone\r\n productGroupName\r\n productName\r\n type\r\n }\r\n }\r\n}`;\r\n\r\n// Mutation to change the status of the activity flag\r\nexport const API_INSERT_USER_ACTIVITY = (userId, typeCode) => `\r\nmutation {\r\n insertUserActivity(\r\n userId: ${userId},\r\n activityTypeCode: ${typeCode}\r\n ) {\r\n id\r\n userId\r\n activityTypeCode\r\n activityDate\r\n}\r\n}`;\r\n\r\nexport const API_GET_USER_ACTIVITY = (userId) => `\r\nquery {\r\n users(userId:${userId}){\r\n userId\r\n activities(types: [IN], top: 2) {\r\n id\r\n activityDate\r\n activityTypeCode\r\n }\r\n }\r\n}`;\r\n\r\nexport const requestLogin = (data) => apiClient.post(API_LOGIN, data);\r\n\r\nexport const requestRefresh = (userId) => apiClient.post(API_REFRESH, { userId });\r\n\r\nexport const requestUserInformation = (userId) => apiClient.post(null, { query: API_GET_USER_INFO_QUERY(userId) });\r\n\r\nexport const requestUserContacts = (userId) => apiClient.post(null, { query: API_GET_USER_CONTACTS_QUERY(userId) });\r\n\r\nexport const requestUserActivity = (userId) => apiClient.post(null, { query: API_GET_USER_ACTIVITY(userId) });\r\n\r\nexport const insertActivityMutation = (userId, typeCode) => apiClient.post(null, { query: API_INSERT_USER_ACTIVITY(userId, typeCode) });\r\n\r\nexport const requestRecoverPassword = (data) => apiClient.post(API_RECOVER_PASSWORD, data);\r\n\r\nexport const requestRecoverUsername = (data) => apiClient.post(API_USERNAME_PASSWORD, data);\r\n","/*\r\nThis file contains string literals for your action types.\r\nThis provides an easy reference for the actions available.\r\nThese strings are exported as an object literal which can then be imported\r\ninto your reducers and action creators instead of hard-coding them.\r\nAlthough maintaining a separate file containing just your action\r\ntypes is optional, it is highly recommended.\r\n*/\r\n\r\n// ACTION TYPES\r\nexport const USER_DETAIL_REQUEST = 'bdxlive/user_detail/user_info_request';\r\nexport const USER_DETAIL_SUCCESS = 'bdxlive/user_detail/user_info_success';\r\nexport const USER_DETAIL_FAIL = 'bdxlive/user_detail/user_info_fail';\r\n\r\nexport const USER_PERMISSIONS_REQUEST = 'bdxlive/user_detail/user_permissions_request';\r\nexport const USER_PERMISSIONS_SUCCESS = 'bdxlive/user_detail/user_permissions_success';\r\nexport const USER_PERMISSIONS_FAIL = 'bdxlive/user_detail/user_permissions_fail';\r\n\r\nexport const USER_DETAIL_SAVE_REQUEST = 'bdxlive/user_detail/save_request';\r\nexport const USER_DETAIL_SAVE_SUCCESS = 'bdxlive/user_detail/save_success';\r\nexport const USER_DETAIL_SAVE_FAIL = 'bdxlive/user_detail/save_fail';\r\n\r\nexport const USER_ROLES_REQUEST = 'bdxlive/user_detail/user_roles_request';\r\nexport const USER_ROLES_SUCCESS = 'bdxlive/user_detail/user_roles_success';\r\nexport const USER_ROLES_FAIL = 'bdxlive/user_detail/user_roles_fail';\r\n\r\nexport const UPDATE_USER_SERVICE_REQUEST = 'bdxlive/entities/user/update_user_service_request';\r\nexport const UPDATE_USER_SERVICE_SUCCESS = 'bdxlive/entities/user/update_user_service_success';\r\nexport const UPDATE_USER_SERVICE_FAIL = 'bdxlive/entities/user/update_user_service_fail';\r\n","// All the Ajax calls for Auth module are handled here\r\n\r\nimport { empty } from '@/lodash/';\r\nimport apiClient from '../../../utils/api/api';\r\nimport { encryptAES } from '@/utils/bdx-lodash-lite/encryption';\r\n\r\nconst API_GET_USER_FIELDS = `\r\n userId\r\n userName\r\n firstName\r\n lastName\r\n email\r\n roleGroup\r\n roleName\r\n roleId\r\n status\r\n builderId\r\n corpLevelFlag\r\n phone\r\n dateCreated\r\n dateLastChanged \r\n partner{\r\n partnerId\r\n partnerName\r\n }\r\n builders {\r\n builderId\r\n builderName\r\n orgTypeCode\r\n autoFeedFlag\r\n divisionsCount\r\n displayChannelSelection {\r\n displayOnWebArch\r\n }\r\n divisions(top: 500, status: [Approved, Inactive, Submitted]) {\r\n builderId\r\n builderName\r\n hqState\r\n parentBuilderId\r\n statusId\r\n }\r\n }\r\n services {\r\n id\r\n name\r\n value\r\n }\r\n userPermissions {\r\n accessCode\r\n displayName\r\n displayOrder\r\n groupId\r\n id\r\n name \r\n }`;\r\n\r\nconst API_GET_USER_BASIC_FIELDS = `\r\n userId\r\n userName\r\n firstName\r\n lastName\r\n email\r\n roleName\r\n services {\r\n name\r\n value\r\n }\r\n `;\r\n\r\n// GET USER PERMISSIONS GRAPHQL QUERY\r\nconst API_GET_USER_INFO_QUERY = (userId) => `query { \r\n users(userId:${userId}) {\r\n ${API_GET_USER_FIELDS}\r\n }\r\n}`;\r\n\r\nconst API_GET_PERMISSIONS_QUERY = (roleId) => `query { \r\n permissions(roleId: ${roleId}, top: 200) {\r\n id\r\n name \r\n groupId\r\n displayName\r\n displayFlag\r\n displayOrder\r\n accessCode\r\n permissionGroup {\r\n id\r\n name\r\n parentGroupId\r\n displayName\r\n displayOrder\r\n }\r\n }\r\n}`;\r\n\r\nconst API_GET_ROLES_QUERY = () => `\r\nquery {\r\n roleGroups {\r\n id\r\n displayName\r\n displayOrder\r\n isInternal\r\n roles {\r\n id\r\n displayName\r\n displayOrder\r\n }\r\n }\r\n}\r\n`;\r\n\r\n// Update Community Information GraphQL quer\r\nconst API_SAVE_USER_QUERY = ({ userId, userPermissions, services, roleId, status, partner, builders, firstName, lastName, email, phone, password, userDivisions }) => {\r\n return `mutation Update {\r\n updateUser( \r\n id: ${userId}, \r\n ${partner !== undefined ? `, partnerId: ${partner}` : ``}\r\n ${!empty(builders) ? `, builderId: ${builders?.[0]}` : ``}\r\n ${roleId !== undefined ? `, roleId: ${roleId}` : ``}\r\n ${firstName !== undefined ? `, firstName: ${JSON.stringify(firstName.trim())}` : ``}\r\n ${lastName !== undefined ? `, lastName: ${JSON.stringify(lastName.trim())}` : ``}\r\n ${email !== undefined ? `, email: ${JSON.stringify(email.trim())}` : ``}\r\n ${phone !== undefined ? `, phone: \"${phone.trim()}\"` : ``}\r\n ${password !== undefined ? `, password: \"${encryptAES(JSON.stringify(password))}\"` : ``}\r\n ${status !== undefined ? `, status: ${status === 1 ? 'Active' : 'Inactive'}` : ``}\r\n ${userDivisions !== undefined || !empty(builders) ? `builders: [${userDivisions !== undefined && Array.isArray(userDivisions) ? userDivisions.map((division) => division.builderId).join(',') : builders?.[0] || userDivisions}]` : ``}\r\n ${services !== undefined ? `services: [${services.map((service) => servicesMutation(service)).join(',')}]` : ``}\r\n ${userPermissions !== undefined ? `permissions: [${userPermissions.map((permission) => permissionMutation(permission)).join(',')}]` : ``}) \r\n {\r\n ${API_GET_USER_FIELDS}\r\n }\r\n }`.trim();\r\n};\r\n\r\nconst permissionMutation = (permission) => {\r\n if (empty(permission.id) || empty(permission.accessCode) || permission.accessCode === undefined) return '';\r\n return `{ ${permission.id !== undefined ? `id: ${permission.id},` : ''} \r\n ${permission.accessCode !== undefined ? `accessCode: ${permission.accessCode}` : ''}}`;\r\n};\r\n\r\nconst servicesMutation = ({ service, value }) => {\r\n return `{ service: ${service}, value: ${value}}`;\r\n};\r\n\r\n/**\r\n * Sets for a list of user ids the value of a specific service name\r\n */\r\nexport async function getUsersBasicInfoByBuilderId(builderId) {\r\n return apiClient.post(null, {\r\n query: `\r\n query { \r\n users(builderId:${builderId}, statusIds: [1]) {\r\n ${API_GET_USER_BASIC_FIELDS}\r\n }\r\n }\r\n `,\r\n });\r\n}\r\n\r\n/**\r\n * Sets for a list of user ids the value of a specific service name\r\n */\r\nexport const updateUserServiceMutation = ({ userIds, serviceName, value }) => {\r\n const userMutations = userIds.map((userId) => ({ userId, mutation: `updateUser(id: ${userId}, services: [{service: ${serviceName}, value: ${value}}]) { userId, services (paramName: \"${serviceName}\") { id, name, value }}` }));\r\n\r\n return `mutation {\r\n ${userMutations.map(({ userId, mutation }) => `updateUser${userId} : ${mutation}`)}\r\n }`;\r\n};\r\n\r\n/**\r\n * Queries execution to be used from user Sagas\r\n */\r\nexport const requestUserInformation = (userId) => apiClient.post(null, { query: API_GET_USER_INFO_QUERY(userId) });\r\n\r\nexport const requestPermissionsInformation = (roleId) => apiClient.post(null, { query: API_GET_PERMISSIONS_QUERY(roleId) });\r\n\r\nexport const requestRolesInformation = () => apiClient.post(null, { query: API_GET_ROLES_QUERY() });\r\n\r\nexport const updateUserMutation = (user) => API_SAVE_USER_QUERY(user);\r\n","/**\r\n * Entity form initializers\r\n */\r\nexport const EDIT_ENTITY = 'bdxlive/forms/edit-entity'; // Modify and existing entity in the store (can include immediate changes)\r\nexport const DELETE_ENTITY = 'bdxlive/forms/delete-entity'; // Mark an entity from the store to be deleted\r\nexport const CREATE_ENTITY = 'bdxlive/forms/create-entity'; // Create a new entity\r\n\r\n/**\r\n * Entity workflow\r\n */\r\nexport const FORM_CHANGE = 'bdxlive/forms/form-change'; // Trigger changes into the entity\r\nexport const CANCEL_EDIT = 'bdxlive/forms/cancel-edit'; // Cancel the edit of an entity\r\nexport const DISCARD_ALL = 'bdxlive/forms/discard-all'; // Discard all changes on every entity\r\nexport const SAVE_ENTITY = 'bdxlive/forms/save-entity'; // Mark an entity as saved\r\n\r\n/**\r\n * Utils\r\n */\r\nexport const UPDATE_ENTITY = 'bdxlive/forms/update-entity'; // Replace the entire entity being edited\r\n\r\n/**\r\n * Generic Saving\r\n */\r\nexport const FORM_SAVE_REQUEST = 'bdxlive/forms/save_request'; // Trigger changes into the entity\r\nexport const FORM_SAVE_SUCCESS = 'bdxlive/forms/save_success'; // Trigger changes into the entity\r\nexport const FORM_SAVE_FAIL = 'bdxlive/forms/save_fail'; // Trigger changes into the entity\r\n","import { EDIT_ENTITY, UPDATE_ENTITY, SAVE_ENTITY, FORM_CHANGE, CANCEL_EDIT, DISCARD_ALL, CREATE_ENTITY, DELETE_ENTITY, FORM_SAVE_REQUEST, FORM_SAVE_SUCCESS, FORM_SAVE_FAIL } from './types';\r\nimport { modelMutateSchema, modelRequestSchema } from '../../app.entities';\r\n\r\n/**\r\n * Mark an entity to be deleted\r\n */\r\nexport const deleteEntity = (entityId, model, changes) => ({ type: DELETE_ENTITY, data: { entityId, changes }, meta: { model } });\r\n\r\n/**\r\n * Starts an entity mode\r\n * @param { Any } entityId normalized entity\r\n * @param {*} model model in which the entity is considered within\r\n */\r\nexport const createEntity = (entityId, model, context, changes) => ({ type: CREATE_ENTITY, data: { entityId, changes }, meta: { model, context } });\r\n\r\n/**\r\n * Start an entity edition mode\r\n * @param { Any } entityId normalized entity\r\n * @param {*} model model in which the entity is considered within\r\n */\r\nexport const editEntity = (entityId, model, changes) => ({ type: EDIT_ENTITY, data: { entityId, changes }, meta: { model } });\r\n\r\n/**\r\n * Update an entity that is in edition mode\r\n * @param { Any } entityId normalized entity\r\n * @param {*} model model in which the entity is considered within\r\n */\r\nexport const updateEntity = (entityId, entity, model) => ({ type: UPDATE_ENTITY, data: { entityId, entity }, meta: { model } });\r\n\r\n/**\r\n * Stage local form changes into the current entities\r\n * @param {*} id local entity id\r\n * @param {*} model model in which the entity is considered within\r\n * @param {*} changes changes performed on the entity\r\n */\r\nexport const formChange = (entityId, model, changes, exclude) => ({ type: FORM_CHANGE, data: { entityId, changes }, meta: { model, debounce: { time: exclude === 'true' || excludeActionDebounce(changes) ? 0 : 200 } } });\r\n\r\n/**\r\n * Apply the changes from the entity being edited to the entitites section\r\n * @param {*} id local entity id\r\n * @param {*} model model in which the entity is considered within\r\n */\r\nexport const saveEntity = (entityId, model) => ({ type: SAVE_ENTITY, data: { id: entityId }, meta: { model: model.name || model } });\r\n\r\n/**\r\n * Discard local entity on edit mode\r\n * @param {*} id local entity id\r\n * @param {*} model model in which the entity is considered within\r\n */\r\nexport const cancelEdit = (entityId, model) => ({ type: CANCEL_EDIT, data: { id: entityId }, meta: { model } });\r\n\r\n/**\r\n * Discard all entities in edition\r\n */\r\nexport const discardAll = () => ({ type: DISCARD_ALL });\r\n\r\n/**\r\n * Generic functions\r\n */\r\nexport const MutationRequestAction =\r\n (type, mutation, required = [], noEntity) =>\r\n (\r\n entityId,\r\n model,\r\n formData,\r\n loadingByEntity,\r\n meta = {\r\n model,\r\n schema: modelMutateSchema,\r\n required,\r\n formData,\r\n loadingByEntity,\r\n }\r\n ) => ({\r\n type,\r\n mutation,\r\n data: { entityId },\r\n meta,\r\n noEntity,\r\n });\r\n\r\n/**\r\n * Generic functions\r\n */\r\n/**\r\n * Model Mutation Action Creator for Any Entity, it uses the models mutation property to know what is the save query\r\n * @param {*} models models object in the form { modelName1: modelObj1, modelName: modelObj2}\r\n * @param {*} entities object with all the entities data to save in the form {modelName1: { id1: {id1, name...}, id2: {id2, name...}}, modelName2:...}\r\n */\r\nexport const FormMutationRequest = (entities, models, options) => ({ type: FORM_SAVE_REQUEST, entities, meta: { models, options } });\r\nexport const FormMutationSuccess = (entities) => ({ type: FORM_SAVE_SUCCESS, data: { entities }, meta: { schema: modelRequestSchema } });\r\nexport const FormMutationFail = (error, models) => {\r\n const name = models[Object.keys(models)[0]].title || models[Object.keys(models)[0]].model;\r\n return { type: FORM_SAVE_FAIL, error: true, data: { appMessage: convertErrorMessage(error, name, models), errorMessage: error.message } };\r\n};\r\n\r\n/**\r\n *\r\n */\r\nexport const MutationSuccessAction = (type) => (entities, meta, entityId) => ({ type, data: { entities, entityId }, meta });\r\nexport const MutationFailAction =\r\n (type, appMessage = 'An error occurred executing the operation', errorTransformer) =>\r\n (error, entityId, meta) => ({ type, error: true, data: { entityId, appMessage: errorTransformer ? errorTransformer(error.message) : error?.appMessage || appMessage, errorMessage: error.message, handled: error?.handled }, meta });\r\n/**\r\n * Generic Bulk Function\r\n */\r\nexport const MutationModelRequestAction =\r\n (type, mutation, required = []) =>\r\n (model, meta = { schema: modelMutateSchema, required, $bulk: true }, entityId) => ({ type, mutation, data: { model, entityId }, meta });\r\nexport const MutationModelSuccessAction = (type) => (entities, meta, entityId) => ({ type, data: { entities, entityId }, meta });\r\nexport const MutationModelFailAction =\r\n (type, appMessage = 'An error occurred executing the operation', errorTransformer) =>\r\n (error, meta, entityId) => ({ type, error: true, data: { entityId, appMessage: errorTransformer ? errorTransformer(error.message) : error?.appMessage || appMessage, errorMessage: error.message, handled: error?.handled }, meta });\r\n\r\n/** * \\\r\n * Defines if the form change action should debonuce or not based in the changes\r\n */\r\nconst excludeActionDebounce = (changes) => {\r\n return Object.keys(changes).some((k) => k?.toLowerCase().includes('price'));\r\n};\r\n\r\nconst convertErrorMessage = ({ message: error } = {}, name, models) => {\r\n if (error?.toLowerCase?.().includes('same plan number in this community')) return error;\r\n return `Error saving the ${Object.keys(models).length === 1 ? name : ''} information, please try again`;\r\n};\r\n","// Request actions\r\nexport const MODEL_REQUEST_CHANNEL = 'bdxlive/models/model-channel_request';\r\nexport const MODEL_REQUEST_LATEST = 'bdxlive/models/model-latest_request';\r\n\r\n// Success actions\r\nexport const MODEL_REQUEST_CHANNEL_SUCCESS = 'bdxlive/models/model-channel_success';\r\nexport const MODEL_REQUEST_LATEST_SUCCESS = 'bdxlive/models/model-latest_success';\r\n\r\n// Fail actions\r\nexport const MODEL_REQUEST_CHANNEL_FAIL = 'bdxlive/models/model-channel_fail';\r\nexport const MODEL_REQUEST_LATEST_FAIL = 'bdxlive/models/model-latest_fail';\r\n\r\n// apply entity changes from a edited entity\r\nexport const MODEL_APPLY_CHANGES = 'bdxlive/models/apply-changes';\r\n\r\n// flush an entity in the store\r\nexport const MODEL_ENTITY_FLUSH = 'bdxlive/models/model-entity-flush';\r\n\r\nexport const CLEAR_FLAG = 'bdxlive/models/clear-flag';\r\n","/**\r\n * Imported Action Types\r\n */\r\nimport { Model } from '@/utils/models';\r\nimport { MODEL_REQUEST_CHANNEL_SUCCESS, MODEL_REQUEST_LATEST_SUCCESS, MODEL_REQUEST_CHANNEL, MODEL_REQUEST_LATEST, MODEL_REQUEST_CHANNEL_FAIL, MODEL_REQUEST_LATEST_FAIL, MODEL_ENTITY_FLUSH, CLEAR_FLAG } from './types';\r\nimport { modelRequestSchema } from '../../app.entities';\r\n\r\n/**\r\n * Model Request Action Creator for Channel Format\r\n * @param {*} query api request\r\n * @param {*} meta schema metadata\r\n */\r\nexport const modelsRequestChannel = (query, meta) => ({ type: MODEL_REQUEST_CHANNEL, query, meta });\r\n/**\r\n * Model Request Action Creator for Latest request Format\r\n * @param {*} query api request\r\n * @param {*} meta schema metadata\r\n */\r\nexport const modelsRequestLatest = (query, meta) => ({ type: MODEL_REQUEST_LATEST, query, meta });\r\n\r\n/**\r\n * Model success action creator for channel format\r\n * @param {*} data data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const modelsChannelSuccess = (entities, meta) => ({ type: MODEL_REQUEST_CHANNEL_SUCCESS, data: { entities }, meta });\r\n/**\r\n * Model success action creator for latest request format\r\n * @param {*} data data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const modelsLatestSuccess = (entities, meta) => ({ type: MODEL_REQUEST_LATEST_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model request fail action creator to for channel format\r\n * @param {*} error cause\r\n */\r\nexport const modelsChannelFail = (error) => ({ type: MODEL_REQUEST_CHANNEL_FAIL, error: true, data: error });\r\n/**\r\n * Model request fail action creator to for latest request format\r\n * @param {*} error cause\r\n */\r\nexport const modelsLatestFail = (error) => ({ type: MODEL_REQUEST_LATEST_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Generic functions\r\n */\r\n/**\r\n * Request action\r\n * @param { String } type\r\n * @param { Function } query\r\n */\r\nexport const QueryRequestAction =\r\n (type, query, model, schema = modelRequestSchema) =>\r\n (data, meta = { schema, model: model || data?.model }) => {\r\n const action = { type, query: query(data || {}), meta, data };\r\n if (data instanceof Object) {\r\n if (Object.prototype.hasOwnProperty.call(data, 'entityId')) {\r\n action.data = { entityId: data.entityId, extractContinueWithParams: data.extractContinueWithParams };\r\n } else if (model instanceof Model) {\r\n if (Object.prototype.hasOwnProperty.call(data, model.describerFields.id)) {\r\n action.data = { entityId: data[model.describerFields.id] };\r\n } else if (Object.prototype.hasOwnProperty.call(data, model.describerFields.relationId)) {\r\n action.data = { entityId: data[model.describerFields.relationId] };\r\n }\r\n }\r\n }\r\n if (data instanceof Object && data.$flags instanceof Object) {\r\n action.meta = { ...meta, $flags: data.$flags };\r\n delete data.$flags;\r\n }\r\n return action;\r\n };\r\n\r\nexport const QuerySuccessAction = (type) => (entities, meta, entityId, params) => ({ type, data: { entities, entityId, params }, meta });\r\n\r\nexport const QueryFailAction =\r\n (type, appMessage = 'An error occurred executing the operation') =>\r\n (error, entityId, meta) => ({ type, error: true, data: { entityId, appMessage: error?.appMessage || (appMessage instanceof Function ? appMessage(meta) : appMessage), errorMessage: error.message, handled: error?.handled }, meta });\r\n\r\nexport const modelsEntityFlush = (keys, meta, property) => ({ type: MODEL_ENTITY_FLUSH, data: { keys, property }, meta });\r\n\r\nexport const clearFlags = (keys, meta) => ({ type: CLEAR_FLAG, data: { keys }, meta });\r\n","/**\r\n This is where you define your action creators. All action creators must be functions\r\n that return an object with at least the type property. We do not define any async\r\n logic in this file.\r\n*/\r\n\r\n/**\r\n * Generic User Request Actions\r\n */\r\n\r\nimport { USER_DETAIL_REQUEST, USER_DETAIL_SAVE_FAIL, USER_DETAIL_SAVE_SUCCESS, USER_DETAIL_SUCCESS, USER_DETAIL_FAIL, USER_PERMISSIONS_REQUEST, USER_PERMISSIONS_SUCCESS, USER_PERMISSIONS_FAIL, USER_DETAIL_SAVE_REQUEST, USER_ROLES_REQUEST, USER_ROLES_FAIL, USER_ROLES_SUCCESS, UPDATE_USER_SERVICE_REQUEST, UPDATE_USER_SERVICE_SUCCESS, UPDATE_USER_SERVICE_FAIL } from './types';\r\nimport { modelRequestSchema } from '../../../app.entities';\r\nimport { User } from '@/models/User';\r\nimport { updateUserMutation, updateUserServiceMutation } from './api';\r\nimport { MutationFailAction, MutationRequestAction, MutationSuccessAction } from '@/redux/forms/actions';\r\nimport { QueryFailAction, QueryRequestAction, QuerySuccessAction } from '@/redux/models/actions';\r\n\r\n/**\r\n * User Info Requests Actions\r\n */\r\nexport const userDetailRequest = (userId, updatePermissionsAndServices = false) => ({ type: USER_DETAIL_REQUEST, data: { userId, updatePermissionsAndServices, entityId: userId }, meta: { model: User() } });\r\n\r\nexport const userDetailSuccess = (users, userId) => ({ type: USER_DETAIL_SUCCESS, data: { entityId: userId, entities: users }, meta: { model: User(), schema: modelRequestSchema } });\r\n\r\nexport const userDetailFail = (error, userId) => ({ type: USER_DETAIL_FAIL, error: true, data: { entityId: userId, appMessage: 'Error loading user detail information', errorMessage: error.message }, meta: { model: User() } });\r\n\r\n/**\r\n * User Info Requests Actions\r\n */\r\nexport const userPermissionsRequest = (roleId) => ({ type: USER_PERMISSIONS_REQUEST, data: { roleId, entityId: roleId }, meta: { model: User() } });\r\n\r\nexport const userPermissionsSuccess = (entities) => ({ type: USER_PERMISSIONS_SUCCESS, data: { entities }, meta: { schema: modelRequestSchema } });\r\n\r\nexport const userPermissionsFail = (error, userId) => ({ type: USER_PERMISSIONS_FAIL, error: true, data: { entityId: userId, appMessage: 'Error loading permissions information', errorMessage: error.message } });\r\n\r\nexport const userSaveRequest = MutationRequestAction(USER_DETAIL_SAVE_REQUEST, updateUserMutation);\r\n\r\nexport const userSaveSuccess = MutationSuccessAction(USER_DETAIL_SAVE_SUCCESS);\r\n\r\nexport const userSaveFail = MutationFailAction(USER_DETAIL_SAVE_FAIL);\r\n\r\nexport const userRolesRequest = () => ({ type: USER_ROLES_REQUEST, meta: { schema: modelRequestSchema } });\r\n\r\nexport const userRolesSuccess = (entities) => ({ type: USER_ROLES_SUCCESS, data: { entities }, meta: { schema: modelRequestSchema } });\r\n\r\nexport const userRolesFail = (error) => ({ type: USER_ROLES_FAIL, error: true, data: { appMessage: 'Error loading roles information', errorMessage: error.message } });\r\n\r\nexport const updateUserServiceRequest = QueryRequestAction(UPDATE_USER_SERVICE_REQUEST, updateUserServiceMutation);\r\nexport const updateUserServiceSuccess = QuerySuccessAction(UPDATE_USER_SERVICE_SUCCESS);\r\nexport const updateUserServiceFail = QueryFailAction(UPDATE_USER_SERVICE_FAIL);\r\n","import { Model } from '../utils/models';\r\nimport { GraphQLQuery } from '../utils/api/graph-helpers';\r\nimport { userSchema } from '../app.entities';\r\nimport { Builder } from './Builder';\r\nimport { userSaveRequest } from '@/modules/user-management/redux/actions';\r\n\r\nexport class UserModel extends Model {\r\n name = 'users';\r\n\r\n model = 'user';\r\n\r\n parent = Builder();\r\n\r\n query = new GraphQLQuery([\r\n {\r\n operation: 'users',\r\n argument: {},\r\n fields: ['userId', 'userName'],\r\n },\r\n ]);\r\n\r\n mutations = { update: userSaveRequest };\r\n\r\n describerFields = {\r\n id: 'userId',\r\n name: 'userName',\r\n status: 'status',\r\n relation: 'user',\r\n relationId: 'userId',\r\n };\r\n\r\n urlKey = 'userId';\r\n\r\n schema = userSchema;\r\n\r\n template = (userId, context) => {\r\n return {\r\n userId,\r\n dateLastChanged: Date(),\r\n userPermissions: {},\r\n ...context,\r\n };\r\n };\r\n}\r\nexport const User = () => new UserModel();\r\n","/**\r\n This is where you define your action creators. All action creators must be functions\r\n that return an object with at least the type property. We do not define any async\r\n logic in this file.\r\n*/\r\nimport { LOGIN_REQUEST, LOGIN_FAIL, LOGOUT, LOGIN_SUCCESS, REVALIDATE, RECOVER_PASSWORD_REQUEST, RECOVER_PASSWORD_SUCCESS, RECOVER_PASSWORD_FAIL, USER_ACTIVITY_REQUEST, USER_ACTIVITY_SUCCESS, USER_ACTIVITY_FAIL, RECOVER_USERNAME_REQUEST, RECOVER_USERNAME_SUCCESS, RECOVER_USERNAME_FAIL } from './types';\r\nimport { insertActivityMutation } from './api';\r\nimport { modelRequestSchema } from '@/app/app.entities';\r\nimport { User } from '@/models/User';\r\n\r\nexport const requestLogin = (data) => ({ type: LOGIN_REQUEST, data });\r\n\r\nexport const requestLogout = () => ({ type: LOGOUT, data: { href: '/sign-in' } });\r\n\r\nexport const loginFail = (error) => ({ type: LOGIN_FAIL, error: true, data: error });\r\n\r\nexport const loginFailUserRequired = () => ({ type: LOGIN_FAIL, error: true, data: { message: 'Username is required' } });\r\n\r\nexport const loginFailPasswordRequired = () => ({ type: LOGIN_FAIL, error: true, data: { message: 'Password is required' } });\r\n\r\nexport const loginRequestSuccess = (user, userPermissions, services, meta) => ({ type: LOGIN_SUCCESS, data: { entities: { users: [user], userPermissions, services } }, meta });\r\n\r\nexport const revalidate = (data) => ({ type: REVALIDATE, data });\r\n\r\n/**\r\n * Generic Activity Mutations Actions\r\n */\r\nexport const userActivityRequest = (userId, activityCode) => ({\r\n type: USER_ACTIVITY_REQUEST,\r\n data: { id: userId, userId, activityCode },\r\n mutation: insertActivityMutation,\r\n meta: { model: User(), schema: modelRequestSchema },\r\n noEntity: true,\r\n});\r\n\r\nexport const userActivitySuccess = (user) => ({ type: USER_ACTIVITY_SUCCESS, data: { entities: { users: [user] } }, meta: { model: User(), schema: modelRequestSchema } });\r\n\r\nexport const userActivityFail = (userId, error) => ({ type: USER_ACTIVITY_FAIL, error: true, data: { entityId: userId, appMessage: 'Activity data insertion error', errorMessage: error.message }, meta: { model: User() } });\r\n\r\nexport const recoverPasswordRequest = (data) => ({ type: RECOVER_PASSWORD_REQUEST, data });\r\n\r\nexport const recoverPasswordSuccess = (meta) => ({ type: RECOVER_PASSWORD_SUCCESS, meta });\r\n\r\nexport const recoverPasswordFail = (error) => ({ type: RECOVER_PASSWORD_FAIL, error: true, data: error });\r\n\r\nexport const recoverUsernameFailEmailRequired = () => ({ type: RECOVER_USERNAME_FAIL, error: true, data: { message: 'Email address is required' } });\r\n\r\nexport const recoverUsernameRequest = (data) => ({ type: RECOVER_USERNAME_REQUEST, data });\r\n\r\nexport const recoverUsernameSuccess = (meta) => ({ type: RECOVER_USERNAME_SUCCESS, meta });\r\n\r\nexport const recoverUsernameFail = (error) => ({ type: RECOVER_USERNAME_FAIL, error: true, data: error });\r\n","export const createQueryParam = (key) => ({ name: () => key, get: () => getQueryParam(key), set: (value) => setQueryParam(key, value), remove: () => removeQueryParam(key) });\r\n\r\nexport const setQueryParam = (key, value) => {\r\n const searchParams = new URLSearchParams(window.location.search);\r\n searchParams.set(key, value);\r\n const location = `${window.location.origin + window.location.pathname}?${searchParams.toString()}`;\r\n window.history.pushState({ path: location }, null, location);\r\n};\r\n\r\nexport const getQueryParam = (key) => {\r\n const searchParams = new URLSearchParams(window.location.search);\r\n return searchParams.get(key);\r\n};\r\n\r\nexport const hasQueryParam = (key) => {\r\n const searchParams = new URLSearchParams(window.location.search);\r\n return searchParams.has(key);\r\n};\r\n\r\nexport const removeQueryParam = (key) => {\r\n const searchParams = new URLSearchParams(window.location.search);\r\n searchParams.delete(key);\r\n const searchParamsToString = searchParams.toString();\r\n const location = `${window.location.origin + window.location.pathname}${searchParamsToString ? `?${searchParamsToString}` : ''}`;\r\n window.history.pushState({ path: location }, null, location);\r\n};\r\n","/**\r\n * Helper importings\r\n */\r\nimport apiClient from '../../utils/api/api';\r\n\r\n/**\r\n * API request\r\n * This request is based on GraphQLQuery Model which allows to build request\r\n * programmatically and then generate the resulting request\r\n * @param {GraphQLQuery} query graphql query definition\r\n * @param {import('axios').CancelTokenSource} signal\r\n */\r\nexport const requestModel = (query, signal) => apiClient.post(null, { query: (query.getQuery && query.getQuery()) || query }, signal !== undefined ? { cancelToken: signal?.token } : undefined);\r\n","import { call } from 'redux-saga/effects';\r\nimport { config } from '../../@redux/config/selectors';\r\n\r\n// This Utility funtion keep a saga (generator) tring til sucess\r\nexport const autoRestart = (generator, handleError) =>\r\n function* autoRestarting(...args) {\r\n while (true) {\r\n try {\r\n yield call(generator, ...args);\r\n break;\r\n } catch (e) {\r\n yield handleError(e);\r\n }\r\n }\r\n };\r\n\r\n// Hight order function to try N attempts to execute a saga that request something,\r\n// so it doesnt fail the first try, the number of tries is from a configuration key if not defined\r\nexport const multipleAttempts = (generator, handleError, maxTries = 0, excludeExceptionTypes = []) =>\r\n function* multipleAttempting(...args) {\r\n if (maxTries === 0) {\r\n maxTries = config('ApiAttempts');\r\n }\r\n\r\n let n = 0;\r\n while (n < maxTries) {\r\n n += 1;\r\n try {\r\n yield call(generator, ...args);\r\n break;\r\n } catch (error) {\r\n // Keep trying if the max attempts param is not reach and if it is not an Excluded error (like not retry when server returns an Authentication error)\r\n const isItAnExcludedType = excludeExceptionTypes.some((type) => error instanceof type);\r\n if (isItAnExcludedType || n >= maxTries) {\r\n yield handleError(error);\r\n break;\r\n }\r\n }\r\n }\r\n };\r\n","/* eslint-disable max-classes-per-file */\r\n/**\r\n * Helper Importings\r\n */\r\nimport { takeLatest, call, put, actionChannel, take, cancelled } from 'redux-saga/effects';\r\n/**\r\n * Redux Importings\r\n */\r\nimport { buffers } from 'redux-saga';\r\nimport Axios from 'axios';\r\nimport { requestModel } from './api';\r\nimport { MODEL_REQUEST_LATEST, MODEL_REQUEST_CHANNEL } from './types';\r\nimport { modelsChannelSuccess, modelsChannelFail, modelsLatestSuccess, modelsLatestFail } from './actions';\r\nimport { multipleAttempts } from '../../utils/saga/saga-helpers';\r\n\r\n/**\r\n * This Saga is incharged of performing GraphQLQuery calls to the API\r\n * and handling the response\r\n *\r\n * @param { function } success success action to be executed\r\n * @param { function } fail fail action to be executed\r\n * @param { GraphQlQuery } action.query query to be executed\r\n * @param { Object } action.meta action additional data containing the schema\r\n */\r\nexport function* getModels(success, fail, { query, meta, data }, continueWith, transformResults) {\r\n const { entityId, extractContinueWithParams } = data || {};\r\n const signal = Axios.CancelToken.source();\r\n try {\r\n // Async call to the server\r\n const response = yield call(requestModel, query, signal);\r\n\r\n // Transform or modify something in the data from api before send it to the redux store\r\n if (transformResults) {\r\n transformResults(response.data.Result, data);\r\n }\r\n\r\n // On success dispatch the respective action\r\n // This will be captured by normalizr middleware\r\n yield put(success(response.data.Result, meta, entityId, data));\r\n\r\n if (continueWith) {\r\n yield put(continueWith(extractContinueWithParams ? extractContinueWithParams(response.data.Result) : response.data.Result, meta));\r\n }\r\n } catch (error) {\r\n // On fail dispatch the respective action\r\n yield put(fail(error, entityId, meta));\r\n } finally {\r\n if (yield cancelled()) {\r\n // Cancel the API call if the saga was cancelled\r\n signal.cancel();\r\n }\r\n }\r\n}\r\n\r\nclass RetryError {\r\n constructor(fn, error) {\r\n this.error = error;\r\n this.fn = fn;\r\n }\r\n}\r\n\r\nexport class BuilderContextError {\r\n constructor(fn, error) {\r\n this.error = error;\r\n this.fn = fn;\r\n }\r\n}\r\n\r\nexport const getModelsRetry = multipleAttempts(\r\n function* request(success, fail, checkResponse, { query, meta }) {\r\n try {\r\n // Async call to the server\r\n const response = yield call(requestModel, query);\r\n\r\n if (checkResponse) {\r\n checkResponse(response.data.Result, fail);\r\n }\r\n // On success dispatch the respective action\r\n // This will be captured by normalizr middleware\r\n yield put(success(response.data.Result, meta));\r\n } catch (error) {\r\n // in case of builder context error class type, dont retry (we passed that class type for exclusion list to multipleAttemps helper)\r\n if (error instanceof BuilderContextError) {\r\n throw error;\r\n } else {\r\n // On fail dispatch the respective action\r\n throw new RetryError(fail, error);\r\n }\r\n }\r\n },\r\n function* handlerError({ error, fn }) {\r\n yield put(fn(error));\r\n },\r\n 0,\r\n [BuilderContextError]\r\n);\r\n\r\nexport function* getModelsChannel(actionTake, success, fail, continueWith, transformResults) {\r\n // Listen to MODEL_REQUEST_CHANNEL actions\r\n const channel = yield actionChannel(actionTake, buffers.expanding());\r\n while (true) {\r\n // On next channel capture take the action\r\n const action = yield take(channel);\r\n // Call the saga with the respective handlers and action\r\n yield getModels(success, fail, action, continueWith, transformResults);\r\n }\r\n}\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const modelsSagas = [\r\n /**\r\n * This generator listens to MODEL_REQUEST_CHANNEL\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(MODEL_REQUEST_CHANNEL, modelsChannelSuccess, modelsChannelFail),\r\n /**\r\n * This effect listens to MODEL_REQUEST_LATEST\r\n * and cancels the current operation on future request\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(MODEL_REQUEST_LATEST, getModels, modelsLatestSuccess, modelsLatestFail),\r\n];\r\n","/**\r\n * Builder Context Action Types\r\n */\r\nexport const BUILDER_CONTEXT_REQUEST = 'bdxlive/context/builder_context_request';\r\nexport const BUILDER_CONTEXT_SUCCESS = 'bdxlive/context/builder_context_success';\r\nexport const BUILDER_CONTEXT_FAIL = 'bdxlive/context/builder_context_fail';\r\n/**\r\n * Division Context Action Types\r\n */\r\nexport const DIVISION_CONTEXT_REQUEST = 'bdxlive/context/division_context_request';\r\nexport const DIVISION_CONTEXT_SUCCESS = 'bdxlive/context/division_context_success';\r\nexport const DIVISION_CONTEXT_FAIL = 'bdxlive/context/division_context_fail';\r\n/**\r\n * Community Context Action Types\r\n */\r\nexport const COMMUNITY_CONTEXT_REQUEST = 'bdxlive/context/community_context_request';\r\nexport const COMMUNITY_CONTEXT_SUCCESS = 'bdxlive/context/community_context_success';\r\nexport const COMMUNITY_CONTEXT_FAIL = 'bdxlive/context/community_context_fail';\r\n/**\r\n * Plan Context Action Types\r\n */\r\nexport const PLAN_CONTEXT_REQUEST = 'bdxlive/context/plan_context_request';\r\nexport const PLAN_CONTEXT_SUCCESS = 'bdxlive/context/plan_context_success';\r\nexport const PLAN_CONTEXT_FAIL = 'bdxlive/context/plan_context_fail';\r\n/**\r\n * Spec Context Action Types\r\n */\r\nexport const SPEC_CONTEXT_REQUEST = 'bdxlive/context/spec_context_request';\r\nexport const SPEC_CONTEXT_SUCCESS = 'bdxlive/context/spec_context_success';\r\nexport const SPEC_CONTEXT_FAIL = 'bdxlive/context/spec_context_fail';\r\n/**\r\n * Lot Context Action Types\r\n */\r\nexport const LOT_CONTEXT_REQUEST = 'bdxlive/context/lot_context_request';\r\nexport const LOT_CONTEXT_SUCCESS = 'bdxlive/context/lot_context_success';\r\nexport const LOT_CONTEXT_FAIL = 'bdxlive/context/lot_context_fail';\r\n/**\r\n * Brand Context Action Types\r\n */\r\nexport const BRAND_CONTEXT_REQUEST = 'bdxlive/context/brand_context_request';\r\nexport const BRAND_CONTEXT_SUCCESS = 'bdxlive/context/brand_context_success';\r\nexport const BRAND_CONTEXT_FAIL = 'bdxlive/context/brand_context_fail';\r\n/**\r\n * Brand Context Action Types\r\n */\r\nexport const AGENT_CONTEXT_REQUEST = 'bdxlive/context/agent_context_request';\r\nexport const AGENT_CONTEXT_SUCCESS = 'bdxlive/context/agent_context_success';\r\nexport const AGENT_CONTEXT_FAIL = 'bdxlive/context/agent_context_fail';\r\n/**\r\n * Context Loading State\r\n */\r\nexport const CONTEXT_LOADING = 'bdxlive/context/loading';\r\n","/**\r\n * @function DivisionContext\r\n * API call to access the context of a page with builder context\r\n * The inheritance follows the following format\r\n * Partner\r\n * |_Builder (Corportation)\r\n * |_Division\r\n *\r\n * @param {*} arguments\r\n */\r\nconst DivisionContext = ({ builderId }) => `query {\r\n builders(builderId: ${builderId} ) {\r\n builderId\r\n builderName\r\n parentBuilderId\r\n orgTypeCode\r\n autoFeedFlag\r\n parentBuilder {\r\n builderId\r\n builderName\r\n canadianData\r\n planLibraryType\r\n autoFeedFlag\r\n soldDataFlag\r\n divisionsCount\r\n dateCreated\r\n dateLastChanged\r\n partner {\r\n partnerId\r\n partnerName\r\n }\r\n }\r\n }\r\n }`;\r\nexport const DivisionContextQuery = (requestArguments) => DivisionContext(requestArguments);\r\n\r\n/**\r\n * @function DivisionContext\r\n * API call to access the context of a page with builder context\r\n * The inheritance follows the following format\r\n * Partner\r\n * |_Builder (Corportation)\r\n * |_Division\r\n *\r\n * @param {*} arguments\r\n */\r\nconst BuilderContext = ({ builderId }) => `query {\r\n builders(builderId: ${builderId} ) {\r\n builderId\r\n builderName\r\n planLibraryType\r\n canadianData\r\n orgTypeCode\r\n autoFeedFlag\r\n soldDataFlag\r\n divisionsCount\r\n dateCreated\r\n dateLastChanged\r\n partner {\r\n partnerId\r\n partnerName\r\n }\r\n }\r\n }`;\r\n\r\nexport const BuilderContextQuery = (requestArguments) => BuilderContext(requestArguments);\r\n\r\n/**\r\n * @function CommunityContext\r\n * API call to access the context of a community\r\n * The inheritance follows the following format\r\n * Partner\r\n * |_Builder (Corportation)\r\n * |_Division\r\n * |_Community\r\n *\r\n * @param {*} arguments\r\n */\r\nconst CommunityContext = ({ communityId }) => `query {\r\n communities(communityId: ${communityId}, status: [Approved, Inactive, Submitted]) {\r\n id\r\n name\r\n builder {\r\n builderId\r\n builderName\r\n parentBuilderId\r\n orgTypeCode\r\n parentBuilder {\r\n builderId\r\n builderName\r\n planLibraryType\r\n autoFeedFlag\r\n divisionsCount\r\n partner {\r\n partnerId\r\n partnerName\r\n }\r\n }\r\n }\r\n }\r\n}`;\r\nexport const CommunityContextQuery = (requestArguments) => CommunityContext(requestArguments);\r\n\r\n/**\r\n * @function PlanContext\r\n * API call to access the context of a plan\r\n * The inheritance follows the following format\r\n * Partner\r\n * |_Builder (Corportation)\r\n * |_Division\r\n * |_Community\r\n * |_Plan\r\n *\r\n * This defines the structure of a division plan library\r\n * Partner\r\n * |_Builder (Corportation)\r\n * |_Division\r\n * |_Plan\r\n *\r\n * @param {*} arguments\r\n */\r\nconst PlanContext = ({ planId }) => `query {\r\n plans(planId: ${planId}, status: [Active, Inactive]) {\r\n id\r\n name\r\n community {\r\n id\r\n name\r\n market {\r\n id\r\n name\r\n }\r\n builder {\r\n builderId\r\n builderName\r\n parentBuilderId\r\n planLibraryType\r\n autoFeedFlag\r\n divisionsCount\r\n parentBuilder {\r\n builderId\r\n builderName\r\n planLibraryType\r\n autoFeedFlag\r\n divisionsCount\r\n partner {\r\n partnerId\r\n partnerName\r\n }\r\n }\r\n }\r\n }\r\n builder {\r\n builderId\r\n builderName\r\n parentBuilderId\r\n planLibraryType\r\n autoFeedFlag\r\n divisionsCount\r\n parentBuilder {\r\n builderId\r\n builderName\r\n planLibraryType \r\n autoFeedFlag\r\n divisionsCount\r\n partner {\r\n partnerId\r\n partnerName\r\n }\r\n }\r\n partner {\r\n partnerId\r\n partnerName\r\n }\r\n }\r\n }\r\n}\r\n`;\r\n\r\nexport const PlanContextQuery = (requestArguments) => PlanContext(requestArguments);\r\n\r\n/**\r\n * @function PlanContext\r\n * API call to access the context of a spec\r\n * The inheritance follows the following format\r\n * Partner\r\n * |_Builder (Corportation)\r\n * |_Division\r\n * |_Community\r\n * |_Plan\r\n * |_Spec\r\n *\r\n * @param {*} arguments\r\n */\r\nconst SpecContext = ({ specId }) => `query {\r\n specs(specId: ${specId}, status: [Active, Inactive]) {\r\n id\r\n number\r\n streetAddress1\r\n plan {\r\n id\r\n name\r\n community {\r\n id\r\n name\r\n market {\r\n id\r\n name\r\n }\r\n builder {\r\n builderId\r\n builderName\r\n parentBuilderId\r\n parentBuilder {\r\n builderId\r\n builderName\r\n planLibraryType\r\n partner {\r\n partnerId\r\n partnerName\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nexport const SpecContextQuery = (requestArguments) => SpecContext(requestArguments);\r\n\r\n/**\r\n * @function PlanContext\r\n * API call to access the context of a spec\r\n * The inheritance follows the following format\r\n * Partner\r\n * |_Builder (Corportation)\r\n * |_Division\r\n * |_Community\r\n * |_Plan\r\n * |_Spec\r\n * |_Lot\r\n *\r\n * @param {*} arguments\r\n */\r\nconst LotContext = ({ lotId }) => `query {\r\n lots(lotId: ${lotId}, status: [Active, Inactive]) {\r\n id\r\n name\r\n community {\r\n id\r\n name\r\n market {\r\n id\r\n name\r\n }\r\n builder {\r\n builderId\r\n builderName\r\n parentBuilderId\r\n divisionsCount\r\n parentBuilder {\r\n builderId\r\n builderName\r\n divisionsCount\r\n partner {\r\n partnerId\r\n partnerName\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nexport const LotContextQuery = (requestArguments) => LotContext(requestArguments);\r\n\r\n/**\r\n * @function BrandContext\r\n * API call to access the context of a spec\r\n * The inheritance follows the following format\r\n * Partner\r\n * |_Builder (Corportation)\r\n * |_Brand\r\n *\r\n * @param {*} arguments\r\n */\r\nconst BrandContext = ({ brandId }) => `query BrandContext {\r\n brands(brandId: ${brandId}) {\r\n brandId\r\n brandName\r\n corporations {\r\n builderId\r\n builderName\r\n partner {\r\n partnerId\r\n partnerName\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nexport const BrandContextQuery = (requestArguments) => BrandContext(requestArguments);\r\n\r\n/**\r\n * @function BrandContext\r\n * API call to access the context of a spec\r\n * The inheritance follows the following format\r\n * Partner\r\n * |_Builder (Corportation)\r\n * |_Brand\r\n *\r\n * @param {*} arguments\r\n */\r\nconst AgentContext = ({ builderId }) => `query AgentContext {\r\n builders(builderId: ${builderId}) {\r\n builderId\r\n builderName\r\n }\r\n}`;\r\n\r\nexport const AgentContextQuery = (requestArguments) => AgentContext(requestArguments);\r\n","/*\r\nThis file contains string literals for your action types.\r\nThis provides an easy reference for the actions available.\r\nThese strings are exported as an object literal which can then be imported\r\ninto your reducers and action creators instead of hard-coding them.\r\nAlthough maintaining a separate file containing just your action\r\ntypes is optional, it is highly recommended.\r\n*/\r\n\r\n// ACTION TYPES\r\nexport const COMMUNITY_DETAIL_REQUEST = 'bdxlive/community_detail/info_request';\r\nexport const COMMUNITY_DETAIL_SUCCESS = 'bdxlive/community_detail/info_success';\r\nexport const COMMUNITY_DETAIL_FAIL = 'bdxlive/community_detail/info_fail';\r\n\r\nexport const COMMUNITY_PERFORMANCE_REQUEST = 'bdxlive/community_detail/performance_request';\r\nexport const COMMUNITY_PERFORMANCE_SUCCESS = 'bdxlive/community_detail/performance_success';\r\nexport const COMMUNITY_PERFORMANCE_FAIL = 'bdxlive/community_detail/performance_fail';\r\n\r\nexport const COMMUNITY_DISPLAY_REQUEST = 'bdxlive/community_detail/display_channel_request';\r\nexport const COMMUNITY_DISPLAY_SUCCESS = 'bdxlive/community_detail/display_channel_success';\r\nexport const COMMUNITY_DISPLAY_FAIL = 'bdxlive/community_detail/display_channel_fail';\r\n\r\nexport const COMMUNITY_DATACOMPLETENESS_REQUEST = 'bdxlive/community_details/datacompleteness_request';\r\nexport const COMMUNITY_DATACOMPLETENESS_SUCCESS = 'bdxlive/community_details/datacompleteness_success';\r\nexport const COMMUNITY_DATACOMPLETENESS_FAIL = 'bdxlive/community_details/datacompleteness_fail';\r\n\r\nexport const COMMUNITY_DETAIL_SAVE_REQUEST = 'bdxlive/community_detail/save_request';\r\nexport const COMMUNITY_DETAIL_SAVE_SUCCESS = 'bdxlive/community_detail/save_success';\r\nexport const COMMUNITY_DETAIL_SAVE_FAIL = 'bdxlive/community_detail/save_fail';\r\n\r\nexport const COMMUNITY_SCHOOLS_REQUEST = 'bdxlive/community_details/schools_request';\r\nexport const COMMUNITY_SCHOOLS_SUCCESS = 'bdxlive/community_details/schools_success';\r\nexport const COMMUNITY_SCHOOLS_FAIL = 'bdxlive/community_details/schools_fail';\r\n\r\nexport const MARKET_SCHOOL_DISTRICTS_REQUEST = 'bdxlive/community_details/market_schools_request';\r\nexport const MARKET_SCHOOL_DISTRICTS_SUCCESS = 'bdxlive/community_details/market_schools_success';\r\nexport const MARKET_SCHOOL_DISTRICTS_FAIL = 'bdxlive/community_details/market_schools_fail';\r\n\r\n/**\r\n * Generic Image Request\r\n */\r\nexport const COMMUNITY_IMAGES_QUERY_REQUEST = 'bdxlive/community_detail/images/images_query_request';\r\nexport const COMMUNITY_IMAGES_QUERY_SUCCESS = 'bdxlive/community_detail/images/images_query_success';\r\nexport const COMMUNITY_IMAGES_QUERY_FAIL = 'bdxlive/community_detail/images/images_query_fail';\r\n\r\n/**\r\n * Generic Video Request\r\n */\r\nexport const COMMUNITY_VIDEOS_QUERY_REQUEST = 'bdxlive/community_detail/videos/videos_query_request';\r\nexport const COMMUNITY_VIDEOS_QUERY_SUCCESS = 'bdxlive/community_detail/videos/videos_query_success';\r\nexport const COMMUNITY_VIDEOS_QUERY_FAIL = 'bdxlive/community_detail/videos/videos_query_fail';\r\n\r\n/**\r\n * Generic Interactive Media Request\r\n */\r\nexport const COMMUNITY_INTERACTIVE_MEDIA_QUERY_REQUEST = 'bdxlive/community_detail/interactive_media/interactive_media_query_request';\r\nexport const COMMUNITY_INTERACTIVE_MEDIA_QUERY_SUCCESS = 'bdxlive/community_detail/interactive_media/interactive_media_query_success';\r\nexport const COMMUNITY_INTERACTIVE_MEDIA_QUERY_FAIL = 'bdxlive/community_detail/interactive_media/interactive_media_query_fail';\r\n\r\nexport const COMMUNITY_PARTNER_REQUEST = 'bdxlive/community_detail/community_partner/community_partnerrequest';\r\nexport const COMMUNITY_PARTNER_SUCCESS = 'bdxlive/community_detail/community_partner/community_partnersuccess';\r\nexport const COMMUNITY_PARTNER_FAIL = 'bdxlive/community_detail/community_partner/community_partnerfail';\r\n\r\nexport const ACTIVATE_WEBARCH_COMMUNITIES_REQUEST = 'bdxlive/community_detail/activate_webarch_communities_request';\r\nexport const ACTIVATE_WEBARCH_COMMUNITIES_SUCCESS = 'bdxlive/community_detail/activate_webarch_communities_success';\r\nexport const ACTIVATE_WEBARCH_COMMUNITIES_FAIL = 'bdxlive/community_detail/activate_webarch_communities_fail';\r\n\r\nexport const MLS_NAMES_REQUEST = 'bdxlive/community_detail/mls_names_request';\r\nexport const MLS_NAMES_SUCCESS = 'bdxlive/community_detail/mls_names_success';\r\nexport const MLS_NAMES_FAIL = 'bdxlive/community_detail/mls_names_fail';\r\n\r\nexport const COMMUNITY_STATUS_UPDATE_REQUEST = 'bdxlive/community_detail/status_update_request';\r\nexport const COMMUNITY_STATUS_UPDATE_SUCCESS = 'bdxlive/community_detail/status_update_success';\r\nexport const COMMUNITY_STATUS_UPDATE_FAIL = 'bdxlive/community_detail/status_update_fail';\r\n","import { getSitePage } from '@/utils/routing/router-helpers';\r\nimport { empty } from '../../utils/bdx-lodash-lite/empty';\r\nimport { JSONText } from '../../utils/bdx-lodash-lite/json/text';\r\n\r\nconst Query = ({ filter: { key, value } = {}, corpBuilderId, builderId, communityId, planId, specId, brandId, entities, countEntities, entityFields, typeCodes, page, top, sortColumns = '[{order: Asc, field: Sequence}]', status = ['Active'], excludeCounter = false }) => {\r\n const brandVideoCouter = excludeCounter\r\n ? ''\r\n : `videoCounter(\r\n ${countEntities ? `entities:[${countEntities}],` : ''} \r\n ${corpBuilderId !== undefined ? `, corpBuilderId: ${corpBuilderId},` : ``}\r\n ${builderId !== undefined ? `, builderId: ${builderId},` : ``}\r\n ${communityId !== undefined ? `, communityId: ${communityId},` : ``}\r\n ${planId !== undefined ? `, planId: ${planId},` : ``}\r\n ${specId !== undefined ? `, specId: ${specId},` : ``}\r\n ${brandId !== undefined ? `, brandId: ${brandId},` : ``})\r\n {\r\n count\r\n type\r\n }`;\r\n\r\n const videoCounterQuery = brandId !== undefined ? brandVideoCouter : `videoCount${key && value ? `(${key}: ${value})` : ''}`;\r\n\r\n return `{\r\n videos(\r\n status:[${status}]\r\n ${key && value ? `${key}: ${value},` : ''}\r\n ${typeCodes ? `typeCodes:[${typeCodes}],` : ''}\r\n ${sortColumns ? `sortBy:${sortColumns},` : ``},\r\n ${entities ? `entities:[${entities}],` : ''}\r\n ${corpBuilderId !== undefined ? `, corpBuilderId: ${corpBuilderId},` : ``}\r\n ${builderId !== undefined ? `, builderId: ${builderId},` : ``}\r\n ${communityId !== undefined ? `, communityId: ${communityId},` : ``}\r\n ${planId !== undefined ? `, planId: ${planId},` : ``}\r\n ${specId !== undefined ? `, specId: ${specId},` : ``}\r\n ${brandId !== undefined ? `, brandId: ${brandId},` : ``}\r\n ${page !== undefined ? `, page: ${page},` : ``}\r\n ${top !== undefined ? `, top: ${top},` : ``}\r\n ) {\r\n ${VideoQueryFields}\r\n ${entityFields ? VideosEntitiesFields : ''}\r\n }\r\n ${videoCounterQuery}\r\n }`;\r\n};\r\n\r\nexport const VideosQuery = (requestArguments) => Query(requestArguments);\r\n\r\nconst UpdateMutation = ({ videoId, title, sequence, loadStatusId }) => `mutation {\r\n updateVideo(\r\n videoId: ${videoId},\r\n sitePage: \"${getSitePage()}\"\r\n ${!empty(loadStatusId) ? `, loadStatusId: ${loadStatusId}` : ``}\r\n ${title !== undefined ? `, title: ${JSONText(title)}` : ``}\r\n ${!empty(sequence) ? `, sequence: ${sequence}` : ``}\r\n ) {\r\n ${VideoQueryFields}\r\n }\r\n}`;\r\n\r\nexport const VideosUpdateMutation = (requestArguments) => UpdateMutation(requestArguments);\r\n\r\nconst InsertMutation = ({ builderId, communityId, planId, specId, lotId, brandId, title, sequence, originalUrl, thumbnailUrl, localPath, fileSize }, file) => `\r\nmutation${file ? `($file: Upload)` : ``} {\r\n insertVideo(\r\n ${file ? `file: $file,` : ``}\r\n sitePage: \"${getSitePage()}\",\r\n ${!empty(builderId) ? `builderId: ${builderId},` : ``}\r\n ${!empty(communityId) ? `communityId: ${communityId},` : ``}\r\n ${!empty(planId) ? `planId: ${planId},` : ``}\r\n ${!empty(specId) ? `specificationId: ${specId},` : ``}\r\n ${!empty(lotId) ? `lotId: ${lotId},` : ``}\r\n ${!empty(brandId) ? `brandId: ${brandId},` : ``}\r\n ${!empty(title) ? `title: ${JSONText(title)},` : ``}\r\n ${!empty(sequence) ? `sequence: ${sequence},` : ``}\r\n ${!empty(localPath) ? `localPath: ${JSONText(localPath)},` : ``}\r\n ${!empty(thumbnailUrl) ? `thumbnailUrl: ${JSONText(thumbnailUrl)},` : ``}\r\n ${!empty(originalUrl) ? `originalUrl: ${JSONText(originalUrl)},` : ``}\r\n ${!empty(fileSize) ? `fileSize: ${fileSize}` : ``}\r\n ${!empty(communityId) ? `bdxProvided: false` : ``}\r\n\r\n ) {\r\n ${VideoQueryFields}\r\n }\r\n}`;\r\n\r\nexport const VideosInsertMutation = (requestArguments, file = true) => InsertMutation(requestArguments, file);\r\n\r\nconst UpdateBulkMutation = (items) => `\r\nmutation {\r\n ${items.map(\r\n ({ videoId, title, sequence, loadStatusId }) => `\r\n video${videoId} : updateVideo(\r\n videoId: ${videoId},\r\n sitePage: \"${getSitePage()}\"\r\n ${!empty(loadStatusId) ? `, loadStatusId: ${loadStatusId}` : ``}\r\n ${!empty(title) ? `, title: ${JSONText(title)}` : ``}\r\n ${!empty(sequence) ? `, sequence: ${sequence}` : ``}) {\r\n ...VideoFragment\r\n }\r\n `\r\n )}\r\n \r\n}\r\nfragment VideoFragment on Video {\r\n ${VideoQueryFields}\r\n}`;\r\n\r\nexport const VideosUpdateBulkMutation = (requestArguments) => UpdateBulkMutation(requestArguments);\r\n\r\nconst InsertBulkMutation = (items) => `\r\nmutation {\r\n ${items.map(\r\n ({ builderId, communityId, planId, specId, lotId, brandId, title, sequence, thumbnailUrl, originalUrl, localPath, fileSize }, index) => `\r\n video${index}: insertVideo( \r\n sitePage: \"${getSitePage()}\",\r\n ${!empty(builderId) ? `builderId: ${builderId},` : ``}\r\n ${!empty(communityId) ? `communityId: ${communityId},` : ``}\r\n ${!empty(planId) ? `planId: ${planId},` : ``}\r\n ${!empty(specId) ? `specificationId: ${specId},` : ``}\r\n ${!empty(lotId) ? `lotId: ${lotId},` : ``}\r\n ${!empty(brandId) ? `brandId: ${brandId},` : ``}\r\n ${!empty(title) ? `title: ${JSONText(title)},` : ``}\r\n ${!empty(sequence) ? `sequence: ${sequence},` : ``}\r\n ${!empty(localPath) ? `localPath: ${JSONText(localPath)},` : ``}\r\n ${!empty(thumbnailUrl) ? `thumbnailUrl: ${JSONText(thumbnailUrl)},` : ``}\r\n ${!empty(originalUrl) ? `originalUrl: ${JSONText(originalUrl)},` : ``}\r\n ${!empty(fileSize) ? `fileSize: ${fileSize}` : ``}\r\n ) {\r\n ...VideoFragment\r\n }\r\n `\r\n )}\r\n}\r\nfragment VideoFragment on Video {\r\n ${VideoQueryFields}\r\n}`;\r\n\r\nexport const VideosInsertBulkMutation = (requestArguments) => InsertBulkMutation(requestArguments);\r\n\r\nconst CopyBulkMutation = (items) => `\r\nmutation {\r\n ${items.map(\r\n ({ videoId, builderId, communityId, planId, specId, brandId }, index) => `\r\n copy${index}: ${brandId ? 'assignBrandVideo' : 'copyVideo'}( \r\n videoId: ${videoId}\r\n sitePage: \"${getSitePage()}\",\r\n ${!empty(brandId) ? `brandId: ${brandId},` : ``}\r\n ${!empty(builderId && !brandId) ? `builderId: ${builderId},` : ``}\r\n ${!empty(communityId) && !brandId ? `communityId: ${communityId},` : ``}\r\n ${!empty(planId) && !brandId ? `planId: ${planId},` : ``}\r\n ${!empty(specId) && !brandId ? `specificationId: ${specId},` : ``}\r\n ) {\r\n ...VideoFragment\r\n }\r\n `\r\n )}\r\n}\r\nfragment VideoFragment on Video {\r\n ${VideoQueryFields}\r\n}`;\r\n\r\nexport const VideosCopyBulkMutation = (requestArguments) => CopyBulkMutation(requestArguments);\r\n\r\nexport const VideoQueryFields = `\r\n videoId\r\n sequence\r\n title\r\n localPath\r\n originalUrl\r\n processedUrl\r\n thumbnailUrl\r\n builderId\r\n communityId\r\n planId\r\n lotId\r\n brandId\r\n specificationId\r\n loadStatusId\r\n dateCreated\r\n dateLastChanged\r\n fileSize\r\n processorStatusId\r\n brightCoveRefId\r\n`;\r\n\r\nexport const VideosEntitiesFields = `\r\n builder {\r\n builderId,\r\n builderName\r\n },\r\n community {\r\n id,\r\n name\r\n },\r\n plan {\r\n id,\r\n name\r\n },\r\n spec {\r\n id,\r\n number\r\n }\r\n `;\r\n","import { getSitePage } from '@/utils/routing/router-helpers';\r\nimport { empty } from '../../utils/bdx-lodash-lite/empty';\r\nimport { JSONText } from '../../utils/bdx-lodash-lite/json/text';\r\n\r\nconst Query = ({ filter: { key, value } = {}, corpBuilderId, builderId, communityId, planId, specId, brandId, entities, countEntities, typeCodes, entityFields, top, page, sortColumns = '[{order: Asc, field: ImageSequence}]', status = ['Active'], preferredFlag, onlyCounter = false, excludeCounter = false }) => `{\r\n ${\r\n onlyCounter\r\n ? ''\r\n : `images(\r\n status:[${status}],\r\n ${key && value ? `${key}: ${value},` : ''}\r\n ${typeCodes ? `typeCodes:[${typeCodes}],` : ''}\r\n ${entities ? `entities:[${entities}],` : ''}\r\n ${sortColumns ? `sortBy:${sortColumns},` : ``}\r\n ${preferredFlag ? `preferredFlag:${preferredFlag},` : ``}\r\n ${corpBuilderId !== undefined ? `, corpId: ${corpBuilderId},` : ``}\r\n ${builderId !== undefined ? `, builderId: ${builderId},` : ``}\r\n ${communityId !== undefined ? `, communityId: ${communityId},` : ``}\r\n ${planId !== undefined ? `, planId: ${planId},` : ``}\r\n ${specId !== undefined ? `, specId: ${specId},` : ``}\r\n ${brandId !== undefined ? `, brandId: ${brandId},` : ``}\r\n ${page !== undefined ? `, page: ${page},` : ``}\r\n ${top !== undefined ? `, top: ${top},` : ``}\r\n ) { \r\n ${ImageQueryFields}\r\n ${entityFields ? ImageEntitiesFields : ''}\r\n }`\r\n }\r\n ${\r\n !excludeCounter\r\n ? `imageCounter(\r\n status:[${status}],\r\n ${key && value ? `${key}: ${value},` : ''}\r\n ${typeCodes ? `typeCodes:[${typeCodes}],` : ''}\r\n ${countEntities ? `entities:[${countEntities}],` : ''} \r\n ${corpBuilderId !== undefined ? `, corpId: ${corpBuilderId},` : ``}\r\n ${builderId !== undefined ? `, builderId: ${builderId},` : ``}\r\n ${communityId !== undefined ? `, communityId: ${communityId},` : ``}\r\n ${planId !== undefined ? `, planId: ${planId},` : ``}\r\n ${specId !== undefined ? `, specId: ${specId},` : ``}\r\n ${brandId !== undefined ? `, brandId: ${brandId},` : ``})\r\n {\r\n count\r\n type\r\n }`\r\n : ''\r\n }\r\n}\r\n`;\r\n\r\nexport const ImagesQuery = (requestArguments) => Query(requestArguments);\r\n\r\nconst UpdateMutation = ({ imageId, imageTitle, imageDescription, imageTypeCode, imageSequence, loadStatusId, clickthruUrl, originalPath }) => `mutation {\r\n updateImage(\r\n imageId: ${imageId}\r\n sitePage: \"${getSitePage()}\"\r\n ${loadStatusId !== undefined ? `, loadStatusId: ${loadStatusId}` : ``}\r\n ${imageTitle !== undefined ? `, imageTitle: ${JSONText(imageTitle)}` : ``}\r\n ${imageDescription !== undefined ? `, imageDescription: ${JSONText(imageDescription)}` : ``}\r\n ${imageTypeCode !== undefined ? `, imageTypeCode: ${imageTypeCode}` : ``}\r\n ${imageSequence !== undefined ? `, imageSequence: ${imageSequence}` : ``}\r\n ${originalPath !== undefined ? `, originalPath: ${JSONText(originalPath)}` : ``}\r\n ${clickthruUrl !== undefined ? `, clickthruUrl: ${JSONText(clickthruUrl)},` : ``} \r\n ) {\r\n ${ImageQueryFields}\r\n }\r\n}`;\r\n\r\nexport const ImagesUpdateMutation = (requestArguments) => UpdateMutation(requestArguments);\r\n\r\nconst InsertMutation = ({ builderId, communityId, planId, specId, lotId, brandId, originalPath, imageTitle, imageDescription, processorStatusId, imageTypeCode, fileSize, imageSequence, clickthruUrl }) => `\r\n mutation${empty(originalPath) ? `($file: Upload)` : ``} {\r\n insertImage(\r\n ${empty(originalPath) ? `file: $file,` : ``}\r\n sitePage: \"${getSitePage()}\"\r\n builderId: ${builderId},\r\n imageTypeCode: ${imageTypeCode},\r\n ${!empty(communityId) ? `communityId: ${communityId},` : ``}\r\n ${!empty(planId) ? `planId: ${planId},` : ``}\r\n ${!empty(specId) ? `specificationId: ${specId},` : ``}\r\n ${!empty(lotId) ? `lotId: ${lotId},` : ``}\r\n ${!empty(brandId) ? `brandId: ${brandId},` : ``}\r\n ${!empty(originalPath) ? `originalPath: ${JSONText(originalPath)},` : ``}\r\n ${!empty(clickthruUrl) ? `clickthruUrl: ${JSONText(clickthruUrl)},` : ``} \r\n ${!empty(imageTitle) ? `imageTitle: ${JSONText(imageTitle)},` : ``}\r\n ${!empty(imageDescription) ? `imageDescription: ${JSONText(imageDescription)},` : ``}\r\n ${!empty(fileSize) ? `fileSize: ${fileSize},` : ``}\r\n ${!empty(processorStatusId) ? `, processorStatusId: ${processorStatusId}` : ``} \r\n ${!empty(imageSequence) ? `imageSequence: ${imageSequence},` : ``}\r\n ) {\r\n ${ImageQueryFields}\r\n }\r\n }\r\n`;\r\n\r\nexport const ImagesInsertMutation = (requestArguments) => InsertMutation(requestArguments);\r\n\r\nconst UpdateBulkMutation = (items) => `\r\nmutation {\r\n ${items.map(\r\n ({ imageId, imageTitle, imageDescription, imageTypeCode, imageSequence, loadStatusId, clickthruUrl }) => `\r\n image${imageId}: updateImage(\r\n imageId: ${imageId}\r\n sitePage: \"${getSitePage()}\"\r\n ${!empty(loadStatusId) ? `, loadStatusId: ${loadStatusId}` : ``}\r\n ${!empty(imageTitle) ? `, imageTitle: ${JSONText(imageTitle)}` : ``}\r\n ${!empty(imageDescription) ? `, imageDescription: ${JSONText(imageDescription)}` : ``}\r\n ${!empty(imageTypeCode) ? `, imageTypeCode: ${imageTypeCode}` : ``}\r\n ${!empty(imageSequence) ? `, imageSequence: ${imageSequence}` : ``}) {\r\n ${!empty(clickthruUrl) ? `clickthruUrl: ${JSONText(clickthruUrl)},` : ``} \r\n ...ImageFragment\r\n }\r\n `\r\n )}\r\n \r\n}\r\nfragment ImageFragment on Image {\r\n ${ImageQueryFields}\r\n}`;\r\n\r\nexport const ImagesUpdateBulkMutation = (requestArguments) => UpdateBulkMutation(requestArguments);\r\n\r\nconst InsertBulkMutation = (items) => `\r\nmutation {\r\n ${items.map(\r\n ({ builderId, communityId, planId, specId, lotId, brandId, originalPath, imageTitle, imageDescription, imageTypeCode, fileSize, imageSequence, clickthruUrl }, index) => `\r\n image${index}: insertImage( \r\n sitePage: \"${getSitePage()}\"\r\n ${!empty(builderId) ? `builderId: ${builderId},` : ``}\r\n ${!empty(communityId) ? `communityId: ${communityId},` : ``}\r\n ${!empty(planId) ? `planId: ${planId},` : ``}\r\n ${!empty(specId) ? `specificationId: ${specId},` : ``}\r\n ${!empty(lotId) ? `lotId: ${lotId},` : ``}\r\n ${!empty(brandId) ? `brandId: ${brandId},` : ``}\r\n ${!empty(originalPath) ? `originalPath: ${JSONText(originalPath)},` : ``}\r\n ${!empty(imageTitle) ? `imageTitle: ${JSONText(imageTitle)},` : ``}\r\n ${!empty(clickthruUrl) ? `clickthruUrl: ${JSONText(clickthruUrl)},` : ``} \r\n ${!empty(imageDescription) ? `imageDescription: ${JSONText(imageDescription)},` : ``}\r\n ${!empty(imageTypeCode) ? `imageTypeCode: ${imageTypeCode},` : ``}\r\n ${!empty(fileSize) ? `fileSize: ${fileSize},` : ``}\r\n ${!empty(imageSequence) ? `imageSequence: ${imageSequence},` : ``}\r\n ) {\r\n ...ImageFragment\r\n }\r\n `\r\n )}\r\n}\r\nfragment ImageFragment on Image {\r\n ${ImageQueryFields}\r\n}`;\r\n\r\nexport const ImagesInsertBulkMutation = (requestArguments) => InsertBulkMutation(requestArguments);\r\n\r\nconst CopyBulkMutation = (items) => `\r\nmutation {\r\n ${items.map(\r\n ({ imageId, builderId, communityId, planId, specId, brandId }, index) => `\r\n copy${index}: copyImage( \r\n ${!empty(imageId) ? `imageId: [${imageId}],` : ``}\r\n ${!empty(brandId) ? `brandId: ${brandId}, imageTypeCode: BRD,` : ``}\r\n ${!empty(builderId) ? `builderId: ${builderId},` : ``}\r\n ${!empty(communityId) && !brandId ? `communityId: ${communityId}` : ``}\r\n ${!empty(planId) && !brandId ? `planId: ${planId},` : ``}\r\n ${!empty(specId) && !brandId ? `specificationId: ${specId},` : ``}\r\n ) {\r\n ...ImageFragment\r\n }\r\n `\r\n )}\r\n}\r\nfragment ImageFragment on Image {\r\n ${ImageQueryFields}\r\n}`;\r\n\r\nexport const ImagesCopyBulkMutation = (requestArguments) => CopyBulkMutation(requestArguments);\r\n\r\nexport const ImageQueryFields = ` imageId,\r\n imageSequence,\r\n imageTitle,\r\n imageName,\r\n imageDescription,\r\n imageTypeCode,\r\n localPath,\r\n displayStatusId,\r\n brandId,\r\n builderId,\r\n communityId,\r\n specificationId,\r\n planId,\r\n lotId,\r\n brandId,\r\n templateId,\r\n primaryFlag,\r\n loadStatusId,\r\n dateStamp,\r\n dateLastDownload,\r\n statusTimestamp,\r\n fileSize,\r\n processorStatusId,\r\n originalPath,\r\n clickthruUrl,\r\n `;\r\n\r\nexport const ImageEntitiesFields = `builder {\r\n builderId,\r\n builderName\r\n },\r\n community {\r\n id,\r\n name\r\n },\r\n plan {\r\n id,\r\n name\r\n },\r\n spec {\r\n id,\r\n number\r\n }\r\n `;\r\n","import { JSONText } from '../../../../utils/bdx-lodash-lite/json/text';\r\nimport { empty, isNullish } from '../../../../utils/bdx-lodash-lite';\r\nimport { getSitePage } from '@/utils/routing/router-helpers';\r\n\r\nexport const InteractiveMediaQueryFields = `\r\n id,\r\n communityId,\r\n planId,\r\n specId,\r\n lotId,\r\n type,\r\n title,\r\n sequence,\r\n websiteUrl,\r\n embedCode,\r\n displayOn,\r\n flash,\r\n status\r\n `;\r\n\r\nconst Query = ({ filter: { key, value } = {}, sortColumns = '[{sortOrder: Asc, columnName: \"sequence\"}]', status = ['Active'] }) => `{\r\n interactiveMedias(${key && value ? `${key}: ${value},` : ''}${sortColumns ? `sortColumns:${sortColumns},` : ``}status:[${status}]) { \r\n ${InteractiveMediaQueryFields}\r\n }\r\n}\r\n`;\r\n\r\nconst InsertMutation = ({ communityId, planId, specId, lotId, type, title, sequence, websiteUrl, embedCode, displayOn, flash }) => `mutation {\r\n insertInteractiveMedia(\r\n sitePage: \"${getSitePage()}\"\r\n ${!empty(communityId) ? `communityId: ${communityId},` : ``}\r\n ${!empty(planId) ? `planId: ${planId},` : ``}\r\n ${!empty(specId) ? `specId: ${specId},` : ``}\r\n ${!empty(lotId) ? `lotId: ${lotId},` : ``}\r\n ${!empty(type) ? `type: ${type},` : ``}\r\n ${!empty(title) ? `title: ${JSONText(title)},` : ``}\r\n ${!empty(sequence) ? `sequence: ${sequence},` : ``}\r\n ${!empty(websiteUrl) ? `websiteUrl: ${JSONText(websiteUrl)},` : ``}\r\n ${`embedCode: ${JSONText(embedCode || '')},`}\r\n ${!empty(displayOn) ? `displayOn: [${Array.from(displayOn).join(',')}],` : ``}\r\n ${!empty(flash) ? `flash: ${flash},` : ``}\r\n ) {\r\n ${InteractiveMediaQueryFields}\r\n }\r\n}`;\r\n\r\nconst UpdateMutation = ({ id, type, title, sequence, websiteUrl, embedCode, displayOn, flash, status } = {}) => `\r\nmutation{\r\n updateInteractiveMedia( \r\n id: ${id},\r\n sitePage: \"${getSitePage()}\"\r\n ${!empty(type) ? `type: ${type},` : ``}\r\n ${!empty(title) ? `title: ${JSONText(title)},` : ``}\r\n ${!empty(sequence) ? `sequence: ${sequence},` : ``}\r\n ${!isNullish(websiteUrl) ? `websiteUrl: ${JSONText(websiteUrl)},` : ``}\r\n ${!empty(embedCode) ? `embedCode: ${JSONText(embedCode)},` : ``}\r\n ${!empty(displayOn) ? `displayOn: [${Array.from(displayOn).join(',')}],` : ``}\r\n ${!empty(flash) ? `flash: ${flash},` : ``}\r\n ${!empty(status) ? `status: ${status},` : ``}\r\n )\r\n {\r\n ${InteractiveMediaQueryFields}\r\n }\r\n}\r\n`;\r\n\r\nconst UpdateBulkMutation = (items) => `\r\nmutation {\r\n ${items.map(\r\n ({ id, type, title, sequence, websiteUrl, embedCode, displayOn, flash, status } = {}) => `\r\n interactiveMedia${id} : updateInteractiveMedia(\r\n id: ${id},\r\n sitePage: \"${getSitePage()}\"\r\n ${!empty(type) ? `type: ${type},` : ``}\r\n ${!empty(title) ? `title: ${JSONText(title)},` : ``}\r\n ${!empty(sequence) ? `sequence: ${sequence},` : ``}\r\n ${!isNullish(websiteUrl) ? `websiteUrl: ${JSONText(websiteUrl)},` : ``}\r\n ${!empty(embedCode) ? `embedCode: ${JSONText(embedCode)},` : ``}\r\n ${!empty(displayOn) ? `displayOn: [${Array.from(displayOn).join(',')}],` : ``}\r\n ${!empty(flash) ? `flash: ${flash},` : ``}\r\n ${!empty(status) ? `status: ${status},` : ``}\r\n )\r\n {\r\n ...InteractiveMediaFragment\r\n }\r\n `\r\n )} \r\n}\r\nfragment InteractiveMediaFragment on InteractiveMedia {\r\n ${InteractiveMediaQueryFields}\r\n}\r\n`;\r\n\r\nexport const InteractiveMediaQuery = (requestArguments) => Query(requestArguments);\r\n\r\nexport const InteractiveMediaInsertMutation = (requestArguments) => InsertMutation(requestArguments);\r\n\r\nexport const InteractiveMediaUpdateMutation = (requestArguments) => UpdateMutation(requestArguments);\r\n\r\nexport const InteractiveMediaUpdateBulkMutation = (requestArguments) => UpdateBulkMutation(requestArguments);\r\n\r\nexport const InteractiveMediaSaveMutation = (added = [], modified = [], deleted = []) => `\r\nmutation {\r\n ${added.map(\r\n ({ id, communityId, planId, specId, lotId, type, title, sequence, websiteUrl, embedCode, displayOn, flash, status } = {}) => `\r\n interactiveMedia${id} : insertInteractiveMedia(\r\n sitePage: \"${getSitePage()}\"\r\n ${communityId && !planId && !specId && !lotId ? `communityId : ${communityId}` : ``}\r\n ${planId && !specId ? `planId : ${planId}` : ``}\r\n ${specId ? `specId : ${specId}` : ``}\r\n ${lotId ? `lotId : ${lotId}` : ``}\r\n ${!empty(type) ? `type: ${type},` : ``}\r\n ${!empty(title) ? `title: ${JSONText(title)},` : ``}\r\n ${!empty(sequence) ? `sequence: ${sequence},` : ``}\r\n ${!empty(websiteUrl) ? `websiteUrl: ${JSONText(websiteUrl)},` : ``}\r\n ${!empty(embedCode) ? `embedCode: ${JSONText(embedCode)},` : ``}\r\n ${!empty(displayOn) ? `displayOn: [${Array.from(displayOn).join(',')}],` : ``}\r\n ${!empty(flash) ? `flash: ${flash},` : ``}\r\n ${!empty(status) ? `status: ${status},` : ``}\r\n )\r\n {\r\n ...InteractiveMediaFragment\r\n }\r\n `\r\n )}\r\n ${modified.map(\r\n ({ id, type, title, sequence, websiteUrl, embedCode, displayOn, flash, status } = {}) => `\r\n interactiveMedia${id} : updateInteractiveMedia(\r\n id: ${id},\r\n sitePage: \"${getSitePage()}\"\r\n ${!empty(type) ? `type: ${type},` : ``}\r\n ${!empty(title) ? `title: ${JSONText(title)},` : ``}\r\n ${!empty(sequence) ? `sequence: ${sequence},` : ``}\r\n ${!isNullish(websiteUrl) ? `websiteUrl: ${JSONText(websiteUrl)},` : ``}\r\n ${!empty(embedCode) ? `embedCode: ${JSONText(embedCode)},` : ``}\r\n ${!empty(displayOn) ? `displayOn: [${Array.from(displayOn).join(',')}],` : ``}\r\n ${!empty(flash) ? `flash: ${flash},` : ``}\r\n ${!empty(status) ? `status: ${status},` : ``}\r\n ){\r\n ...InteractiveMediaFragment\r\n }\r\n `\r\n )}\r\n ${deleted.map(\r\n ({ id, sequence }) => `\r\n interactiveMedia${id} : updateInteractiveMedia(id: ${id}, status: Inactive, sequence: ${sequence}, sitePage: \"${getSitePage()}\"){\r\n ...InteractiveMediaFragment\r\n }\r\n `\r\n )}\r\n}\r\nfragment InteractiveMediaFragment on InteractiveMedia {\r\n ${InteractiveMediaQueryFields}\r\n}\r\n`;\r\n","// All the Ajax calls for Auth module are handled here\r\n\r\nimport apiClient from '../../../../utils/api/api';\r\nimport { empty, isNullish, JSONText } from '../../../../utils/bdx-lodash-lite';\r\nimport { VideoQueryFields } from '../../../../@redux/videos/api';\r\nimport { ImageQueryFields } from '../../../../@redux/images/api';\r\nimport { InteractiveMediaQueryFields } from '../../@redux/interactive-media/api';\r\nimport { dataLocksFields } from '@/constants/bdx-lookups';\r\nimport { getSitePage } from '@/utils/routing/router-helpers';\r\n\r\nconst API_GET_COMMUNITY_CONTEXT_FIELDS = `builder {\r\n builderId,\r\n builderName,\r\n orgTypeCode,\r\n autoFeedFlag,\r\n priceOverrideFlag,\r\n priceSuppressionFlag,\r\n partner {\r\n partnerName,\r\n partnerId\r\n },\r\n brands {\r\n brandId,\r\n brandName\r\n },\r\n displayChannelSelection {\r\n displayOnWeb,\r\n },\r\n parentBuilderId,\r\n parentBuilder {\r\n displayGuidedToursOnNhs,\r\n builderId,\r\n builderName,\r\n canadianData\r\n }\r\n }`;\r\n\r\nconst API_GET_COMMUNITY_FIELDS = `ownerPartnerId, name, number, description, listingType, marketingStatus, builderId, status, billingStatus, marketingStatus, priceOverrideRemoveFlag, priceLow, priceHigh, squareFeetLow, squareFeetHigh,\r\n url, envisionUrl, schedulerUrl, marketingHeadline, marketIsNewRetirement, style, marketName, displayBrandName, dateLastChanged, dateCreated, mlsNameId, priceSuppressionPlanFlag, priceSuppressionSpecFlag,\r\n parentCommunity {\r\n id,\r\n name\r\n },\r\n mlsName {\r\n id,\r\n name\r\n },\r\n zips {\r\n geoLocationId,\r\n city,\r\n cityState,\r\n state,\r\n postalCode\r\n },\r\n market {\r\n id,\r\n name\r\n },\r\n location {\r\n city,\r\n state,\r\n zip,\r\n streetAddress1,\r\n streetAddress2,\r\n geoCoordinatesLock,\r\n market {\r\n id,\r\n name\r\n },\r\n coordinates {\r\n latitude,\r\n longitude,\r\n }\r\n },\r\n salesOffice { email, hours, outOfCommunity, serviceRadius, drivingDirections, streetAddress1, streetAddress2, city, zip, state, geoCoordinatesLock,\r\n market {\r\n id,\r\n name\r\n },\r\n phones {\r\n type,\r\n areaCode ,\r\n number,\r\n extension\r\n },\r\n coordinates{\r\n latitude,\r\n longitude\r\n }\r\n },\r\n salesAgents {\r\n contactId,\r\n name,\r\n title,\r\n email,\r\n phone,\r\n extension,\r\n photoUrl\r\n },\r\n brochures {\r\n id,\r\n title,\r\n sequence,\r\n localPath,\r\n url,\r\n thumbnailUrl\r\n },\r\n pciImage {\r\n imageId,\r\n imageTypeCode,\r\n primaryFlag,\r\n originalPath,\r\n localPath\r\n }`;\r\n\r\n// Data lock fields\r\nconst API_GET_COMMUNITY_DATALOCKS_FIELDS = () =>\r\n `dataLocks { ${Object.keys(dataLocksFields.Community)\r\n .map((k) => dataLocksFields.Community[k])\r\n .join(',')} }`;\r\n\r\n// GET Community Information GraphQL query\r\nconst API_GET_COMMUNITY_INFO_QUERY = (communityId, getDisplayOn = true) => `query {\r\n communities(communityId:${communityId}) {\r\n id,\r\n ${API_GET_COMMUNITY_FIELDS}\r\n ${getDisplayOn ? API_GET_COMMUNITY_INNER_DISPLAYON_FIELDS : ''}\r\n ${API_GET_COMMUNITY_DATALOCKS_FIELDS()}\r\n ${API_GET_COMMUNITY_CONTEXT_FIELDS}\r\n }\r\n}`;\r\n\r\nconst API_GET_COMMUNITY_SCHOOLS_FIELDS = 'schools { id, name }, schoolDistricts { id, name }';\r\n\r\nconst API_GET_COMMUNITY_INNER_DISPLAYON_FIELDS = `channelDisplay {\r\n displayOnKiosk,\r\n displayOnNhs,\r\n displayOnNhsPro,\r\n displayOnRdc,\r\n displayOnSales,\r\n displayOnWeb,\r\n displayOnWebArch\r\n}`;\r\n\r\n// GET Community Information GraphQL query\r\nconst API_GET_COMMUNITY_DISPLAYON_QUERY = (communityId) => `query {\r\n displayChannelSelection(communityId: ${communityId}) {\r\n displayOnKiosk,\r\n displayOnNhs,\r\n displayOnNhsPro,\r\n displayOnRdc,\r\n displayOnSales,\r\n displayOnWeb,\r\n displayOnWebArch\r\n }\r\n}`;\r\n\r\n// GET Community Information GraphQL query\r\nconst API_GET_COMMUNITY_PERFORMANCE = (communityId) => `query {\r\n listingPerformance(communityId: ${communityId}) {\r\n month,\r\n drivingActions,\r\n clickthroughs,\r\n phoneCalls,\r\n leads\r\n }\r\n}`;\r\n\r\nconst API_GET_COMMUNITY_SCHOOLS_QUERY = (communityId, marketId, zip) => `query {\r\n communities(communityId:${communityId}) {\r\n id,\r\n ${API_GET_COMMUNITY_SCHOOLS_FIELDS}\r\n }\r\n ${marketId || zip ? API_GET_MARKET_SCHOOL_DISTRICTS_QUERY(marketId, zip) : ''}\r\n}`;\r\n\r\nconst API_GET_MARKET_SCHOOL_DISTRICTS_QUERY = (marketId, zip) => {\r\n const schoolDistrictFields = '{ id, name, schools { id, districtId, name } }';\r\n const schoolDistrictFilters = (filter) => `schoolDistricts(${filter}) ${schoolDistrictFields}`;\r\n let queryMarket = '';\r\n let queryZip = '';\r\n\r\n if (marketId) queryMarket = `schoolDistricts: ${schoolDistrictFilters(`marketId: ${marketId}`)}`;\r\n if (zip) queryZip = `schoolDistrictsByZip: ${schoolDistrictFilters(`postalCode: \"${zip}\"`)}`;\r\n\r\n return `${queryMarket}${queryZip}`;\r\n};\r\n\r\n// Update Community Information GraphQL quer\r\nconst API_SAVE_COMMUNITY_QUERY = ({ id, ownerPartnerId, builderId, number, name, status, displayBrandName, billingStatus, listingType, marketingStatus, style, marketingHeadline, description, priceOverrideRemoveFlag, priceSuppressionPlanFlag, priceSuppressionSpecFlag, url, priceLow, priceHigh, squareFeetLow, squareFeetHigh, envisionUrl, schedulerUrl, mlsNameId, marketIsNewRetirement, salesAgents, channelDisplay = {}, salesOffice = {}, location = {}, schools, schoolDistricts }, isNew) => {\r\n const { email, hours, outOfCommunity, serviceRadius, streetAddress1: salesAddress1, streetAddress2: salesAddress2, zip: salesZip, city: salesCity, coordinates: { latitude: salesLatitude, longitude: salesLongitude } = {}, drivingDirections, phones = [] } = salesOffice || {};\r\n const { streetAddress1: commAddress1, streetAddress2: commAddress2, zip: commZip, city: commCity, coordinates: { latitude: commLatitude, longitude: commLongitude } = {} } = location || {};\r\n const { displayOnNhs, displayOnWeb, displayOnNhsPro, displayOnKiosk, displayOnSales, displayOnRdc } = channelDisplay || {};\r\n\r\n const salesOfficeFields = `${!empty(salesOffice) && email !== undefined ? `email: \"${email}\",` : ``}\r\n ${!empty(salesOffice) && hours !== undefined ? `hours: \"${hours}\",` : ``}\r\n ${!empty(salesOffice) && outOfCommunity !== undefined ? `outOfCommunity: ${outOfCommunity},` : ``}\r\n ${!empty(salesOffice) && serviceRadius !== undefined ? `serviceRadius: ${serviceRadius},` : ``}\r\n ${!empty(salesOffice) && salesAddress1 !== undefined ? `streetAddress1: ${JSONText(salesAddress1)},` : ``}\r\n ${!empty(salesOffice) && salesAddress2 !== undefined ? `streetAddress2: ${JSONText(salesAddress2)},` : ``}\r\n ${!empty(salesOffice) && salesZip !== undefined ? `zip: \"${salesZip}\",` : ``}\r\n ${!empty(salesOffice) && salesCity !== undefined ? `city: \"${salesCity}\",` : ``}\r\n ${\r\n !empty(salesOffice) && (salesLatitude !== undefined || salesLongitude !== undefined)\r\n ? `\r\n coordinates: {\r\n ${salesLatitude !== undefined ? `latitude: ${Math.abs(salesLatitude)}, ` : ``}\r\n ${salesLongitude !== undefined ? `longitude: -${Math.abs(salesLongitude)}, ` : ``}\r\n },\r\n `\r\n : ``\r\n }\r\n ${!empty(salesOffice) && drivingDirections !== undefined ? `drivingDirections: ${JSONText(drivingDirections)},` : ``}\r\n ${!empty(salesOffice) && phones !== undefined && !empty(phones) ? `phones: [${phones.map((phone) => (empty(phone) ? '' : `{ type: ${phone.type || 'Phone'} ${phone.areaCode !== undefined ? `, areaCode: \"${phone.areaCode || ''}\",` : ''}${phone.number !== undefined ? `, number: \"${phone.number || ''}\"` : ''}${phone.extension !== undefined ? `, extension: \"${phone.extension || ''}\"` : ''}}`)).join(',')}]` : ``}`.trim();\r\n\r\n const locationFields = `${!empty(location) && commAddress1 !== undefined ? `streetAddress1: ${JSONText(commAddress1)},` : ``}\r\n ${!empty(location) && commAddress2 !== undefined ? `streetAddress2: ${JSONText(commAddress2)},` : ``}\r\n ${!empty(location) && commZip !== undefined ? `zip: \"${commZip}\",` : ``}\r\n ${!empty(location) && commCity !== undefined ? `city: \"${commCity}\",` : ``}\r\n ${\r\n !empty(location) && (commLatitude !== undefined || commLongitude !== undefined)\r\n ? `\r\n coordinates: {\r\n ${commLatitude !== undefined ? `latitude: ${Math.abs(commLatitude)}, ` : ``}\r\n ${commLongitude !== undefined ? `longitude: -${Math.abs(commLongitude)}, ` : ``}\r\n },\r\n `\r\n : ``\r\n }`.trim();\r\n\r\n const displayFields = `${!empty(channelDisplay) && displayOnNhs !== undefined ? `displayOnNhs: ${displayOnNhs},` : ``}\r\n ${!empty(channelDisplay) && displayOnWeb !== undefined ? `displayOnWeb: ${displayOnWeb},` : ``}\r\n ${!empty(channelDisplay) && displayOnNhsPro !== undefined ? `displayOnNhsPro: ${displayOnNhsPro},` : ``}\r\n ${!empty(channelDisplay) && displayOnKiosk !== undefined ? `displayOnKiosk: ${displayOnKiosk},` : ``}\r\n ${!empty(channelDisplay) && displayOnSales !== undefined ? `displayOnSales: ${displayOnSales},` : ``}\r\n ${!empty(channelDisplay) && displayOnRdc !== undefined ? `displayOnRdc: ${displayOnRdc},` : ``}`.trim();\r\n\r\n // by default request community main fields\r\n let queryFields = API_GET_COMMUNITY_FIELDS;\r\n\r\n // Request the correct fields based on what the user is saving\r\n if (schools !== undefined || schoolDistricts !== undefined) {\r\n queryFields = API_GET_COMMUNITY_SCHOOLS_FIELDS;\r\n }\r\n\r\n const agentFiles = salesAgents && salesAgents.some((agent) => agent.file);\r\n\r\n return `mutation${\r\n agentFiles\r\n ? `(${salesAgents\r\n .map((agent, index) => {\r\n return agent.file ? `$file${index}: Upload` : null;\r\n })\r\n .filter(Boolean)\r\n .join(',')})`\r\n : ``\r\n } {\r\n ${isNew ? `insertCommunity` : `updateCommunity`} ( \r\n ${isNew ? `` : `id: ${id}`}\r\n sitePage: \"${getSitePage()}\"\r\n ${status !== undefined ? `,status: ${status}` : ``}\r\n ${ownerPartnerId !== undefined ? `,ownerPartnerId: ${ownerPartnerId}` : ``}\r\n ${builderId !== undefined ? `,builderId: ${builderId}` : ``}\r\n ${displayBrandName !== undefined ? `,displayBrandName: ${displayBrandName}` : ``}\r\n ${number !== undefined ? `, number: ${JSONText(number)}` : ``}\r\n ${priceLow !== undefined ? `, priceLow: ${priceLow}` : ``}\r\n ${priceHigh !== undefined ? `, priceHigh: ${priceHigh}` : ``}\r\n ${squareFeetLow !== undefined ? `, squareFeetLow: ${squareFeetLow}` : ``}\r\n ${squareFeetHigh !== undefined ? `, squareFeetHigh: ${squareFeetHigh}` : ``}\r\n ${name !== undefined ? `, name: ${JSONText(name)}` : ``}\r\n ${billingStatus !== undefined ? `, billingStatus: ${billingStatus}` : ``}\r\n ${listingType !== undefined ? `, listingType: ${listingType}` : ``}\r\n ${marketingStatus !== undefined ? `, marketingStatus: ${marketingStatus}` : ``}\r\n ${!isNullish(priceSuppressionSpecFlag) ? `, priceSuppressionSpecFlag: ${priceSuppressionSpecFlag}` : ``}\r\n ${!isNullish(priceSuppressionPlanFlag) ? `, priceSuppressionPlanFlag: ${priceSuppressionPlanFlag}` : ``}\r\n ${!isNullish(priceOverrideRemoveFlag) ? `, priceOverrideRemoveFlag: ${priceOverrideRemoveFlag}` : ``}\r\n ${style ? `, style: [${style.join(',')}]` : ``}\r\n ${marketingHeadline !== undefined ? `, marketingHeadline: ${JSONText(marketingHeadline)}` : ``}\r\n ${description !== undefined ? `, description: ${JSONText(description)}` : ``}\r\n ${url !== undefined ? `, url: \"${url}\"` : ``}\r\n ${envisionUrl !== undefined ? `, envisionUrl: ${JSONText(envisionUrl)}` : ``}\r\n ${schedulerUrl !== undefined ? `, schedulerUrl: ${JSONText(schedulerUrl)}` : ``}\r\n ${mlsNameId !== undefined ? `, mlsNameId: ${mlsNameId}` : ``}\r\n ${marketIsNewRetirement !== undefined ? `, marketIsNewRetirement: ${marketIsNewRetirement}` : ``}\r\n ${!emptySalesAgents(salesAgents) ? `, salesAgents: [${salesAgents.map((agent, index) => agentMutation(agent, index)).join(',')}]` : ``}\r\n ${!empty(salesOffice) ? `, salesOffice: { ${salesOfficeFields} }` : ``}\r\n ${!empty(location) ? `, location: { ${locationFields} }` : ``}\r\n ${!empty(displayFields) ? `, channelDisplay: { ${displayFields} }` : ``}\r\n ${schools !== undefined ? `schoolIds: [${schools.map((schoolId) => schoolId).join(',')}]` : ``}\r\n ${schoolDistricts !== undefined ? `districtIds: [${schoolDistricts.map((districtId) => districtId).join(',')}]` : ``})\r\n {\r\n id,\r\n ${queryFields}\r\n ${API_GET_COMMUNITY_CONTEXT_FIELDS}\r\n }\r\n }`.trim();\r\n};\r\n\r\nconst emptySalesAgents = (agents) => {\r\n return empty(agents) || agents.every((a) => empty(a) || a.contactId === -1); // removed the mpc condition for no name, this is handled in the ui, and introduce a problem when updates other fields\r\n};\r\n\r\nconst agentMutation = (agent, index) => {\r\n if ((empty(agent.name) && agent.contactId === 0) || agent.contactId === -1 || agent.contactId === undefined) return '';\r\n return `{ ${agent.contactId !== 0 ? `contactId: ${agent.contactId},` : ''}\r\n ${agent.name !== undefined ? `name: ${JSONText(agent.name || '')},` : ''}\r\n ${agent.title !== undefined ? `title: ${JSONText(agent.title || '')},` : ''}\r\n ${agent.email !== undefined ? `email: ${JSONText(agent.email || '')},` : ''}\r\n ${agent.phone !== undefined ? `phone: ${JSONText(agent.phone || '')},` : ''}\r\n ${agent.extension !== undefined ? `extension: ${JSONText(agent.extension || '')},` : ''}\r\n ${agent.file ? `photo: $file${index}` : ''}\r\n ${agent.deleteAssociatedFile ? `deleteAssociatedFile: true` : ''}}`;\r\n};\r\n\r\nconst API_UPDATE_COMMUNITY_SCHOOLS_QUERY = (communityId, districts, schools) =>\r\n `mutation {\r\n updateCommunity(id: ${communityId},\r\n schoolDistricts: [${districts.map((districtId) => districtId).join(',')}],\r\n schools: [${schools.map((schoolId) => schoolId).join(',')}])\r\n {\r\n id,\r\n ${API_GET_COMMUNITY_SCHOOLS_FIELDS}\r\n }\r\n }`;\r\n\r\nconst API_GET_COMMUNITY_VIDEOS_QUERY = ({ filter: { key, value } = {}, typeCodes, sortColumns = '[{order: Asc, field: Sequence}]', status = ['Active'] }) => `\r\n{\r\n communities(${key && value ? `${key}: ${value},` : ''}) {\r\n id,\r\n videos(\r\n ${typeCodes ? `typeCodes:[${typeCodes}],` : ''}\r\n ${sortColumns ? `sortBy:${sortColumns},` : ``}\r\n status:[${status}],\r\n bdxProvided: false) {\r\n ${VideoQueryFields}\r\n }\r\n videoCount\r\n }\r\n}\r\n`;\r\n\r\n/**\r\n * Image and Video implementations\r\n */\r\nconst API_GET_COMMUNITY_IMAGES_QUERY = ({ filter: { key, value } = {}, typeCodes, sortColumns = '[{order: Asc, field: ImageSequence}]', status = ['Active'], preferredFlag } = {}) => `{\r\n communities(${key && value ? `${key}: ${value},` : ''}) {\r\n id,\r\n images(\r\n ${typeCodes ? `typeCodes:[${typeCodes}],` : ''}\r\n ${sortColumns ? `sortBy:${sortColumns},` : ``}\r\n ${preferredFlag ? `preferredFlag:${preferredFlag},` : ``}\r\n status:[${status}]\r\n ) {\r\n ${ImageQueryFields}\r\n }\r\n imageCounter {\r\n count,\r\n type\r\n }\r\n imageCounterNonInherited: imageCounter(inheritance: false) {\r\n count,\r\n type\r\n }\r\n }\r\n}\r\n`;\r\n\r\nconst API_GET_INTERACTIVE_MEDIA_QUERY = ({ communityId, status = ['Active'] }) => `\r\n{\r\n communities(communityId: ${communityId}){\r\n id\r\n interactiveMedias(status:[${status.join(', ')}]){\r\n ${InteractiveMediaQueryFields}\r\n }\r\n }\r\n}\r\n`;\r\n\r\nconst API_GET_PARTNERS_BY_COMMUNITY_QUERY = (communityId) => `\r\nquery {\r\n communityPartners: partners(webArchCommId: ${communityId}){\r\n partnerId,\r\n partnerName\r\n }\r\n}\r\n`;\r\n\r\n/**\r\n * @param { Array } params.communityId\r\n * @param { Array } params.partnerIds\r\n */\r\nexport const API_INSERT_ACTIVATE_COMMUNITY = ({ communityId, partnerIds }) => `\r\nmutation {\r\n activateWebArchCommunity(\r\n communityId: ${communityId}\r\n partnerIds: [${partnerIds.join(', ')}]\r\n ) {\r\n id,\r\n partners {\r\n partnerName,\r\n partnerId\r\n } }\r\n}\r\n`;\r\n\r\nexport const requestMlsNames = () => `\r\nquery { \r\n mlsNames {\r\n id\r\n name\r\n }\r\n}`;\r\n\r\nexport const updateCommunityStatusMutation = ({ id, status }) =>\r\n `mutation {\r\n updateCommunity(id: ${id}, status: ${status}) {\r\n id\r\n status\r\n }\r\n }`;\r\n\r\n/**\r\n * Queries execution to be used from community Sagas\r\n */\r\nexport const requestCommunityApi = (communityId, getDisplayOn) => apiClient.post(null, { query: API_GET_COMMUNITY_INFO_QUERY(communityId, getDisplayOn) });\r\n\r\nexport const requestCommunityDisplayOnApi = (communityId) => apiClient.post(null, { query: API_GET_COMMUNITY_DISPLAYON_QUERY(communityId) });\r\n\r\nexport const requestCommunityPerformanceApi = (communityId) => apiClient.post(null, { query: API_GET_COMMUNITY_PERFORMANCE(communityId) });\r\n\r\nexport const updateCommunityMutation = (community) => API_SAVE_COMMUNITY_QUERY(community, false);\r\n\r\nexport const insertCommunityMutation = (community) => API_SAVE_COMMUNITY_QUERY(community, true);\r\n\r\nexport const saveCommunityMutation = (community) => API_SAVE_COMMUNITY_QUERY(community, !community.id);\r\n\r\nexport const updateCommunitySchoolsMutation = (communityId, districts, schools) => API_UPDATE_COMMUNITY_SCHOOLS_QUERY(communityId, districts, schools);\r\n\r\nexport const requestMarketSchoolDistrict = (marketId, zip) => apiClient.post(null, { query: `{${API_GET_MARKET_SCHOOL_DISTRICTS_QUERY(marketId, zip)}}` });\r\n\r\nexport const CommunityPartnersQuery = (communityId) => apiClient.post(null, { query: API_GET_PARTNERS_BY_COMMUNITY_QUERY(communityId) });\r\n\r\n/**\r\n * Queries to use with the Models Saga\r\n */\r\n\r\nexport const requestMarketSchoolDistrictsQuery = (marketId, zip) => `{${API_GET_MARKET_SCHOOL_DISTRICTS_QUERY(marketId, zip)}}`;\r\n\r\nexport const requestCommunitySchoolsQuery = (communityId, marketId, zip) => API_GET_COMMUNITY_SCHOOLS_QUERY(communityId, marketId, zip);\r\n\r\nexport const CommunityImagesQuery = (requestArguments) => API_GET_COMMUNITY_IMAGES_QUERY(requestArguments);\r\n\r\nexport const CommunityVideosQuery = (requestArguments) => API_GET_COMMUNITY_VIDEOS_QUERY(requestArguments);\r\n\r\nexport const CommunityInteractiveMediaQuery = (requestArguments) => API_GET_INTERACTIVE_MEDIA_QUERY(requestArguments);\r\n","/**\r\n This is where you define your action creators. All action creators must be functions\r\n that return an object with at least the type property. We do not define any async\r\n logic in this file.\r\n*/\r\n\r\n/**\r\n * Generic Community Request Actions\r\n */\r\n\r\nimport { QueryRequestAction, QuerySuccessAction, QueryFailAction } from '@/redux/models/actions';\r\nimport {\r\n COMMUNITY_DISPLAY_REQUEST,\r\n COMMUNITY_DISPLAY_SUCCESS,\r\n COMMUNITY_DISPLAY_FAIL,\r\n COMMUNITY_DETAIL_REQUEST,\r\n COMMUNITY_DETAIL_SUCCESS,\r\n COMMUNITY_DETAIL_FAIL,\r\n COMMUNITY_DATACOMPLETENESS_REQUEST,\r\n COMMUNITY_DATACOMPLETENESS_SUCCESS,\r\n COMMUNITY_DATACOMPLETENESS_FAIL,\r\n COMMUNITY_DETAIL_SAVE_REQUEST,\r\n COMMUNITY_DETAIL_SAVE_SUCCESS,\r\n COMMUNITY_DETAIL_SAVE_FAIL,\r\n COMMUNITY_IMAGES_QUERY_REQUEST,\r\n COMMUNITY_IMAGES_QUERY_SUCCESS,\r\n COMMUNITY_IMAGES_QUERY_FAIL,\r\n COMMUNITY_VIDEOS_QUERY_REQUEST,\r\n COMMUNITY_VIDEOS_QUERY_SUCCESS,\r\n COMMUNITY_VIDEOS_QUERY_FAIL,\r\n MARKET_SCHOOL_DISTRICTS_REQUEST,\r\n COMMUNITY_SCHOOLS_REQUEST,\r\n COMMUNITY_SCHOOLS_SUCCESS,\r\n COMMUNITY_SCHOOLS_FAIL,\r\n MARKET_SCHOOL_DISTRICTS_SUCCESS,\r\n MARKET_SCHOOL_DISTRICTS_FAIL,\r\n COMMUNITY_INTERACTIVE_MEDIA_QUERY_REQUEST,\r\n COMMUNITY_INTERACTIVE_MEDIA_QUERY_SUCCESS,\r\n COMMUNITY_INTERACTIVE_MEDIA_QUERY_FAIL,\r\n COMMUNITY_PERFORMANCE_REQUEST,\r\n COMMUNITY_PERFORMANCE_SUCCESS,\r\n COMMUNITY_PERFORMANCE_FAIL,\r\n COMMUNITY_PARTNER_REQUEST,\r\n COMMUNITY_PARTNER_SUCCESS,\r\n COMMUNITY_PARTNER_FAIL,\r\n ACTIVATE_WEBARCH_COMMUNITIES_FAIL,\r\n ACTIVATE_WEBARCH_COMMUNITIES_REQUEST,\r\n ACTIVATE_WEBARCH_COMMUNITIES_SUCCESS,\r\n MLS_NAMES_REQUEST,\r\n MLS_NAMES_SUCCESS,\r\n MLS_NAMES_FAIL,\r\n COMMUNITY_STATUS_UPDATE_FAIL,\r\n COMMUNITY_STATUS_UPDATE_SUCCESS,\r\n COMMUNITY_STATUS_UPDATE_REQUEST,\r\n} from './types';\r\nimport { modelRequestSchema, modelMutateSchema } from '../../../../app.entities';\r\nimport { insertCommunityMutation, updateCommunityMutation, CommunityImagesQuery, CommunityVideosQuery, requestMarketSchoolDistrictsQuery, requestCommunitySchoolsQuery, CommunityInteractiveMediaQuery, API_INSERT_ACTIVATE_COMMUNITY, requestMlsNames, updateCommunityStatusMutation } from './api';\r\nimport { Community } from '@/models/Community';\r\nimport { MutationFailAction, MutationSuccessAction } from '@/redux/forms/actions';\r\n\r\n/**\r\n * Community Info Requests Actions\r\n */\r\nexport const communityDetailRequest = (communityId, loadZipLocations = true) => ({ type: COMMUNITY_DETAIL_REQUEST, data: { communityId, entityId: communityId, loadZipLocations }, meta: { model: Community() } });\r\n\r\nexport const communityDetailSuccess = (communities, communityId) => ({ type: COMMUNITY_DETAIL_SUCCESS, data: { entityId: communityId, entities: communities }, meta: { model: Community(), schema: modelRequestSchema } });\r\n\r\nexport const communityDetailFail = (error, communityId) => ({ type: COMMUNITY_DETAIL_FAIL, error: true, data: { entityId: communityId, appMessage: 'Error loading community detail information', errorMessage: error.message }, meta: { model: Community() } });\r\n\r\nexport const communityPerformanceRequest = (communityId) => ({ type: COMMUNITY_PERFORMANCE_REQUEST, data: { communityId, entityId: communityId }, meta: { model: Community() } });\r\n\r\nexport const communityPerformanceSuccess = (communities, communityId) => ({ type: COMMUNITY_PERFORMANCE_SUCCESS, data: { entityId: communityId, entities: communities }, meta: { model: Community(), schema: modelRequestSchema } });\r\n\r\nexport const communityPerformanceFail = (error, communityId) => ({ type: COMMUNITY_PERFORMANCE_FAIL, error: true, data: { entityId: communityId, appMessage: 'Error loading community performance information', errorMessage: error.message }, meta: { model: Community() } });\r\n\r\nexport const communityDataCompletenessRequest = (builderId, communityId) => ({ type: COMMUNITY_DATACOMPLETENESS_REQUEST, data: { communityId, builderId, entityId: communityId }, meta: { model: Community() } });\r\n\r\nexport const communityDataCompletenessSuccess = (communities, communityId) => ({ type: COMMUNITY_DATACOMPLETENESS_SUCCESS, data: { entityId: communityId, entities: communities }, meta: { model: Community(), schema: modelRequestSchema } });\r\n\r\nexport const communityDataCompletenessFail = (error, communityId) => ({ type: COMMUNITY_DATACOMPLETENESS_FAIL, error: true, data: { entityId: communityId, appMessage: 'Error loading community data completeness information', errorMessage: error.message }, meta: { model: Community() } });\r\n\r\nexport const communityDisplayChannelRequest = (data) => {\r\n const communityId = data.id || data.updateCommunity?.id || data.insertCommunity?.id || data;\r\n return {\r\n type: COMMUNITY_DISPLAY_REQUEST,\r\n data: {\r\n entityId: communityId,\r\n communityId,\r\n },\r\n meta: { model: Community() },\r\n };\r\n};\r\n\r\nexport const communityDisplayChannelSuccess = (communities, communityId) => ({ type: COMMUNITY_DISPLAY_SUCCESS, data: { entityId: communityId, entities: communities }, meta: { model: Community(), schema: modelRequestSchema } });\r\n\r\nexport const communityDisplayChannelFail = (error, communityId) => ({ type: COMMUNITY_DISPLAY_FAIL, error: true, data: { entityId: communityId, appMessage: 'Error loading community detail information', errorMessage: error.message }, meta: { model: Community() } });\r\n\r\n/**\r\n * Generic Community Mutations Actions\r\n */\r\nexport const communitySaveRequest = (communityId, formData, isNew, onlyChangesInArrays = []) => ({\r\n type: COMMUNITY_DETAIL_SAVE_REQUEST,\r\n data: { entityId: communityId, arrayOnlyChanges: onlyChangesInArrays },\r\n mutation: isNew ? insertCommunityMutation : updateCommunityMutation,\r\n meta: { formData, model: Community(), schema: modelMutateSchema },\r\n});\r\n\r\nexport const communitySaveSuccess = (entities, meta, communityId) => ({ type: COMMUNITY_DETAIL_SAVE_SUCCESS, data: { entityId: communityId, entities: { communities: [entities.updateCommunity || entities.insertCommunity] } }, meta: { model: Community(), schema: modelRequestSchema } });\r\n\r\nexport const communitySaveFail = (error, communityId) => ({ type: COMMUNITY_DETAIL_SAVE_FAIL, error: true, data: { entityId: communityId, appMessage: convertCommunityErrorMessage(error), errorMessage: error.message }, meta: { model: Community() } });\r\n\r\n/**\r\n * Based on the posible errors returned by the community mutation, choose the proper error message for the UI\r\n */\r\nconst convertCommunityErrorMessage = (error) => {\r\n const message = error.message?.toLowerCase();\r\n if (message?.includes('geo-coordinates are not within the city associated with the zip you entered')) return 'Your geocoordinates for this community are not within the city associated with the ZIP you entered, please check them again';\r\n return 'Error saving the community information, please try again';\r\n};\r\n\r\n/**\r\n * Community Schools Request Queries\r\n */\r\nexport const communitySchoolsQueryRequest = (communityId, marketId, zip) => ({ type: COMMUNITY_SCHOOLS_REQUEST, data: { entityId: communityId, marketId, zip }, query: requestCommunitySchoolsQuery(communityId, marketId, zip), meta: { schema: modelRequestSchema, model: Community() } });\r\n\r\nexport const communitySchoolsQuerySuccess = (entities, meta, communityId) => ({ type: COMMUNITY_SCHOOLS_SUCCESS, data: { entityId: communityId, entities }, meta });\r\n\r\nexport const communitySchoolsQueryFail = (error, communityId) => ({ type: COMMUNITY_SCHOOLS_FAIL, error: true, data: { entityId: communityId, error } });\r\n\r\nexport const marketSchoolDistrictsQueryRequest = (marketId, zip) => ({ type: MARKET_SCHOOL_DISTRICTS_REQUEST, data: { marketId, zip }, query: requestMarketSchoolDistrictsQuery(marketId, zip), meta: { schema: modelRequestSchema } });\r\n\r\nexport const marketSchoolDistrictsQuerySuccess = (entities, meta) => ({ type: MARKET_SCHOOL_DISTRICTS_SUCCESS, data: { entities }, meta });\r\n\r\nexport const marketSchoolDistrictsQueryFail = (error) => ({ type: MARKET_SCHOOL_DISTRICTS_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Community Image Request\r\n */\r\n/**\r\n * Model Request Action Creator Images\r\n * @param {*} requestArguments api request\r\n */\r\nexport const communityImagesQueryRequest = QueryRequestAction(COMMUNITY_IMAGES_QUERY_REQUEST, CommunityImagesQuery);\r\n/**\r\n * Model success action creator for Images\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const communityImagesQuerySuccess = QuerySuccessAction(COMMUNITY_IMAGES_QUERY_SUCCESS);\r\n\r\n/**\r\n * Model request fail action creator for Images\r\n * @param {*} error cause\r\n */\r\nexport const communityImagesQueryFail = QueryFailAction(COMMUNITY_IMAGES_QUERY_FAIL);\r\n\r\n/**\r\n * Community video Request\r\n */\r\n/**\r\n * Model Request Action Creator Videos\r\n * @param {*} requestArguments api request\r\n */\r\nexport const communityVideosQueryRequest = QueryRequestAction(COMMUNITY_VIDEOS_QUERY_REQUEST, CommunityVideosQuery);\r\n/**\r\n * Model success action creator for Videos\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const communityVideosQuerySuccess = QuerySuccessAction(COMMUNITY_VIDEOS_QUERY_SUCCESS);\r\n\r\n/**\r\n * Model request fail action creator for Videos\r\n * @param {*} error cause\r\n */\r\nexport const communityVideosQueryFail = QueryFailAction(COMMUNITY_VIDEOS_QUERY_FAIL);\r\n\r\n/**\r\n * Community Interactive Media Request\r\n */\r\n/**\r\n * Model Request Action Creator Interactive Media\r\n * @param {*} requestArguments api request\r\n */\r\nexport const communityInteractiveMediaQueryRequest = QueryRequestAction(COMMUNITY_INTERACTIVE_MEDIA_QUERY_REQUEST, CommunityInteractiveMediaQuery);\r\n/**\r\n * Model success action creator for Interactive Media\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const communityInteractiveMediaQuerySuccess = QuerySuccessAction(COMMUNITY_INTERACTIVE_MEDIA_QUERY_SUCCESS);\r\n\r\n/**\r\n * Model request fail action creator for Interactive Media\r\n * @param {*} error cause\r\n */\r\nexport const communityInteractiveMediaQueryFail = QueryFailAction(COMMUNITY_INTERACTIVE_MEDIA_QUERY_FAIL);\r\n\r\nexport const communityPartnerRequest = (communityId) => ({ type: COMMUNITY_PARTNER_REQUEST, data: { communityId, entityId: communityId }, meta: { model: Community() } });\r\nexport const communityPartnerSuccess = (communityPartners, communityId) => ({ type: COMMUNITY_PARTNER_SUCCESS, data: { entityId: communityId, entities: communityPartners }, meta: { model: Community(), schema: modelRequestSchema } });\r\nexport const communityPartnerFail = (error, communityId) => ({ type: COMMUNITY_PARTNER_FAIL, error: true, data: { entityId: communityId, appMessage: 'Error loading partners detail information', errorMessage: error.message }, meta: { model: Community() } });\r\n\r\nexport const activateWebArchCommunityRequest = ({ communityId, partnerIds, id, model, noEntity }) => ({\r\n type: ACTIVATE_WEBARCH_COMMUNITIES_REQUEST,\r\n mutation: API_INSERT_ACTIVATE_COMMUNITY({ communityId, partnerIds }),\r\n data: { id },\r\n meta: { model, schema: modelMutateSchema },\r\n noEntity,\r\n});\r\nexport const activateWebArchCommunitySuccess = MutationSuccessAction(ACTIVATE_WEBARCH_COMMUNITIES_SUCCESS);\r\nexport const activateWebArchCommunityFail = MutationFailAction(ACTIVATE_WEBARCH_COMMUNITIES_FAIL);\r\n\r\nexport const mlsNamesRequest = QueryRequestAction(MLS_NAMES_REQUEST, requestMlsNames);\r\nexport const mlsNamesSuccess = QuerySuccessAction(MLS_NAMES_SUCCESS);\r\nexport const mlsNamesFail = QueryFailAction(MLS_NAMES_FAIL);\r\n\r\nexport const updateCommunityStatusRequest = ({ id, status }) => ({\r\n type: COMMUNITY_STATUS_UPDATE_REQUEST,\r\n mutation: updateCommunityStatusMutation({ id, status }),\r\n data: { id },\r\n meta: { model: Community(), schema: modelMutateSchema },\r\n noEntity: true,\r\n});\r\nexport const updateCommunityStatusSuccess = MutationSuccessAction(COMMUNITY_STATUS_UPDATE_SUCCESS);\r\nexport const updateCommunityStatusFail = MutationFailAction(COMMUNITY_STATUS_UPDATE_FAIL);\r\n","import { communitySaveRequest } from '@/modules/listings-detail/community-detail/@redux/actions';\r\nimport { saveCommunityMutation } from '@/modules/listings-detail/community-detail/@redux/api';\r\nimport { GraphQLQuery } from '../utils/api/graph-helpers';\r\nimport { Model } from '../utils/models';\r\nimport { communitySchema } from '../app.entities';\r\nimport { Division } from './Division';\r\nimport { communityContextRequest } from '../@redux/context/actions';\r\n\r\nexport class CommunityModel extends Model {\r\n name = 'communities';\r\n\r\n alterEgo = 'master planned communities';\r\n\r\n model = 'community';\r\n\r\n parent = Division();\r\n\r\n query = new GraphQLQuery([\r\n {\r\n operation: 'communities',\r\n argument: {},\r\n fields: ['id', 'name', 'statusId'],\r\n },\r\n ]);\r\n\r\n mutations = { update: communitySaveRequest, save: saveCommunityMutation };\r\n\r\n contextRequest = communityContextRequest;\r\n\r\n describerFields = {\r\n id: 'id',\r\n name: 'name',\r\n status: 'status',\r\n relation: 'community',\r\n relationId: 'communityId',\r\n };\r\n\r\n urlKey = 'communityId';\r\n\r\n schema = communitySchema;\r\n\r\n template = (id, context) => {\r\n return {\r\n id,\r\n number: '',\r\n dateLastChanged: Date(),\r\n marketingStatus: 'Normal',\r\n billingStatus: 'None',\r\n listingType: 'Normal',\r\n salesOffice: { outOfCommunity: false },\r\n builder: {},\r\n channelDisplay: { displayOnNhs: false },\r\n listingPerformance: {},\r\n communityPartners: {},\r\n priceLow: 0,\r\n priceHigh: 0,\r\n squareFeetLow: 0,\r\n squareFeetHigh: 0,\r\n ...context,\r\n };\r\n };\r\n}\r\nexport const Community = () => new CommunityModel();\r\n","/* eslint-disable no-restricted-globals */\r\n/* eslint-disable no-nested-ternary */\r\n// All the Ajax calls for Auth module are handled here\r\nimport apiClient from '../../../../utils/api/api';\r\nimport { empty, JSONText } from '../../../../utils/bdx-lodash-lite';\r\nimport { VideoQueryFields } from '../../../../@redux/videos/api';\r\nimport { ImageQueryFields } from '../../../../@redux/images/api';\r\nimport { InteractiveMediaQueryFields } from '../../@redux/interactive-media/api';\r\nimport { dataLocksFields } from '@/constants/bdx-lookups';\r\nimport { getSitePage } from '@/utils/routing/router-helpers';\r\n\r\nexport const BULK_PRICE_PLAN_FIELDS = `id, basePrice`;\r\n\r\nexport const BASIC_BULK_PLAN_FIELDS = `id, number, name, status, basePrice, hotHome { title, description }, dateLastChanged, type, display, squareFeet, url, description, virtualTourUrl, planViewerUrl, masterBedLocation, beds, baths, halfBaths, garages, stories, community { id, name }`;\r\n\r\nexport const BASIC_PLAN_FIELDS = `id, number, name, status, dateCreated, dateLastChanged, basePrice, previousPrice, type, display, priceExcludesLand, squareFeet, stories, \r\n parentFlag, parentPlanId, masterBedLocation, beds, baths, halfBaths, garages, basementIncluded, livingAreas, amenities, url, marketingHeadline, \r\n description, virtualTourUrl, planViewerUrl, envisionDesignCenterUrl, parentPlanId, parentFlag, numberSections, modelYear, buildingMethod,\r\n dimensions {\r\n width,\r\n length\r\n },\r\n hotHome {\r\n title,\r\n description\r\n },\r\n community {\r\n id,\r\n name\r\n },\r\n thumbnail {\r\n localPath\r\n },\r\n brand {\r\n brandName\r\n },\r\n openAmenities {\r\n id,\r\n name,\r\n sequence,\r\n websiteUrl\r\n },\r\n brochures {\r\n id,\r\n title,\r\n sequence,\r\n localPath,\r\n url,\r\n thumbnailUrl\r\n },\r\n distributionOnlyFields {\r\n architectureStyles,\r\n atticIncluded,\r\n coolingSystems,\r\n exteriorTypes,\r\n fireplaces,\r\n floorTypes,\r\n heatingFuels,\r\n heatingSystems,\r\n hersScore,\r\n kitchenCountertopMaterials,\r\n parkingTypes,\r\n quarterBaths,\r\n roofTypes,\r\n roomsBelowGrade,\r\n sqftAboveGrade,\r\n sqftBelowGrade,\r\n threeQuarterBaths,\r\n totalRooms,\r\n windowMaterialTypes,\r\n windowInsulationTypes,\r\n wiredTypes\r\n },\r\n channelDisplay {\r\n displayOnWebArch,\r\n },\r\n `;\r\n\r\nconst CHILD_PLANS_FIELDS = `childPlansCount,\r\n childPlans(status: [Active, Inactive]) { id, parentFlag, parentPlanId, status, basePrice, beds, baths, garages, squareFeet, stories, description,\r\n community {\r\n id,\r\n name,\r\n location {\r\n city,\r\n state\r\n }\r\n }\r\n}\r\n`;\r\n\r\nexport const API_GET_PLAN_FIELDS = `\r\n${BASIC_PLAN_FIELDS}\r\n${CHILD_PLANS_FIELDS}\r\n`;\r\n\r\nconst API_GET_PLAN_CONTEXT_FIELDS = (getCommLocation = false) => `\r\n community { id, marketingStatus, name, ownerPartnerId, channelDisplay{ displayOnWebArch },\r\n ${\r\n getCommLocation\r\n ? `\r\n location {\r\n city,\r\n state,\r\n zip,\r\n market {\r\n id,\r\n name\r\n },\r\n coordinates {\r\n latitude,\r\n longitude\r\n }\r\n },\r\n salesOffice {\r\n zip,\r\n city,\r\n state,\r\n market {\r\n id,\r\n name\r\n },\r\n coordinates{\r\n latitude,\r\n longitude\r\n },\r\n geoCoordinatesLock\r\n }`\r\n : ''\r\n }\r\n },\r\n builderId,\r\n builder {\r\n builderId,\r\n builderName,\r\n autoFeedFlag,\r\n orgTypeCode,\r\n partner {\r\n partnerName,\r\n partnerId\r\n },\r\n parentBuilderId,\r\n parentBuilder {\r\n builderId,\r\n builderName,\r\n planLibraryType,\r\n autoFeedFlag,\r\n displayGuidedToursOnNhs,\r\n displayChannelSelection {\r\n displayOnWebArch\r\n }\r\n },\r\n displayChannelSelection {\r\n displayOnKiosk,\r\n displayOnNhs,\r\n displayOnNhsPro,\r\n displayOnRdc,\r\n displayOnSales,\r\n displayOnWeb,\r\n displayOnWebArch\r\n }\r\n }\r\n`;\r\n\r\n// Data lock fields\r\nconst API_GET_PLAN_DATALOCKS_FIELDS = () =>\r\n `dataLocks { ${Object.keys(dataLocksFields.Plan)\r\n .map((k) => dataLocksFields.Plan[k])\r\n .join(',')} }`;\r\n\r\nconst API_GET_PLAN_INFO_QUERY = (planId, getCommLocation = false) => `\r\nquery {\r\n plans(planId:${planId}) {\r\n ...plan,\r\n parentPlan {\r\n ...plan,\r\n channelDisplay {\r\n displayOnWebArch\r\n }\r\n }\r\n ${API_GET_PLAN_CONTEXT_FIELDS(getCommLocation)}\r\n ${API_GET_PLAN_DATALOCKS_FIELDS()}\r\n }\r\n}\r\nfragment plan on Plan {\r\n ${API_GET_PLAN_FIELDS}\r\n}\r\n`;\r\n\r\n// GET Community Information GraphQL query\r\nexport const API_GET_PLAN_DISTRIBUTION_QUERY = (planId) => `\r\nquery {\r\n plans(planId:${planId}) {\r\n id,\r\n distributionOnlyFields {\r\n architectureStyles,\r\n atticIncluded,\r\n coolingSystems,\r\n exteriorTypes,\r\n fireplaces,\r\n floorTypes,\r\n heatingFuels,\r\n heatingSystems,\r\n hersScore,\r\n kitchenCountertopMaterials,\r\n parkingTypes,\r\n quarterBaths,\r\n roofTypes,\r\n roomsBelowGrade,\r\n sqftAboveGrade,\r\n sqftBelowGrade,\r\n threeQuarterBaths,\r\n totalRooms,\r\n windowMaterialTypes,\r\n windowInsulationTypes,\r\n wiredTypes,\r\n }\r\n }\r\n}\r\n`;\r\n\r\n// Update Community Information GraphQL quer\r\nconst API_UPDATE_PLAN_QUERY = ({ id, builderId, communityId, number, status, name, parentFlag, basePrice, previousPrice, type, display, priceExcludesLand, squareFeet, stories, masterBedLocation, beds, baths, halfBaths, garages, dimensions: { width, length } = {}, numberSections, modelYear, buildingMethod, basementIncluded, livingAreas, amenities, brochures, url, marketingHeadline, description, openAmenities, virtualTourUrl, planViewerUrl, envisionDesignCenterUrl, distributionOnlyFields = {}, hotHome, planOptions }, isNew, returnBasicFields, isBulkUpdate) => {\r\n const distributionFields = `${!empty(distributionOnlyFields) && distributionOnlyFields.architectureStyles !== undefined ? `architectureStyles: [${distributionOnlyFields.architectureStyles.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.coolingSystems !== undefined ? `coolingSystems: [${distributionOnlyFields.coolingSystems.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.exteriorTypes !== undefined ? `exteriorTypes: [${distributionOnlyFields.exteriorTypes.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.floorTypes !== undefined ? `floorTypes: [${distributionOnlyFields.floorTypes.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.heatingFuels !== undefined ? `heatingFuels: [${distributionOnlyFields.heatingFuels.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.heatingSystems !== undefined ? `heatingSystems: [${distributionOnlyFields.heatingSystems.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.kitchenCountertopMaterials !== undefined ? `kitchenCountertopMaterials: [${distributionOnlyFields.kitchenCountertopMaterials.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.parkingTypes !== undefined ? `parkingTypes: [${distributionOnlyFields.parkingTypes.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.roofTypes !== undefined ? `roofTypes: [${distributionOnlyFields.roofTypes.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.wiredTypes !== undefined ? `wiredTypes: [${distributionOnlyFields.wiredTypes.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.windowInsulationTypes !== undefined ? `windowInsulationTypes: [${distributionOnlyFields.windowInsulationTypes.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.windowMaterialTypes !== undefined ? `windowMaterialTypes: [${distributionOnlyFields.windowMaterialTypes.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.fireplaces !== undefined ? `fireplaces: ${distributionOnlyFields.fireplaces || 0},` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.totalRooms !== undefined ? `totalRooms: ${distributionOnlyFields.totalRooms || 0},` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.threeQuarterBaths !== undefined ? `threeQuarterBaths: ${distributionOnlyFields.threeQuarterBaths || 0},` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.sqftBelowGrade !== undefined ? `sqftBelowGrade: ${distributionOnlyFields.sqftBelowGrade || 0},` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.sqftAboveGrade !== undefined ? `sqftAboveGrade: ${distributionOnlyFields.sqftAboveGrade || 0},` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.roomsBelowGrade !== undefined ? `roomsBelowGrade: ${distributionOnlyFields.roomsBelowGrade || 0},` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.quarterBaths !== undefined ? `quarterBaths: ${distributionOnlyFields.quarterBaths || 0},` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.hersScore !== undefined ? `hersScore: ${distributionOnlyFields.hersScore || 0},` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.atticIncluded !== undefined ? `atticIncluded: ${distributionOnlyFields.atticIncluded}` : ``}`;\r\n\r\n const planOptionsFieldsMutation = Array.isArray(planOptions) ? `planOptions{ ${PlanOptionsFields} }` : '';\r\n\r\n const brochureMutation = ({ id: brochureId, sequence, title, url: brochureUrl, type: urlType, file, added, edited, deleted }) => {\r\n if (deleted) {\r\n return `{ id: -${brochureId} }`;\r\n }\r\n if (added) {\r\n return `{\r\n sequence: ${sequence}\r\n , title: ${JSONText(title)}\r\n ${!empty(brochureUrl) && empty(file) ? `, url: ${JSONText(brochureUrl)}` : ''}\r\n ${urlType === 'Website' && !empty(brochureUrl) ? `, isWebsite: true` : !empty(brochureUrl) ? ',isWebsite: false' : ''}\r\n ${!empty(file) ? `, file: $file${brochureId}` : ''}\r\n }`;\r\n }\r\n if (edited) {\r\n return `{\r\n id: ${brochureId}\r\n ${!empty(sequence) ? `, sequence: ${sequence}` : ''}\r\n ${!empty(title) ? `, title: ${JSONText(title)}` : ''}\r\n ${urlType === 'Website' && !empty(brochureUrl) ? `, isWebsite: true` : !empty(brochureUrl) ? ',isWebsite: false' : ''}\r\n ${!empty(brochureUrl) && empty(file) ? `, url: ${JSONText(brochureUrl)}` : ''}\r\n ${!empty(file) ? `, file: $file${brochureId}` : ''}\r\n }`;\r\n }\r\n return '';\r\n };\r\n\r\n const brochuresWithFiles = (brochures || []).filter(({ file }) => !empty(file));\r\n\r\n let fieldsToReturn = `${API_GET_PLAN_FIELDS}${API_GET_PLAN_CONTEXT_FIELDS()}${planOptionsFieldsMutation}`;\r\n\r\n if (isBulkUpdate) {\r\n fieldsToReturn = BULK_PRICE_PLAN_FIELDS;\r\n } else if (returnBasicFields) {\r\n fieldsToReturn = BASIC_BULK_PLAN_FIELDS;\r\n }\r\n\r\n return `mutation${\r\n !empty(brochuresWithFiles)\r\n ? `(${brochuresWithFiles\r\n .map(({ id: brochureId }) => {\r\n return `$file${brochureId.toString()}: Upload`;\r\n })\r\n .filter(Boolean)\r\n .join(',')})`\r\n : ``\r\n } {\r\n ${isNew ? `insertPlan` : `updatePlan`} ( \r\n ${isNew ? `` : `id: ${id}`}, \r\n sitePage: \"${getSitePage()}\"\r\n ${status !== undefined ? `, status: ${status}` : ``}\r\n ${name !== undefined ? `, name: ${JSONText(name)}` : ``}\r\n ${beds !== undefined ? `, beds: ${beds}` : ``}\r\n ${baths !== undefined ? `, baths: ${baths}` : ``}\r\n ${number !== undefined ? `, number: ${JSONText(number)}` : ``}\r\n ${garages !== undefined ? `, garages: ${garages}` : ``}\r\n ${basePrice !== undefined ? `, basePrice: ${basePrice}` : ``}\r\n ${previousPrice !== undefined ? `, previousPrice: ${previousPrice}` : ``} \r\n ${builderId !== undefined ? `,builderId: ${builderId}` : ``} \r\n ${communityId !== undefined ? `,communityId: ${communityId}` : ``}\r\n ${parentFlag !== undefined ? `,parentFlag: ${parentFlag}` : ``}\r\n ${type !== undefined ? `, type: ${type}` : ``}\r\n ${display !== undefined ? `, display: ${display}` : ``}\r\n ${priceExcludesLand !== undefined ? `, priceExcludesLand: ${priceExcludesLand},` : ``}\r\n ${squareFeet !== undefined ? `, squareFeet: ${squareFeet}` : ``}\r\n ${stories !== undefined ? `, stories: ${stories}` : ``}\r\n ${masterBedLocation !== undefined ? `, masterBedLocation: ${masterBedLocation}` : ``} \r\n ${width !== undefined || length !== undefined ? `, dimensions: { ${width !== undefined ? `width: ${width},` : ``} ${length !== undefined ? `length: ${length},` : ``} }` : ``}\r\n ${buildingMethod !== undefined ? `, buildingMethod: ${buildingMethod}` : ``}\r\n ${modelYear !== undefined ? `, modelYear: ${modelYear}` : ``}\r\n ${!empty(numberSections) ? `, numberSections: ${numberSections}` : ''}\r\n ${halfBaths !== undefined ? `, halfBaths: ${halfBaths}` : ``}\r\n ${basementIncluded !== undefined ? `, basementIncluded: ${basementIncluded}` : ``} \r\n ${livingAreas !== undefined ? `, livingAreas: [${livingAreas.join(',')}]` : ``} \r\n ${amenities !== undefined ? `, amenities: [${amenities.join(',')}]` : ``} \r\n ${hotHome !== undefined ? `, hotHome: ${!hotHome ? `{title: \"\", description: \"\"}` : `{ ${hotHome.title !== undefined ? `title: \"${hotHome.title}\",` : ``}${hotHome.description !== undefined ? `description: \"${hotHome.description}\"` : ``}}`}` : ``} \r\n ${url !== undefined ? `, url: \"${url}\"` : ``}\r\n ${description !== undefined ? `, description: ${JSONText(description)}` : ``}\r\n ${marketingHeadline !== undefined ? `, marketingHeadline: ${JSONText(marketingHeadline)}` : ``}\r\n ${openAmenities !== undefined ? `, openAmenities: [${openAmenities.map((amenity) => openAmenityMutation(amenity)).join(',')}]` : ``}\r\n ${virtualTourUrl !== undefined ? `, virtualTourUrl: ${JSONText(virtualTourUrl)}` : ``}\r\n ${planViewerUrl !== undefined ? `, planViewerUrl: ${JSONText(planViewerUrl)}` : ``}\r\n ${envisionDesignCenterUrl !== undefined ? `, envisionDesignCenterUrl: ${JSONText(envisionDesignCenterUrl)}` : ``}\r\n ${!empty(distributionOnlyFields) ? `, distributionOnlyFields: { ${distributionFields} }` : ``}\r\n ${planOptions !== undefined && Array.isArray(planOptions) ? `, planOptions: [${planOptions.map((item) => `{ ${isNaN(item.optionId) ? '' : `id: ${item.optionId}, `} type: ${item.type}, name: ${JSONText(item.name)}, price: ${item.price}, squareFeet: ${!Number.isNaN(parseFloat(item.squareFeet)) ? item.squareFeet : 0}, sequence: ${item.sequence} }`).join(',')}]` : ``}\r\n ${!empty(brochures) ? `brochures: [${brochures.map((brochure) => brochureMutation(brochure)).join(',')}]` : ''}\r\n )\r\n {\r\n ${fieldsToReturn}\r\n }\r\n }\r\n `.trim();\r\n};\r\n\r\nconst openAmenityMutation = (amenity) => {\r\n if (empty(amenity)) return '';\r\n\r\n return `{ ${amenity.id && !isNaN(amenity.id) ? `id: ${amenity.id}, ` : ''} name: ${JSONText(amenity.name)}, websiteUrl: ${JSONText(amenity.websiteUrl || '')}, sequence: ${amenity.sequence} }`;\r\n};\r\n\r\nconst API_BREAK_INHERITANCE_PLAN_QUERY = ({ id }) => `\r\nmutation breakInheritance{\r\n breakParentPlanInheritance(childPlanIds: ${id}){\r\n ${API_GET_PLAN_FIELDS}\r\n }\r\n}\r\n`;\r\n\r\nexport const requestPlanApi = (planId, getCommLocation = false) => apiClient.post(null, { query: API_GET_PLAN_INFO_QUERY(planId, getCommLocation) });\r\n\r\nexport const requestPlanDistributionApi = (planId) => apiClient.post(null, { query: API_GET_PLAN_DISTRIBUTION_QUERY(planId) });\r\n\r\nexport const updatePlanMutation = (plan) => API_UPDATE_PLAN_QUERY(plan, false);\r\n\r\nexport const insertPlanMutation = (plan) => API_UPDATE_PLAN_QUERY(plan, true);\r\n\r\nexport const savePlanMutation = (plan, returnBasicFields, isBulkUpdate) => API_UPDATE_PLAN_QUERY(plan, !plan.id, returnBasicFields, isBulkUpdate);\r\n\r\nexport const breakInheritanceMutation = (plan) => API_BREAK_INHERITANCE_PLAN_QUERY(plan);\r\n\r\n/**\r\n * Image and Video implementations\r\n */\r\nconst PlanImages = ({ filter: { key, value } = {}, typeCodes, sortColumns = '[{order: Asc, field: ImageSequence}]', status = ['Active'], preferredFlag }) => `{\r\n plans(\r\n ${key && value ? `${key}: ${value},` : ''}\r\n ) {\r\n id,\r\n parentPlanId,\r\n inheritingInteriors,\r\n inheritingElevations,\r\n inheritingFloorPlans,\r\n images(\r\n ${typeCodes ? `typeCodes:[${typeCodes}],` : ''}\r\n ${sortColumns ? `sortBy:${sortColumns},` : ``}\r\n ${preferredFlag ? `preferredFlag:${preferredFlag},` : ``}\r\n status:[${status}]\r\n ) {\r\n ${ImageQueryFields}\r\n },\r\n imageCounter {\r\n count,\r\n type\r\n },\r\n imageCounterNonInherited: imageCounter(inheritance: false) {\r\n count,\r\n type\r\n }\r\n }\r\n}\r\n`;\r\n\r\nexport const fixApiPlan = (plan) => {\r\n if (!plan) return null;\r\n\r\n const { basePrice, previousPrice, squareFeet, openAmenities } = plan;\r\n\r\n // Data fixes, some times api dont return data as we expect, so we define proper defaults or sorts here.\r\n if (previousPrice === null) plan.previousPrice = 0;\r\n if (basePrice === null) plan.basePrice = 0;\r\n if (squareFeet === null) plan.squareFeet = 0;\r\n if (openAmenities) plan.openAmenities = openAmenities.slice().sort((a, b) => (a.sequence > b.sequence ? 1 : -1));\r\n\r\n return plan;\r\n};\r\n\r\nexport const PlanImagesQuery = (requestArguments) => PlanImages(requestArguments);\r\n\r\nconst PlanVideos = ({ filter: { key, value } = {}, typeCodes, sortColumns = '[{order: Asc, field: Sequence}]', status = ['Active'] }) => `{\r\n plans(\r\n ${key && value ? `${key}: ${value},` : ''}\r\n ) {\r\n id\r\n inheritingVideos\r\n videos(\r\n ${typeCodes ? `typeCodes:[${typeCodes}],` : ''}\r\n ${sortColumns ? `sortBy:${sortColumns},` : ``}\r\n status:[${status}]\r\n ) {\r\n ${VideoQueryFields}\r\n }\r\n videoCount\r\n }\r\n}\r\n`;\r\n\r\nexport const PlanVideosQuery = (requestArguments) => PlanVideos(requestArguments);\r\n\r\nconst PlanInteractiveMedia = ({ planId, status = ['Active'] }) => `\r\n{\r\n plans(planId: ${planId}){\r\n id\r\n inheritingInteractiveMedia\r\n interactiveMedias(status:[${status.join(', ')}]){\r\n ${InteractiveMediaQueryFields}\r\n }\r\n }\r\n}\r\n`;\r\n\r\nexport const PlanInteractiveMediaQuery = (requestArguments) => PlanInteractiveMedia(requestArguments);\r\n\r\nconst PlanOptionsFields = `\r\n planId,\r\n optionId,\r\n type,\r\n name,\r\n price,\r\n squareFeet,\r\n sequence,\r\n`;\r\n\r\nconst PlanOptions = ({ filter: { key, value } = {} }) => `\r\n{\r\n plans(${key && value ? `${key}: ${value},` : ''})\r\n {\r\n id,\r\n planOptions\r\n {\r\n ${PlanOptionsFields}\r\n }\r\n }\r\n}\r\n`;\r\n\r\nexport const PlanOptionsQuery = (requestArguments) => PlanOptions(requestArguments);\r\n","import { Model } from '../utils/models';\r\nimport { GraphQLQuery } from '../utils/api/graph-helpers';\r\nimport { planSchema } from '../app.entities';\r\nimport { Community } from './Community';\r\nimport { planContextRequest } from '../@redux/context/actions';\r\nimport { Division } from './Division';\r\nimport { savePlanMutation } from '@/modules/listings-detail/plan-detail/@redux/api';\r\n\r\nexport const Plan = () =>\r\n new Model({\r\n name: 'plans',\r\n model: 'plan',\r\n query: new GraphQLQuery([\r\n {\r\n operation: 'plans',\r\n argument: {},\r\n fields: ['id', 'name'],\r\n },\r\n ]),\r\n mutations: { save: savePlanMutation },\r\n contextRequest: planContextRequest,\r\n isHome: true,\r\n urlKey: 'planId',\r\n schema: planSchema,\r\n describerFields: {\r\n id: 'id',\r\n name: 'name',\r\n status: 'status',\r\n relation: 'plan',\r\n relationId: 'planId',\r\n },\r\n parent: Community(),\r\n altParent: Division(),\r\n lookup: 'search',\r\n template: (id, context) => {\r\n return {\r\n id,\r\n dateLastChanged: Date(),\r\n dateCreated: Date(),\r\n priceExcludesLand: false,\r\n type: 'SingleFamily',\r\n display: 'NotSpecified',\r\n basementIncluded: false,\r\n masterBedLocation: 'NA',\r\n beds: 0,\r\n baths: 0,\r\n garages: 0,\r\n number: '',\r\n distributionOnlyFields: {\r\n appliances: [],\r\n architectureStyles: [],\r\n atticIncluded: false,\r\n coolingSystems: [],\r\n daysOnMarket: 0,\r\n exteriorTypes: [],\r\n fireplaces: 0,\r\n floorTypes: [],\r\n heatingFuels: [],\r\n heatingSystems: [],\r\n hersScore: 0,\r\n kitchenCountertopMaterials: [],\r\n parkingTypes: [],\r\n quarterBaths: 0,\r\n roofTypes: [],\r\n roomsBelowGrade: 0,\r\n sqftAboveGrade: 0,\r\n sqftBelowGrade: 0,\r\n threeQuarterBaths: 0,\r\n totalRooms: 0,\r\n viewTypes: [],\r\n waterFront: false,\r\n windowInsulationTypes: [],\r\n windowMaterialTypes: [],\r\n wiredTypes: [],\r\n },\r\n ...context,\r\n };\r\n },\r\n });\r\n","/* eslint-disable no-restricted-globals */\r\n/* eslint-disable no-nested-ternary */\r\n\r\n// All the Ajax calls for Auth module are handled here\r\nimport apiClient from '../../../../utils/api/api';\r\nimport { empty, JSONText } from '../../../../utils/bdx-lodash-lite';\r\nimport { VideoQueryFields } from '../../../../@redux/videos/api';\r\nimport { ImageQueryFields } from '../../../../@redux/images/api';\r\nimport { InteractiveMediaQueryFields } from '../../@redux/interactive-media/api';\r\nimport { dataLocksFields } from '@/constants/bdx-lookups';\r\nimport { getSitePage } from '@/utils/routing/router-helpers';\r\n\r\nconst API_GET_SPEC_CONTEXT_FIELDS = `community {\r\n id,\r\n marketingStatus,\r\n name,\r\n ownerPartnerId,\r\n builder {\r\n builderId,\r\n builderName,\r\n autoFeedFlag,\r\n orgTypeCode,\r\n partner {\r\n partnerName,\r\n partnerId\r\n },\r\n parentBuilderId,\r\n parentBuilder {\r\n builderId,\r\n builderName,\r\n canadianData,\r\n displayGuidedToursOnNhs\r\n }\r\n }\r\n mlsName {\r\n id,\r\n name,\r\n }\r\n },\r\n plan {\r\n id,\r\n name,\r\n number,\r\n type,\r\n basePrice,\r\n squareFeet,\r\n brand {\r\n brandName\r\n }\r\n }`;\r\n\r\nconst API_GET_BULK_PRICE_FIELDS = `id, price`;\r\n\r\nconst API_GET_BULK_SPEC_FIELDS = `id, number, status, price, moveInDate, hotHome { title, description }, dateLastChanged, masterBedLocation, beds, baths, halfBaths, stories, garages, latitude, longitude, streetAddress1, squareFeet, url, virtualTourUrl,community { id, name }, plan { id, name, number, display, type }, description`;\r\n\r\nconst API_GET_SPEC_FIELDS = `id, number, status, url, description, dateCreated, priceExcludesLand, type, yearBuilt, saleStatus, dateLastChanged, price, previousPrice, moveInDate, thumbnail { localPath },\r\n masterBedLocation, beds, baths, halfBaths, garages, stories, squareFeet, lotSqFt, basementIncluded, livingAreas, amenities, marketingHeadline, lotNumber, latitude, \r\n longitude, streetAddress1, streetAddress2, mlsNumber,\r\n hotHome {\r\n title,\r\n description\r\n },\r\n dimensions {\r\n width,\r\n length\r\n },\r\n numberSections,\r\n modelYear,\r\n buildingMethod,\r\n zip {\r\n city,\r\n marketName,\r\n marketId,\r\n postalCode,\r\n state,\r\n },\r\n openAmenities {\r\n id,\r\n name,\r\n sequence,\r\n websiteUrl\r\n },\r\n brochures {\r\n id,\r\n title,\r\n sequence,\r\n localPath,\r\n url,\r\n thumbnailUrl\r\n },\r\n distributionOnlyFields {\r\n architectureStyles,\r\n atticIncluded,\r\n coolingSystems,\r\n exteriorTypes,\r\n fireplaces,\r\n floorTypes,\r\n heatingFuels,\r\n heatingSystems,\r\n hersScore,\r\n kitchenCountertopMaterials,\r\n parkingTypes,\r\n quarterBaths,\r\n roofTypes,\r\n roomsBelowGrade,\r\n sqftAboveGrade,\r\n sqftBelowGrade,\r\n threeQuarterBaths,\r\n totalRooms,\r\n windowMaterialTypes,\r\n windowInsulationTypes,\r\n wiredTypes,\r\n daysOnMarket,\r\n viewTypes,\r\n waterFront,\r\n appliances,\r\n },\r\n virtualTourUrl,\r\n envisionDesignCenterUrl,\r\n guidedTour {\r\n tourUrl,\r\n propertyNumber,\r\n partner,\r\n tourId,\r\n builderProvided\r\n }\r\n `;\r\n\r\n// Data lock fields\r\nconst API_GET_SPEC_DATALOCKS_FIELDS = () =>\r\n `dataLocks { ${Object.keys(dataLocksFields.Spec)\r\n .map((k) => dataLocksFields.Spec[k])\r\n .join(',')} }`;\r\n\r\n// GET Community Information GraphQL query\r\nconst API_GET_SPEC_INFO_QUERY = (specId) => `query {\r\n specs(specId:${specId}) {\r\n ${API_GET_SPEC_FIELDS}\r\n ${API_GET_SPEC_CONTEXT_FIELDS}\r\n ${API_GET_SPEC_DATALOCKS_FIELDS()}\r\n }\r\n}`;\r\n\r\n// Update Community Information GraphQL quer\r\nconst API_UPDATE_SPEC_QUERY = ({ id, builderId, planId, communityId, number, status, url, description, priceExcludesLand, type, yearBuilt, saleStatus, price, previousPrice, moveInDate, masterBedLocation, beds, baths, halfBaths, garages, stories, squareFeet, lotSqFt, basementIncluded, marketingHeadline, livingAreas, amenities, lotNumber, latitude, longitude, streetAddress1, streetAddress2, mlsNumber, hotHome, dimensions: { width, length } = {}, numberSections, modelYear, buildingMethod, zip = {}, guidedTour = {}, openAmenities, virtualTourUrl, envisionDesignCenterUrl, brochures, distributionOnlyFields = {} }, isNew, returnBasicFields, isBulkUpdate) => {\r\n const distributionFields = `${!empty(distributionOnlyFields) && distributionOnlyFields.architectureStyles !== undefined ? `architectureStyles: [${distributionOnlyFields.architectureStyles.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.coolingSystems !== undefined ? `coolingSystems: [${distributionOnlyFields.coolingSystems.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.exteriorTypes !== undefined ? `exteriorTypes: [${distributionOnlyFields.exteriorTypes.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.viewTypes !== undefined ? `viewTypes: [${distributionOnlyFields.viewTypes.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.floorTypes !== undefined ? `floorTypes: [${distributionOnlyFields.floorTypes.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.heatingFuels !== undefined ? `heatingFuels: [${distributionOnlyFields.heatingFuels.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.heatingSystems !== undefined ? `heatingSystems: [${distributionOnlyFields.heatingSystems.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.kitchenCountertopMaterials !== undefined ? `kitchenCountertopMaterials: [${distributionOnlyFields.kitchenCountertopMaterials.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.parkingTypes !== undefined ? `parkingTypes: [${distributionOnlyFields.parkingTypes.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.roofTypes !== undefined ? `roofTypes: [${distributionOnlyFields.roofTypes.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.wiredTypes !== undefined ? `wiredTypes: [${distributionOnlyFields.wiredTypes.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.windowInsulationTypes !== undefined ? `windowInsulationTypes: [${distributionOnlyFields.windowInsulationTypes.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.windowMaterialTypes !== undefined ? `windowMaterialTypes: [${distributionOnlyFields.windowMaterialTypes.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.appliances !== undefined ? `appliances: [${distributionOnlyFields.appliances.join(',')}],` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.fireplaces !== undefined ? `fireplaces: ${distributionOnlyFields.fireplaces || 0},` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.totalRooms !== undefined ? `totalRooms: ${distributionOnlyFields.totalRooms || 0},` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.daysOnMarket !== undefined ? `daysOnMarket: ${distributionOnlyFields.daysOnMarket || 0},` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.threeQuarterBaths !== undefined ? `threeQuarterBaths: ${distributionOnlyFields.threeQuarterBaths || 0},` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.sqftBelowGrade !== undefined ? `sqftBelowGrade: ${distributionOnlyFields.sqftBelowGrade || 0},` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.sqftAboveGrade !== undefined ? `sqftAboveGrade: ${distributionOnlyFields.sqftAboveGrade || 0},` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.roomsBelowGrade !== undefined ? `roomsBelowGrade: ${distributionOnlyFields.roomsBelowGrade || 0},` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.quarterBaths !== undefined ? `quarterBaths: ${distributionOnlyFields.quarterBaths || 0},` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.hersScore !== undefined ? `hersScore: ${distributionOnlyFields.hersScore || 0},` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.waterFront !== undefined ? `waterFront: ${distributionOnlyFields.waterFront}` : ``}\r\n ${!empty(distributionOnlyFields) && distributionOnlyFields.atticIncluded !== undefined ? `atticIncluded: ${distributionOnlyFields.atticIncluded}` : ``}`;\r\n\r\n const zipLocationFields = `${!empty(zip) && zip.city !== undefined ? `city: \"${zip.city}\",` : ``}\r\n ${!empty(zip) && zip.state !== undefined ? `state: \"${zip.state}\",` : ``}\r\n ${!empty(zip) && zip.postalCode !== undefined ? `postalCode: \"${zip.postalCode}\",` : ``}`.trim();\r\n\r\n const guidedTourFields = `${!empty(guidedTour) && guidedTour.partner !== undefined ? `partnerId: ${guidedTour.partner},` : ``}\r\n ${!empty(guidedTour) && guidedTour.tourUrl !== undefined ? `tourUrl: ${JSONText(guidedTour.tourUrl)},` : ``}\r\n ${!empty(guidedTour) && guidedTour.propertyNumber !== undefined ? `propertyNumber: ${JSONText(guidedTour.propertyNumber)},` : ``}\r\n ${!empty(guidedTour) && guidedTour.builderProvided !== undefined ? `builderProvided: ${guidedTour.builderProvided},` : ``}`.trim();\r\n\r\n const brochureMutation = ({ id: brochureId, sequence, title, url: brochureUrl, file, type: urlType, added, edited, deleted }) => {\r\n if (deleted) {\r\n return `{ id: -${brochureId} }`;\r\n }\r\n if (added) {\r\n return `{\r\n sequence: ${sequence}\r\n , title: ${JSONText(title)}\r\n ${urlType === 'Website' && !empty(brochureUrl) ? `, isWebsite: true` : !empty(brochureUrl) ? ',isWebsite: false' : ''}\r\n ${!empty(brochureUrl) && empty(file) ? `, url: ${JSONText(brochureUrl)}` : ''}\r\n ${!empty(file) ? `, file: $file${brochureId}` : ''}\r\n }`;\r\n }\r\n if (edited) {\r\n return `{\r\n id: ${brochureId}\r\n ${!empty(sequence) ? `, sequence: ${sequence}` : ''}\r\n ${!empty(title) ? `, title: ${JSONText(title)}` : ''}\r\n ${urlType === 'Website' && !empty(brochureUrl) ? `, isWebsite: true` : !empty(brochureUrl) ? ',isWebsite: false' : ''}\r\n ${!empty(brochureUrl) && empty(file) ? `, url: ${JSONText(brochureUrl)}` : ''}\r\n ${!empty(file) ? `, file: $file${brochureId}` : ''}\r\n }`;\r\n }\r\n return '';\r\n };\r\n\r\n const brochuresWithFiles = (brochures || []).filter(({ file }) => !empty(file));\r\n\r\n let fieldsToReturn = `${API_GET_SPEC_FIELDS}${API_GET_SPEC_CONTEXT_FIELDS}`;\r\n\r\n if (isBulkUpdate) {\r\n fieldsToReturn = API_GET_BULK_PRICE_FIELDS;\r\n } else if (returnBasicFields) {\r\n fieldsToReturn = API_GET_BULK_SPEC_FIELDS;\r\n }\r\n\r\n return `mutation${\r\n !empty(brochuresWithFiles)\r\n ? `(${brochuresWithFiles\r\n .map(({ id: brochureId }) => {\r\n return `$file${brochureId.toString()}: Upload`;\r\n })\r\n .filter(Boolean)\r\n .join(',')})`\r\n : ``\r\n } {\r\n ${isNew ? `insertSpec` : `updateSpec`} ( \r\n ${isNew ? `` : `id: ${id}, `}\r\n sitePage: \"${getSitePage()}\"\r\n ${builderId !== undefined ? `,builderId: ${builderId}` : ``}\r\n ${communityId !== undefined ? `,communityId: ${communityId}` : ``}\r\n ${planId !== undefined ? `,planId: ${planId}` : ``}\r\n ${number !== undefined ? `, number: ${JSONText(number)}` : ``}\r\n ${status !== undefined ? `, status: ${status}` : ``}\r\n ${price !== undefined ? `, price: ${price}` : ``}\r\n ${previousPrice !== undefined ? `, previousPrice: ${previousPrice}` : ``}\r\n ${type !== undefined ? `, type: ${type}` : ``}\r\n ${saleStatus !== undefined ? `, saleStatus: ${saleStatus}` : ``}\r\n ${priceExcludesLand !== undefined ? `priceExcludesLand: ${priceExcludesLand},` : ``}\r\n ${squareFeet !== undefined ? `, squareFeet: ${squareFeet}` : ``}\r\n ${lotSqFt !== undefined ? `, lotSqFt: ${lotSqFt}` : ``}\r\n ${stories !== undefined ? `, stories: ${stories}` : ``}\r\n ${yearBuilt !== undefined ? `, yearBuilt: ${empty(yearBuilt) ? 0 : yearBuilt}` : ``}\r\n ${moveInDate !== undefined ? `, moveInDate: \"${!empty(moveInDate) ? moveInDate : '0001-01-01T00:00:00'}\"` : ``}\r\n ${masterBedLocation !== undefined ? `, masterBedLocation: ${masterBedLocation}` : ``}\r\n ${beds !== undefined ? `, beds: ${beds}` : ``}\r\n ${baths !== undefined ? `, baths: ${baths}` : ``}\r\n ${halfBaths !== undefined ? `, halfBaths: ${halfBaths}` : ``}\r\n ${basementIncluded !== undefined ? `, basementIncluded: ${basementIncluded}` : ``}\r\n ${garages !== undefined ? `, garages: ${garages}` : ``}\r\n ${livingAreas !== undefined ? `, livingAreas: [${livingAreas.join(',')}]` : ``}\r\n ${amenities !== undefined ? `, amenities: [${amenities.join(',')}]` : ``}\r\n ${url !== undefined ? `, url: \"${url}\"` : ``}\r\n ${description !== undefined ? `, description: ${JSONText(description)}` : ``}\r\n ${marketingHeadline !== undefined ? `, marketingHeadline: ${JSONText(marketingHeadline)}` : ``}\r\n ${width !== undefined || length !== undefined ? `, dimensions: { ${width !== undefined ? `width: ${width},` : ``} ${length !== undefined ? `length: ${length},` : ``} }` : ``}\r\n ${buildingMethod !== undefined ? `, buildingMethod: ${buildingMethod}` : ``}\r\n ${modelYear !== undefined ? `, modelYear: ${modelYear}` : ``}\r\n ${!empty(numberSections) ? `, numberSections: ${numberSections}` : ''}\r\n ${lotNumber !== undefined ? `, lotNumber: ${JSONText(lotNumber)}` : ``}\r\n ${latitude !== undefined ? `, latitude: ${Math.abs(latitude)}` : ``}\r\n ${longitude !== undefined ? `, longitude: -${Math.abs(longitude)}` : ``}\r\n ${streetAddress1 !== undefined ? `, streetAddress1: ${JSONText(streetAddress1)}` : ``}\r\n ${streetAddress2 !== undefined ? `, streetAddress2: ${JSONText(streetAddress2)}` : ``}\r\n ${mlsNumber !== undefined ? `, mlsNumber: ${JSONText(mlsNumber)}` : ``}\r\n ${openAmenities !== undefined ? `, openAmenities: [${openAmenities.map((amenity) => openAmenityMutation(amenity)).join(',')}]` : ``}\r\n ${virtualTourUrl !== undefined ? `, virtualTourUrl: ${JSONText(virtualTourUrl)}` : ``}\r\n ${envisionDesignCenterUrl !== undefined ? `, envisionDesignCenterUrl: ${JSONText(envisionDesignCenterUrl)}` : ``}\r\n ${hotHome !== undefined ? `, hotHome: ${!hotHome ? `{title: \"\", description: \"\"}` : `{ ${hotHome.title !== undefined ? `title: \"${hotHome.title}\",` : ``}${hotHome.description !== undefined ? `description: \"${hotHome.description}\"` : ``}}`}` : ``} \r\n ${!empty(zipLocationFields) ? `, zip: { ${zipLocationFields} }` : ``} \r\n ${!empty(guidedTourFields) ? `, guidedTour: { ${guidedTourFields} }` : ``} \r\n ${!empty(brochures) ? `brochures: [${brochures.map((brochure) => brochureMutation(brochure)).join(',')}]` : ''}\r\n ${!empty(distributionOnlyFields) ? `, distributionOnlyFields: { ${distributionFields} }` : ``})\r\n {\r\n ${fieldsToReturn}\r\n }\r\n }`.trim();\r\n};\r\n\r\nconst openAmenityMutation = (amenity) => {\r\n if (empty(amenity)) return '';\r\n\r\n return `{ ${amenity.id && !isNaN(amenity.id) ? `id: ${amenity.id}, ` : ''} name: ${JSONText(amenity.name)}, websiteUrl: ${JSONText(amenity.websiteUrl || '')}, sequence: ${amenity.sequence} }`;\r\n};\r\n\r\nexport const requestSpecApi = (specId) => apiClient.post(null, { query: API_GET_SPEC_INFO_QUERY(specId) });\r\n\r\nexport const updateSpecMutation = (spec) => API_UPDATE_SPEC_QUERY(spec, false);\r\n\r\nexport const insertSpecMutation = (spec) => API_UPDATE_SPEC_QUERY(spec, true);\r\n\r\nexport const saveSpecMutation = (spec, returnBasicFields, isBulkUpdate) => API_UPDATE_SPEC_QUERY(spec, !spec.id, returnBasicFields, isBulkUpdate);\r\n\r\n/**\r\n * Image and Video implementations\r\n */\r\nconst SpecImages = ({ filter: { key, value } = {}, typeCodes, sortColumns = '[{order: Asc, field: ImageSequence}]', status = ['Active'], preferredFlag }) => `{\r\n specs(\r\n ${key && value ? `${key}: ${value},` : ''}\r\n ) {\r\n id,\r\n images(\r\n ${typeCodes ? `typeCodes:[${typeCodes}],` : ''}\r\n ${sortColumns ? `sortBy:${sortColumns},` : ``}\r\n ${preferredFlag ? `preferredFlag:${preferredFlag},` : ``}\r\n status:[${status}]\r\n ) {\r\n ${ImageQueryFields}\r\n },\r\n imageCounter {\r\n count,\r\n type\r\n },\r\n imageCounterNonInherited: imageCounter(inheritance: false) {\r\n count,\r\n type\r\n }\r\n }\r\n}\r\n`;\r\n\r\nexport const SpecImagesQuery = (requestArguments) => SpecImages(requestArguments);\r\n\r\nconst SpecVideos = ({ filter: { key, value } = {}, typeCodes, sortColumns = '[{order: Asc, field: Sequence}]', status = ['Active'] }) => `{\r\n specs(\r\n ${key && value ? `${key}: ${value},` : ''}\r\n ) {\r\n id,\r\n videos(\r\n ${typeCodes ? `typeCodes:[${typeCodes}],` : ''}\r\n ${sortColumns ? `sortBy:${sortColumns},` : ``}\r\n status:[${status}]\r\n ) {\r\n ${VideoQueryFields}\r\n },\r\n videoCount\r\n }\r\n}\r\n`;\r\n\r\nexport const SpecVideosQuery = (requestArguments) => SpecVideos(requestArguments);\r\n\r\nconst SpecInteractiveMedia = ({ specId, status = ['Active'] }) => `\r\n{\r\n specs(specId:${specId}){\r\n id,\r\n interactiveMedias(status:[${status.join(', ')}]){\r\n ${InteractiveMediaQueryFields}\r\n }\r\n }\r\n}\r\n`;\r\n\r\nexport const SpecInteractiveMediaQuery = (requestArguments) => SpecInteractiveMedia(requestArguments);\r\n","import { Model } from '../utils/models';\r\nimport { GraphQLQuery } from '../utils/api/graph-helpers';\r\nimport { specSchema } from '../app.entities';\r\nimport { Plan } from './Plan';\r\nimport { specContextRequest } from '../@redux/context/actions';\r\nimport { saveSpecMutation } from '@/modules/listings-detail/spec-detail/@redux/api';\r\n\r\nexport const Spec = () =>\r\n new Model({\r\n name: 'specs',\r\n model: 'spec',\r\n query: new GraphQLQuery([\r\n {\r\n operation: 'specs',\r\n argument: {},\r\n fields: ['id', 'number'],\r\n },\r\n ]),\r\n mutations: { save: saveSpecMutation },\r\n contextRequest: specContextRequest,\r\n isHome: true,\r\n urlKey: 'specId',\r\n schema: specSchema,\r\n describerFields: {\r\n id: 'id',\r\n name: 'number',\r\n status: 'status',\r\n relation: 'spec',\r\n relationId: 'specId',\r\n },\r\n parent: Plan(),\r\n template: (id, context) => {\r\n return {\r\n id,\r\n dateLastChanged: Date(),\r\n dateCreated: Date(),\r\n number: '',\r\n lotSqFt: 0,\r\n squareFeet: 0,\r\n price: 0,\r\n type: 'NotApplicable',\r\n saleStatus: 'Unspecified',\r\n priceExcludesLand: false,\r\n distributionOnlyFields: {\r\n appliances: [],\r\n architectureStyles: [],\r\n atticIncluded: false,\r\n coolingSystems: [],\r\n daysOnMarket: 0,\r\n exteriorTypes: [],\r\n fireplaces: 0,\r\n floorTypes: [],\r\n heatingFuels: [],\r\n heatingSystems: [],\r\n hersScore: 0,\r\n kitchenCountertopMaterials: [],\r\n parkingTypes: [],\r\n quarterBaths: 0,\r\n roofTypes: [],\r\n roomsBelowGrade: 0,\r\n sqftAboveGrade: 0,\r\n sqftBelowGrade: 0,\r\n threeQuarterBaths: 0,\r\n totalRooms: 0,\r\n viewTypes: [],\r\n waterFront: false,\r\n windowInsulationTypes: [],\r\n windowMaterialTypes: [],\r\n wiredTypes: [],\r\n },\r\n ...context,\r\n };\r\n },\r\n });\r\n","/* eslint-disable no-restricted-globals */\r\n/* eslint-disable no-nested-ternary */\r\n\r\nimport { JSONText } from '@/lodash/';\r\nimport { empty } from '@/lodash/empty';\r\nimport { ImageQueryFields } from '@/redux/images/api';\r\nimport { InteractiveMediaQueryFields } from '../../@redux/interactive-media/api';\r\nimport { VideoQueryFields } from '@/redux/videos/api';\r\n\r\nconst API_GET_LOT_CONTEXT_FIELDS = `\r\ncommunity {\r\n id,\r\n marketingStatus,\r\n name,\r\n ownerPartnerId,\r\n builder {\r\n builderId,\r\n builderName,\r\n autoFeedFlag, \r\n orgTypeCode,\r\n partner {\r\n partnerName,\r\n partnerId,\r\n } \r\n parentBuilderId,\r\n parentBuilder {\r\n builderId,\r\n builderName,\r\n canadianData,\r\n displayGuidedToursOnNhs,\r\n }\r\n } \r\n}`;\r\n\r\nconst API_GET_LOT_FIELDS = `\r\nid,\r\nnumber,\r\nname,\r\nstatus,\r\nparcelNumber,\r\nmlsNumber,\r\nprice,\r\nsizeAcre,\r\nurl,\r\nmarketingHeadline,\r\ndescription,\r\nsizeSqFt,\r\ndateCreated,\r\ndateLastChanged,\r\nvirtualTourUrl,\r\nstreetAddress1,\r\nstreetAddress2,\r\nlatitude,\r\nlongitude,\r\ngeoCoordinatesLock,\r\ncommunity {\r\n id,\r\n ownerPartnerId,\r\n}\r\nopenAmenities {\r\n id,\r\n name,\r\n sequence,\r\n websiteUrl,\r\n}\r\nzip {\r\n city,\r\n marketName,\r\n marketId,\r\n postalCode,\r\n state,\r\n}\r\nbrochures {\r\n id,\r\n title,\r\n sequence,\r\n localPath,\r\n url,\r\n thumbnailUrl,\r\n}\r\n`;\r\n\r\nconst openAmenityMutation = (amenity) => {\r\n if (empty(amenity)) return '';\r\n\r\n return `{ ${amenity.id && !isNaN(amenity.id) ? `id: ${amenity.id}, ` : ''} name: ${JSONText(amenity.name)}, websiteUrl: ${JSONText(amenity.websiteUrl || '')}, sequence: ${amenity.sequence} }`;\r\n};\r\n\r\nconst brochureMutation = ({ id: brochureId, sequence, title, url: brochureUrl, type: urlType, file, added, edited, deleted }) => {\r\n if (deleted) {\r\n return `{ id: -${brochureId} }`;\r\n }\r\n if (added) {\r\n return `{ \r\n sequence: ${sequence}\r\n , title: ${JSONText(title)}\r\n ${!empty(brochureUrl) && empty(file) ? `, url: ${JSONText(brochureUrl)}` : ''}\r\n ${urlType === 'Website' && !empty(brochureUrl) ? `, isWebsite: true` : !empty(brochureUrl) ? ',isWebsite: false' : ''}\r\n ${!empty(file) ? `, file: $file${brochureId}` : ''}\r\n }`;\r\n }\r\n if (edited) {\r\n return `{\r\n id: ${brochureId}\r\n ${!empty(sequence) ? `, sequence: ${sequence}` : ''}\r\n ${!empty(title) ? `, title: ${JSONText(title)}` : ''}\r\n ${urlType === 'Website' && !empty(brochureUrl) ? `, isWebsite: true` : !empty(brochureUrl) ? ',isWebsite: false' : ''}\r\n ${!empty(brochureUrl) && empty(file) ? `, url: ${JSONText(brochureUrl)}` : ''}\r\n ${!empty(file) ? `, file: $file${brochureId}` : ''}\r\n }`;\r\n }\r\n return '';\r\n};\r\n\r\nexport const insertLotMutation = (lot) => API_UPDATE_LOT_QUERY(lot, true);\r\nexport const updateLotMutation = (lot) => API_UPDATE_LOT_QUERY(lot, !lot.id);\r\n\r\nconst API_UPDATE_LOT_QUERY = ({ id, builderId, communityId, name, number, status, url, parcelNumber, mlsNumber, sizeAcre, sizeSqFt, description, price, marketingHeadline, latitude, longitude, streetAddress1, streetAddress2, zip = {}, openAmenities, virtualTourUrl, brochures }, isNew) => {\r\n const locationFields = `${!empty(zip) && zip.city !== undefined ? `city: \"${zip.city}\",` : ``}\r\n ${!empty(zip) && zip.state !== undefined ? `state: \"${zip.state}\",` : ``}\r\n ${!empty(zip) && zip.postalCode !== undefined ? `zip: \"${zip.postalCode}\",` : ``}\r\n ${streetAddress1 !== undefined ? `, streetAddress1: ${JSONText(streetAddress1)}` : ``}\r\n ${streetAddress2 !== undefined ? `, streetAddress2: ${JSONText(streetAddress2)}` : ``}\r\n ${\r\n latitude !== undefined || longitude !== undefined\r\n ? `coordinates: {\r\n ${latitude !== undefined ? `, latitude: ${Math.abs(latitude)}` : ``} \r\n ${longitude !== undefined ? `, longitude: -${Math.abs(longitude)}` : ``} \r\n }`\r\n : ''\r\n }\r\n\r\n `.trim();\r\n\r\n const brochuresWithFiles = brochures?.filter(({ file }) => !empty(file));\r\n\r\n return `mutation${\r\n !empty(brochuresWithFiles)\r\n ? `(${brochuresWithFiles\r\n .map(({ id: brochureId }) => {\r\n return `$file${brochureId.toString()}: Upload`;\r\n })\r\n .filter(Boolean)\r\n .join(',')})`\r\n : ''\r\n } {\r\n ${isNew ? `insertLot` : `updateLot`} ( \r\n ${isNew ? `` : `id: ${id}, `} \r\n ${builderId !== undefined ? `,builderId: ${builderId}` : ``} \r\n ${communityId !== undefined ? `,communityId: ${communityId}` : ``}\r\n ${status !== undefined ? `, status: ${status}` : ``}\r\n ${name !== undefined ? `, name: \"${name}\"` : ``}\r\n ${number !== undefined ? `, number: \"${number}\"` : ``}\r\n ${parcelNumber !== undefined ? `, parcelNumber: \"${parcelNumber}\"` : ``}\r\n ${mlsNumber !== undefined ? `, mlsNumber: ${JSONText(mlsNumber)}` : ``}\r\n ${price !== undefined ? `, price: ${price}` : ``}\r\n ${sizeAcre !== undefined ? `, sizeAcre: ${sizeAcre}` : ``}\r\n ${description !== undefined ? `, description: ${JSONText(description)}` : ``}\r\n ${marketingHeadline !== undefined ? `marketingHeadline: ${JSONText(marketingHeadline)}` : ``}\r\n ${sizeSqFt !== undefined ? `sizeSqFt: ${sizeSqFt}` : ``}\r\n ${url !== undefined ? `url: ${JSONText(url)}` : ``}\r\n ${virtualTourUrl !== undefined ? `virtualTourUrl: ${JSONText(virtualTourUrl)}` : ``}\r\n ${!empty(locationFields) ? `, location: { ${locationFields} }` : ``} \r\n ${!empty(brochures) ? `brochures: [${brochures.map((brochure) => brochureMutation(brochure)).join(',')}]` : ''}\r\n ${openAmenities !== undefined ? `, openAmenities: [${openAmenities.map((amenity) => openAmenityMutation(amenity)).join(',')}]` : ``}\r\n )\r\n {\r\n ${API_GET_LOT_FIELDS} ${API_GET_LOT_CONTEXT_FIELDS}\r\n }\r\n }`.trim();\r\n};\r\n\r\nexport const requestLotApi = ({ entityId }) => `\r\nquery { \r\n lots(lotId:${entityId}) {\r\n ${API_GET_LOT_FIELDS} \r\n }\r\n}`;\r\n\r\n/**\r\n * Header information for the Lot page.\r\n * @param {*} id Lot ID\r\n * @returns\r\n */\r\nexport const lotBasicInfo = ({ entityId: id }) => `\r\nquery {\r\n lots(lotId: ${id}) {\r\n id\r\n name\r\n price\r\n number\r\n status\r\n streetAddress1\r\n streetAddress2\r\n zip {\r\n city\r\n state\r\n }\r\n ${API_GET_LOT_CONTEXT_FIELDS}\r\n }\r\n}`;\r\n\r\nexport const LotImagesQuery = (requestArguments) => LotImages(requestArguments);\r\n\r\n/**\r\n * Image and Video implementations\r\n */\r\nconst LotImages = ({ filter: { key, value } = {}, typeCodes, sortColumns = '[{order: Asc, field: ImageSequence}]', status = ['Active'], preferredFlag }) => `{\r\n lots(\r\n ${key && value ? `${key}: ${value},` : ''}\r\n ) {\r\n id\r\n images(\r\n ${typeCodes ? `typeCodes:[${typeCodes}],` : ''}\r\n ${sortColumns ? `sortBy:${sortColumns},` : ``}\r\n ${preferredFlag ? `preferredFlag:${preferredFlag},` : ``}\r\n status:[${status}]\r\n ) { \r\n ${ImageQueryFields}\r\n }\r\n imageCounter {\r\n count\r\n type\r\n }\r\n imageCounterNonInherited: imageCounter(inheritance: false) {\r\n count\r\n type\r\n }\r\n }\r\n}\r\n`;\r\n\r\nexport const LotInteractiveMediaQuery = ({ lotId, status = ['Active'] }) => `\r\n{\r\n lots(lotId:${lotId}){\r\n id,\r\n interactiveMedias(status:[${status.join(', ')}]){\r\n ${InteractiveMediaQueryFields}\r\n }\r\n }\r\n}\r\n`;\r\nconst LotVideos = ({ filter: { key, value } = {}, typeCodes, sortColumns = '[{order: Asc, field: Sequence}]', status = ['Active'] }) => `{\r\n lots(\r\n ${key && value ? `${key}: ${value},` : ''}\r\n ) {\r\n id,\r\n videos(\r\n ${typeCodes ? `typeCodes:[${typeCodes}],` : ''}\r\n ${sortColumns ? `sortBy:${sortColumns},` : ``}\r\n status:[${status}]\r\n ) {\r\n ${VideoQueryFields}\r\n },\r\n videoCount\r\n }\r\n}\r\n`;\r\n\r\n/**\r\n * Manage homes lots request (for the lots grid)\r\n * @param { Object } requestArguments\r\n */\r\nexport const lotsQuery = ({ communityId }) => `query {\r\n communities(communityId: ${communityId}) {\r\n id\r\n lots(\r\n status: [Active, Inactive]\r\n sortBy: [{field: StatusId, order: Asc}, {field: Name, order: Asc}]\r\n ) {\r\n id\r\n number\r\n name\r\n streetAddress1\r\n streetAddress2\r\n sizeSqFt\r\n price\r\n status \r\n }\r\n }\r\n}`;\r\n\r\nexport const LotVideosQuery = (requestArguments) => LotVideos(requestArguments);\r\n","import { Model } from '../utils/models';\r\nimport { GraphQLQuery } from '../utils/api/graph-helpers';\r\nimport { lotContextRequest } from '@/redux/context/actions';\r\nimport { Community } from './Community';\r\nimport { lotSchema } from '../app.entities';\r\nimport { updateLotMutation } from '@/modules/listings-detail/lot-detail/@redux/api';\r\n\r\nexport const Lot = () =>\r\n new Model({\r\n model: 'lot',\r\n name: 'lots',\r\n query: new GraphQLQuery([\r\n {\r\n operation: 'lots',\r\n argument: {},\r\n fields: ['id', 'name', 'number'],\r\n },\r\n ]),\r\n parent: Community(),\r\n mutations: { save: updateLotMutation },\r\n contextRequest: lotContextRequest,\r\n isHome: true,\r\n urlKey: 'lotId',\r\n schema: lotSchema,\r\n describerFields: {\r\n id: 'id',\r\n name: 'name',\r\n relation: 'lot',\r\n relationId: 'lotId',\r\n status: 'status',\r\n },\r\n template: (id, context) => {\r\n return {\r\n id,\r\n ...context,\r\n };\r\n },\r\n });\r\n","import { createSelector } from 'reselect';\r\nimport { entityById, entitiesSelector } from '@/redux/models/selectors';\r\nimport { Community } from '@/models/Community';\r\nimport { empty } from '@/lodash/';\r\nimport { denormalize } from 'normalizr';\r\nimport { modelRequestSchema } from '@/app/app.entities';\r\n\r\nexport const getCommunityById = (state, communityId) => entityById(state, communityId, Community().schema);\r\n\r\nexport const getCommunityPlans = (state, communityId) =>\r\n createSelector(\r\n (_state) => getCommunityById(_state, communityId),\r\n (community) =>\r\n community?.plans?.map(({ id, name, number, basePrice, status, hotHome, baths, halfBaths, garages, beds, squareFeet, stories, parentPlan, community: { marketingStatus } = {} }) => {\r\n const { id: parentPlanId, builder: { builderId, builderName, parentBuilderId } = {} } = parentPlan || {};\r\n const newPlan = {\r\n id,\r\n name,\r\n number,\r\n basePrice,\r\n status,\r\n hotHome,\r\n baths,\r\n halfBaths,\r\n garages,\r\n community: { marketingStatus },\r\n beds,\r\n squareFeet,\r\n stories,\r\n parentPlanId,\r\n parentPlan: { id: parentPlanId, builder: { builderId, builderName, parentBuilderId } },\r\n };\r\n return newPlan;\r\n }) || null\r\n )(state);\r\n\r\nexport const getCommunitySpecs = (state, communityId) =>\r\n createSelector(\r\n (_state) => getCommunityById(_state, communityId),\r\n (community) =>\r\n community?.specs?.map(({ id, number, streetAddress1, price, moveInDate, status, hotHome, type, community: { marketingStatus } = {}, plan: { name } = {} }) => ({\r\n id,\r\n number,\r\n streetAddress1,\r\n price,\r\n moveInDate,\r\n status,\r\n hotHome,\r\n type,\r\n community: { marketingStatus },\r\n plan: { name },\r\n })) || null\r\n )(state);\r\n\r\nexport const getCommunityLots = (state, communityId) =>\r\n createSelector(\r\n (_state) => getCommunityById(_state, communityId),\r\n (community) =>\r\n community?.lots?.map(({ id, number, streetAddress1, price, status, name, streetAddress2, sizeSqFt }) => ({\r\n id,\r\n number,\r\n name,\r\n streetAddress1,\r\n streetAddress2,\r\n sizeSqFt,\r\n price,\r\n status,\r\n })) || null\r\n )(state);\r\n\r\nexport const getCommunities = createSelector(entitiesSelector, (entities) => {\r\n if (!empty(entities?.communities)) {\r\n try {\r\n const denormalized = denormalize({ communities: Object.keys(entities?.communities) }, modelRequestSchema, entities);\r\n if (!empty(denormalized?.communities)) {\r\n return denormalized?.communities;\r\n }\r\n } catch {\r\n return undefined;\r\n }\r\n }\r\n});\r\n\r\nexport const isMpc = (state, communityId) =>\r\n createSelector(\r\n (_state) => getCommunityById(_state, communityId),\r\n (community) => (!empty(community) && community.listingType === 'MPC') || false\r\n )(state);\r\n","import { createSelector } from 'reselect';\r\nimport { entityById, entitiesSelector } from '@/redux/models/selectors';\r\nimport { Plan } from '@/models/Plan';\r\nimport { empty } from '@/lodash/';\r\n\r\nexport const getPlanById = (state, planId) => entityById(state, planId, Plan().schema);\r\nexport const getPlanChildren = (state, planId) =>\r\n createSelector(\r\n (_state) => getPlanById(_state, planId),\r\n (plan) => {\r\n if (empty(plan)) {\r\n return null;\r\n }\r\n if (!plan?.parentFlag && !plan?.parentPlanId) {\r\n return [plan];\r\n }\r\n\r\n const sortedByStatus = (plan?.childPlans || []).sort((a, b) => {\r\n if (a?.community?.name < b?.community?.name) {\r\n return -1;\r\n }\r\n if (b?.community?.name < a?.community?.name) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n return sortedByStatus.sort((a, b) => {\r\n if (a?.status < b?.status) {\r\n return -1;\r\n }\r\n if (b?.status < a?.status) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n )(state);\r\n\r\nexport const getPlans = (state) => {\r\n const { plans = {} } = entitiesSelector(state) || {};\r\n return Object.values(plans);\r\n};\r\n\r\nexport const isWebArchPlan = (state, planId) =>\r\n createSelector(\r\n (_state) => getPlanById(_state, planId),\r\n (plan) => {\r\n if (!empty(plan?.channelDisplay) || !empty(plan?.builder?.displayChannelSelection)) {\r\n return plan?.channelDisplay?.displayOnWebArch || plan?.builder?.displayChannelSelection?.displayOnWebArch;\r\n }\r\n }\r\n )(state);\r\n","import { entityById } from '@/redux/models/selectors';\r\nimport { Spec } from '@/models/Spec';\r\n\r\nexport const getSpecById = (state, specId) => entityById(state, specId, Spec().schema);\r\n","import { entitiesSelector, entityById } from '@/redux/models/selectors';\r\nimport { Brand } from '@/models/Brand';\r\nimport { createSelector } from 'reselect';\r\nimport { empty } from '@/lodash/empty';\r\nimport { denormalize } from 'normalizr';\r\nimport { modelRequestSchema } from '@/app/app.entities';\r\n\r\nexport const getBrandById = (state, brandId) => entityById(state, brandId, Brand().schema);\r\n\r\nexport const getBrands = createSelector(entitiesSelector, (entities) => {\r\n if (!empty(entities?.brands)) {\r\n try {\r\n const denormalized = denormalize({ brands: Object.keys(entities?.brands) }, modelRequestSchema, entities);\r\n if (!empty(denormalized?.brands)) {\r\n return denormalized?.brands;\r\n }\r\n } catch {\r\n return undefined;\r\n }\r\n }\r\n});\r\n","import { entityById } from '@/redux/models/selectors';\r\nimport { Lot } from '@/models/Lot';\r\n\r\nexport const getLotById = (state, lotId) => entityById(state, lotId, Lot().schema);\r\n","import { brandSchema } from '@/app/app.entities';\r\nimport { arrayToObjectByField } from '@/lodash/arrayToObject';\r\nimport { orderByField } from '@/lodash/orderBy';\r\nimport { getBrands } from '@/redux/entities';\r\nimport { schemaDenormalizer } from '@/redux/models/selectors';\r\nimport { createSelector } from 'reselect';\r\n\r\n/**\r\n Returns the Normalized version of the passed lot\r\n * @param {*} state Redux state\r\n * @param {*} brandId brand id to check on the store\r\n*/\r\nexport const brandEntitySelector = schemaDenormalizer((state, brandId) => brandId, brandSchema);\r\n\r\nexport const brandInfoSelector = (state, brandId) => {\r\n const brand = brandEntitySelector(state, brandId);\r\n\r\n // with this single map approach we will keep cases where sequence is defined (exists data in brand_faq_answer table) and cases where there\r\n // isnt data, so all sequences comes with null from api. There is not a valid case where we have mixed scenarios, it was confirmed in db and current functionality\r\n return {\r\n ...brand,\r\n questions: arrayToObjectByField(\r\n orderByField(\r\n (brand?.questions || []).map((q, index) => ({ ...q, id: `q${q.id}`, sequence: q.sequence ? q.sequence : index + 1 })),\r\n 'sequence'\r\n ),\r\n 'id'\r\n ),\r\n };\r\n};\r\n\r\nexport const getCorporateBrands = (state, corporateId) =>\r\n createSelector(getBrands, (brands) =>\r\n orderByField(\r\n Object.values(brands ?? [])\r\n /**\r\n * Filter brands by the specific builder.\r\n */\r\n .filter(({ corporations }) => corporations?.some((builder) => corporateId === builder?.builderId))\r\n /**\r\n * Remove unrelated corporations from each brand based on the specified builder.\r\n */\r\n .map((brand) => ({ ...brand, corporations: brand.corporations.filter((builder) => corporateId === builder?.builderId) })),\r\n 'brandName'\r\n )\r\n )(state);\r\n","export const BRAND_FIELDS = `\r\n dateCreated,\r\n dateLastChanged,\r\n logUrlMed,\r\n showcase {\r\n status,\r\n dateLastChanged\r\n },\r\n corporations {\r\n builderId,\r\n builderName\r\n }\r\n`;\r\n\r\nexport const BRAND_MAIN_FIELDS = `\r\n showcase {\r\n status,\r\n emailAddress,\r\n webUrl,\r\n description,\r\n rssUrl,\r\n dateLastChanged,\r\n websiteFaqUrl,\r\n facebookHeaderScript,\r\n facebookPluginHTML,\r\n twitterWidget,\r\n overview\r\n }\r\n`;\r\n\r\nexport const BRAND_TESTIMONIAL_FIELDS = `\r\n id,\r\n attribution,\r\n description,\r\n builderName,\r\n communityName\r\n`;\r\n\r\nexport const BRAND_QUESTIONS_FIELDS = `\r\n questions {\r\n id,\r\n sequence,\r\n name: question,\r\n answer {\r\n name: answer\r\n }\r\n }\r\n`;\r\n","import apiClient from '@/utils/api/api';\r\n\r\nimport { JSONText, isNullish, empty, capitalize } from '@/lodash/';\r\nimport { BRAND_FIELDS, BRAND_MAIN_FIELDS, BRAND_QUESTIONS_FIELDS, BRAND_TESTIMONIAL_FIELDS } from './fields';\r\nimport { qif } from '@/utils/api/graph-helpers';\r\n\r\nimport { ImageQueryFields } from '@/redux/images/api';\r\nimport { VideoQueryFields } from '@/redux/videos/api';\r\n\r\n/**\r\n * Query for tree view population and header information.\r\n * @param {Number} builderId\r\n * @returns\r\n */\r\nexport const brandTreeViewQuery = ({ builderId, divisionIds, isExternalUser }) => `\r\n query BrandsTreeView {\r\n brands(builderId: ${builderId}, ${isExternalUser ? `builderIds: [${divisionIds}]` : ''}) {\r\n brandId,\r\n brandName,\r\n ${BRAND_FIELDS}\r\n }\r\n }\r\n`;\r\n\r\n/**\r\n * Request for the brands detail page\r\n * This query will be composed based on the current tab\r\n * @param {Object}\r\n * @returns {String} The GraphQL Query\r\n */\r\nexport const brandDetail = ({ entityId: id, header, section }) => `\r\n query brandsDetailRequest {\r\n brands(brandId: ${id}) {\r\n brandId, \r\n logUrlMed,\r\n corporations {\r\n builderId\r\n builderName\r\n divisions {\r\n builderId\r\n builderName\r\n brandId\r\n }\r\n }\r\n ${header ? BRAND_FIELDS : ''}\r\n ${section === 'bdx-brand-main' ? BRAND_MAIN_FIELDS : ''}\r\n ${section === 'bdx-brand-faq' ? BRAND_QUESTIONS_FIELDS : ''}\r\n }\r\n }\r\n`;\r\n\r\nexport const insertBrandMutationApi = (brand) => UPDATE_BRAND_QUERY(brand, true);\r\nexport const updateBrandMutationApi = (brand) => UPDATE_BRAND_QUERY(brand, !brand.id);\r\n\r\nconst UPDATE_BRAND_QUERY = ({ id, showcase = {}, testimonials, questions }, isNew) => {\r\n let showcaseInfo = '';\r\n\r\n showcaseInfo = `${qif(!isNullish(showcase?.emailAddress), () => `emailAddress: ${JSONText(showcase.emailAddress)},`)}\r\n ${qif(!isNullish(showcase?.webUrl), () => `webUrl: ${JSONText(showcase.webUrl)},`)}\r\n ${qif(!isNullish(showcase?.status), () => `status: ${showcase.status},`)}\r\n ${qif(!isNullish(showcase?.websiteFaqUrl), () => `websiteFaqUrl: ${JSONText(showcase.websiteFaqUrl)},`)}\r\n ${qif(!isNullish(showcase?.description), () => `description: ${JSONText(showcase.description)},`)}\r\n ${qif(!isNullish(showcase?.overview), () => `overview: [${Object.values(showcase.overview).map((o) => JSONText(o))}],`)}\r\n ${qif(showcase?.socialMediaChecked?.includes('none'), () => `rssUrl: \"\",`)}\r\n ${qif(!isNullish(showcase?.rssUrl) && showcase?.socialMediaChecked?.includes('rssUrl'), () => `rssUrl: ${JSONText(showcase.rssUrl)},`)}\r\n ${qif(!isNullish(showcase?.facebookHeaderScript) && showcase?.socialMediaChecked?.includes('facebook'), () => `facebookHeaderScript: ${JSONText(showcase.facebookHeaderScript)},`)}\r\n ${qif(!isNullish(showcase?.facebookPluginHTML) && showcase?.socialMediaChecked?.includes('facebook'), () => `facebookPluginHTML: ${JSONText(showcase.facebookPluginHTML)},`)}\r\n ${qif(!isNullish(showcase?.twitterWidget) && showcase?.socialMediaChecked?.includes('twitter'), () => `twitterWidget: ${JSONText(showcase.twitterWidget)},`)}`.trim();\r\n\r\n const copiedTestimonials = testimonials?.filter(({ copied }) => copied);\r\n const brandTestimonials = testimonials?.filter(({ added, edited, deleted }) => added || edited || deleted);\r\n\r\n return `mutation {\r\n ${isNew ? `insertBrand` : `updateBrand`} (\r\n ${isNew ? `` : `id: ${id}, `}\r\n ${!empty(showcaseInfo) ? `, showcase: { ${showcaseInfo} }` : ``}\r\n ${!empty(questions) ? `, questions: [${Object.values(questions).map(({ id: answerId, sequence, answer }) => `{ id: ${answerId.replace('q', '')}, ${qif(!isNullish(sequence), () => `sequence: ${sequence},`)} ${qif(!isNullish(answer), () => `answer: ${JSONText(answer)}`)}}`)}]` : ''}\r\n )\r\n {\r\n brandId,\r\n brandName,\r\n ${BRAND_FIELDS}\r\n ${BRAND_MAIN_FIELDS}\r\n ${!empty(questions) ? BRAND_QUESTIONS_FIELDS : ''}\r\n }\r\n ${!empty(brandTestimonials) ? brandTestimonials.map((testimonial) => testimonialsMutation(id, testimonial)) : ''}\r\n ${!empty(copiedTestimonials) ? copyTestimonialsMutation(id, copiedTestimonials) : ''}\r\n }\r\n `.trim();\r\n};\r\n\r\nexport const BrandImagesQuery = (requestArguments) => brandImages(requestArguments);\r\n\r\n/**\r\n * Image and Video implementations\r\n */\r\nconst brandImages = ({ filter: { key, value } = {}, typeCodes, sortColumns = '[{order: Asc, field: ImageSequence}]', status = ['Active'], preferredFlag }) => `\r\nquery brandsImages {\r\n brands(\r\n ${key && value ? `${key}: ${value},` : ''}\r\n ) {\r\n brandId\r\n images(\r\n ${typeCodes ? `typeCodes:[${typeCodes}],` : ''}\r\n ${sortColumns ? `sortBy:${sortColumns},` : ``}\r\n ${preferredFlag ? `preferredFlag:${preferredFlag},` : ``}\r\n status:[${status}]\r\n ) { \r\n ${ImageQueryFields}\r\n }\r\n imageCounter (typeCodes: [BRD, BAA], status:[${status}]) {\r\n count\r\n type\r\n }\r\n }\r\n}\r\n`;\r\n\r\nexport const BrandVideosQuery = (requestArguments) => brandVideos(requestArguments);\r\n\r\n/**\r\n * Video implementations\r\n */\r\nconst brandVideos = ({ filter: { key: brandId, value: id } = {}, typeCodes, sortColumns = '[{order: Asc, field: Sequence}]', status = ['Active'] }) => `\r\nquery brandsVideos {\r\n brands(\r\n ${brandId && id ? `${brandId}: ${id},` : ''}\r\n ) {\r\n brandId,\r\n videos(\r\n ${typeCodes ? `typeCodes:[${typeCodes}],` : ''}\r\n ${sortColumns ? `sortBy:${sortColumns},` : ``}\r\n status:[${status}]\r\n ) {\r\n ${VideoQueryFields}\r\n },\r\n videoCount\r\n }\r\n}\r\n`;\r\n\r\nexport const BrandTestimonialsQuery = (requestArguments) => brandTestimonials(requestArguments);\r\n\r\n/**\r\n * Testimonials implementations\r\n */\r\nconst brandTestimonials = ({ entityId: brandId }) => `\r\n {\r\n brands(brandId: ${brandId}) {\r\n brandId,\r\n testimonials {\r\n id\r\n sequence\r\n attribution\r\n description\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst testimonialsMutation = (brandId, { added, edited, deleted, copied, id, sequence, attribution, description }) => `\r\n ${\r\n added\r\n ? `\r\n insert${id}: insertBrandTestimonial(\r\n brandId: ${brandId},\r\n sequence: ${sequence},\r\n attribution: ${JSONText(attribution)},\r\n description: ${JSONText(description)}\r\n ) {\r\n id \r\n }\r\n `\r\n : ''\r\n }\r\n ${\r\n deleted\r\n ? `\r\n delete${id}: deleteBrandTestimonials(\r\n ids: [${id}]\r\n ) {\r\n id\r\n }\r\n `\r\n : ''\r\n }\r\n ${\r\n edited && !added && !deleted && !copied\r\n ? `\r\n update${id}: updateBrandTestimonial(\r\n testimonialId: ${id}\r\n ${qif(!isNullish(sequence), () => `, sequence: ${sequence}`)}\r\n ${qif(!isNullish(attribution), () => `, attribution: ${JSONText(attribution)}`)}\r\n ${qif(!isNullish(description), () => `, description: ${JSONText(description)}`)}\r\n ) {\r\n id \r\n }\r\n `\r\n : ''\r\n }\r\n`;\r\n\r\nconst copyTestimonialsMutation = (brandId, testimonials) => `\r\n copyTestimonials(\r\n brandId: ${brandId},\r\n testimonialIds: [${testimonials.map(({ id, type, sequence }) => `{id: ${id}, type: ${capitalize(type)} ${qif(!isNullish(sequence), () => `, sequence: ${sequence}`)}}`)}]\r\n ) {\r\n ${BRAND_TESTIMONIAL_FIELDS}\r\n }\r\n`;\r\n\r\nexport async function brandModalTestimonialsQuery({ brandId, testimonialType, pageNumber, pageSize }, { builderId, parentBuilderId, communityId }) {\r\n let response = {};\r\n const builderArgument = `${!empty(parentBuilderId) ? 'builderId' : 'corpBuilderId'}: ${builderId}`;\r\n\r\n try {\r\n response = await apiClient.post(null, {\r\n query: `\r\n {\r\n testimonials: existingTestimonials(\r\n brandId: ${brandId},\r\n ${builderArgument},\r\n ${!empty(communityId) ? `communityId: ${communityId},` : ''}\r\n entities: [${capitalize(testimonialType)}],\r\n page: ${pageNumber - 1 || 0},\r\n top: ${pageSize},\r\n ) {\r\n ${BRAND_TESTIMONIAL_FIELDS}\r\n }\r\n counts: existingTestimonialsCount(\r\n brandId: ${brandId},\r\n ${builderArgument},\r\n ${!empty(communityId) ? `communityId: ${communityId},` : ''}\r\n entities: [Builder, Community]\r\n ) {\r\n type\r\n count\r\n }\r\n }\r\n `,\r\n });\r\n } catch (error) {\r\n return { error };\r\n }\r\n\r\n return { data: response?.data?.Result };\r\n}\r\n","import { Model } from '../utils/models';\r\nimport { GraphQLQuery } from '../utils/api/graph-helpers';\r\nimport { brandSchema } from '../app.entities';\r\nimport { brandInfoSelector } from '@/modules/brand/@redux/selectors';\r\nimport { updateBrandMutationApi } from '@/modules/brand/@redux/api';\r\nimport { brandContextRequest } from '@/redux/context/actions';\r\nimport { Builder } from './Builder';\r\n\r\nexport const Brand = () =>\r\n new Model({\r\n name: 'brands',\r\n model: 'brand',\r\n urlKey: 'brandId',\r\n schema: brandSchema,\r\n mutations: { save: updateBrandMutationApi },\r\n baseSelector: brandInfoSelector,\r\n parent: Builder(),\r\n contextRequest: brandContextRequest,\r\n query: new GraphQLQuery([\r\n {\r\n operation: 'brands',\r\n argument: {},\r\n fields: ['brandId', 'brandName'],\r\n },\r\n ]),\r\n describerFields: {\r\n id: 'brandId',\r\n name: 'brandName',\r\n relationId: 'brandId',\r\n },\r\n });\r\n","import { DIVISION_CONTEXT_REQUEST, DIVISION_CONTEXT_SUCCESS, DIVISION_CONTEXT_FAIL, BUILDER_CONTEXT_REQUEST, BUILDER_CONTEXT_SUCCESS, BUILDER_CONTEXT_FAIL, COMMUNITY_CONTEXT_REQUEST, COMMUNITY_CONTEXT_SUCCESS, COMMUNITY_CONTEXT_FAIL, PLAN_CONTEXT_FAIL, PLAN_CONTEXT_SUCCESS, PLAN_CONTEXT_REQUEST, SPEC_CONTEXT_REQUEST, SPEC_CONTEXT_SUCCESS, SPEC_CONTEXT_FAIL, CONTEXT_LOADING, LOT_CONTEXT_REQUEST, LOT_CONTEXT_SUCCESS, LOT_CONTEXT_FAIL, BRAND_CONTEXT_SUCCESS, BRAND_CONTEXT_REQUEST, BRAND_CONTEXT_FAIL, AGENT_CONTEXT_SUCCESS, AGENT_CONTEXT_REQUEST, AGENT_CONTEXT_FAIL } from './types';\r\nimport { BuilderContextQuery, DivisionContextQuery, CommunityContextQuery, PlanContextQuery, SpecContextQuery, LotContextQuery, BrandContextQuery, AgentContextQuery } from './api';\r\nimport { Community } from '@/models/Community';\r\nimport { Plan } from '@/models/Plan';\r\nimport { Spec } from '@/models/Spec';\r\nimport { Builder } from '@/models/Builder';\r\nimport { Division } from '@/models/Division';\r\nimport { Lot } from '@/models/Lot';\r\nimport { Brand } from '@/models/Brand';\r\nimport { modelRequestSchema } from '../../app.entities';\r\n/**\r\n * Division Context Action Creators\r\n */\r\nexport const divisionContextRequest = (requestArguments) => ({ type: DIVISION_CONTEXT_REQUEST, query: DivisionContextQuery(requestArguments), meta: { schema: modelRequestSchema, context: true } });\r\nexport const divisionContextSuccess = (entities, meta) => ({ type: DIVISION_CONTEXT_SUCCESS, data: { entities, section: Division().name }, meta });\r\nexport const divisionContextFail = (error) => ({ type: DIVISION_CONTEXT_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Builder Context Action Creators\r\n */\r\nexport const builderContextRequest = (requestArguments) => ({ type: BUILDER_CONTEXT_REQUEST, query: BuilderContextQuery(requestArguments), meta: { schema: modelRequestSchema, context: true } });\r\nexport const builderContextSuccess = (entities, meta) => ({ type: BUILDER_CONTEXT_SUCCESS, data: { entities, section: Builder().name }, meta });\r\nexport const builderContextFail = (error) => ({ type: BUILDER_CONTEXT_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Community Context Action Creators\r\n */\r\nexport const communityContextRequest = (requestArguments) => ({ type: COMMUNITY_CONTEXT_REQUEST, query: CommunityContextQuery(requestArguments), meta: { schema: modelRequestSchema, context: true } });\r\nexport const communityContextSuccess = (entities, meta) => ({ type: COMMUNITY_CONTEXT_SUCCESS, data: { entities, section: Community().name }, meta });\r\nexport const communityContextFail = (error) => ({ type: COMMUNITY_CONTEXT_FAIL, error: true, data: error });\r\n/**\r\n * Plan Context Action Creators\r\n */\r\nexport const planContextRequest = (requestArguments) => ({ type: PLAN_CONTEXT_REQUEST, query: PlanContextQuery(requestArguments), meta: { schema: modelRequestSchema, context: true } });\r\nexport const planContextSuccess = (entities, meta) => ({ type: PLAN_CONTEXT_SUCCESS, data: { entities, section: Plan().name }, meta });\r\nexport const planContextFail = (error) => ({ type: PLAN_CONTEXT_FAIL, error: true, data: error });\r\n/**\r\n * Spec Context Action Creators\r\n */\r\nexport const specContextRequest = (requestArguments) => ({ type: SPEC_CONTEXT_REQUEST, query: SpecContextQuery(requestArguments), meta: { schema: modelRequestSchema, context: true } });\r\nexport const specContextSuccess = (entities, meta) => ({ type: SPEC_CONTEXT_SUCCESS, data: { entities, section: Spec().name }, meta });\r\nexport const specContextFail = (error) => ({ type: SPEC_CONTEXT_FAIL, error: true, data: error });\r\n/**\r\n * Lot Context Action Creators\r\n */\r\nexport const lotContextRequest = (requestArguments) => ({ type: LOT_CONTEXT_REQUEST, query: LotContextQuery(requestArguments), meta: { schema: modelRequestSchema, context: true } });\r\nexport const lotContextSuccess = (entities, meta) => ({ type: LOT_CONTEXT_SUCCESS, data: { entities, section: Lot().name }, meta });\r\nexport const lotContextFail = (error) => ({ type: LOT_CONTEXT_FAIL, error: true, data: error });\r\n/**\r\n * Brand Context Action Creators\r\n */\r\nexport const brandContextRequest = (requestArguments) => ({ type: BRAND_CONTEXT_REQUEST, query: BrandContextQuery(requestArguments), meta: { schema: modelRequestSchema, context: true } });\r\nexport const brandContextSuccess = (entities, meta) => ({ type: BRAND_CONTEXT_SUCCESS, data: { entities, section: Brand().name }, meta });\r\nexport const brandContextFail = (error) => ({ type: BRAND_CONTEXT_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Agent Context Action Creators\r\n */\r\nexport const agentContextRequest = (requestArguments) => ({ type: AGENT_CONTEXT_REQUEST, query: AgentContextQuery(requestArguments), meta: { schema: modelRequestSchema, context: true } });\r\nexport const agentContextSuccess = (entities, meta) => ({ type: AGENT_CONTEXT_SUCCESS, data: { entities, section: Builder().name }, meta });\r\nexport const agentContextFail = (error) => ({ type: AGENT_CONTEXT_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Context Loading State\r\n */\r\nexport const contextLoading = (loading) => ({ type: CONTEXT_LOADING, data: { loading } });\r\n","import { Model } from '../utils/models';\r\nimport { GraphQLQuery } from '../utils/api/graph-helpers';\r\nimport { divisionSchema } from '../app.entities';\r\nimport { Builder } from './Builder';\r\nimport { divisionContextRequest } from '@/redux/context/actions';\r\n\r\nexport class DivisionModel extends Model {\r\n model = 'division';\r\n\r\n name = 'builders';\r\n\r\n query = new GraphQLQuery([\r\n {\r\n operation: 'builders',\r\n argument: { divOnly: true },\r\n fields: ['builderId', 'builderName', 'parentBuilderId', 'statusId'],\r\n },\r\n ]);\r\n\r\n schema = divisionSchema;\r\n\r\n urlKey = 'divisionId';\r\n\r\n contextRequest = divisionContextRequest;\r\n\r\n describerFields = {\r\n id: 'builderId',\r\n name: 'builderName',\r\n relation: 'builder',\r\n relationId: 'builderId',\r\n };\r\n\r\n parent = Builder();\r\n}\r\n\r\nexport const Division = () => new DivisionModel();\r\n","import diff from 'flat-diff';\r\nimport { isArray } from '@/lodash/isArray';\r\nimport { empty } from '../../utils/bdx-lodash-lite/empty';\r\nimport { entitiesSelector } from '../models/selectors';\r\nimport { deepCompare, objectPath, deepMerge } from '../../utils/bdx-lodash-lite';\r\nimport clone from '@/utils/external/clone';\r\n\r\n/**\r\n * Find an entity that have a specific property formId\r\n * @param {*} state current state\r\n * @param { Number } id object identifier\r\n */\r\nexport const entityIdByFormIdSelector = (state, model, formId) => {\r\n const entity = state.app.entities && state.app.entities[model] && Object.values(state.app.entities[model]).find((item) => item.formId === formId);\r\n return entity && entity.id;\r\n};\r\n/**\r\n * Find an entity based on its id and model.\r\n * @param {*} state Current state.\r\n * @param { Number } id Object identifier.\r\n * @param {*} model Model to look for.\r\n */\r\nexport const entityIdByModelSelector = (state, id, model) => {\r\n return state.app.entities?.[model.name] && Object.values(state.app.entities[model.name]).find((entity) => entity[model.describerFields.id] === id);\r\n};\r\n/**\r\n * Find and entity being edited on the forms.entities section of the store by its ID\r\n * @param {*} state current state\r\n * @param { Number } id object identifier\r\n */\r\nexport const editEntitySelector = (state, id, model) => {\r\n if (!empty(state && state.app.forms && state.app.forms.entities)) {\r\n return clone(state.app.forms.entities.find((_item) => String(_item.id) === String(id) && _item.model === model));\r\n }\r\n};\r\n/**\r\n * Edit entities by model\r\n * @param {*} state current state\r\n * @param {*} _model model to look for\r\n */\r\nexport const editEntityByModelSelector = (state, _model) => {\r\n if (!empty(state && state.app.forms && state.app.forms.entities)) {\r\n return clone(state.app.forms.entities.filter(({ model }) => deepCompare(model, _model)) || []);\r\n }\r\n return [];\r\n};\r\n/**\r\n * Returns all the entities currently being edited\r\n * @param {*} state current state\r\n */\r\nexport const editEntitiesSelector = (state) => state && state.app.forms && state.app.forms.entities;\r\n/**\r\n * Returns all differences between the edited entity and the original one\r\n * @param {Object} state current state\r\n * @id {Number} id of the edited entity\r\n * @model {Object} entity type being edited\r\n */\r\nexport const editEntitiesDifferencesSelector = (state, id, model, required = [], arrayOnlyChanges = []) => {\r\n const entities = entitiesSelector(state);\r\n const arrayFieldsRestriction = ['contactid', 'extensiontype', 'type']; // Fields inside arrays fields that needs to be always included if there were a change in their array index (example, if phone extension changes for a comm, u always need to send the phonetype to the api)\r\n const fieldForcedDependencies = { 'zip.city': 'zip.postalCode', 'location.city': 'location.zip', 'salesOffice.city': 'salesOffice.zip' }; // Some fields need to be sent to the api, if other field changes, example in a spec if the city change Api requires the zip to be sent, we have this whitelist for that matter.\r\n\r\n const sourceEntity = entities[model] && entities[model][id];\r\n const editedEntity = editEntitySelector(state, id, model);\r\n if (!empty(sourceEntity) && !empty(editedEntity)) {\r\n const changesAnalizer = diff(sourceEntity, editedEntity.entity);\r\n const changes = {};\r\n // compare modified entity vs original one and get the real changes\r\n changesAnalizer\r\n .filter((change) => (required instanceof Array && required.includes(change.path)) || (isPathAnArray(change.path) && change.type !== 'del') || (change.type !== 'same' && change.type !== 'del' && !deepCompare(change.prev, change.value)))\r\n .map((comm) => {\r\n if (required instanceof Array && required.includes(comm.path)) {\r\n changes[comm.path] = comm.value;\r\n return;\r\n }\r\n // Return the new object with the fields that changed, for arrays this should return all the array items if there were any change in on of the items (we always send the entire array values to be updated)\r\n // eslint-disable-next-line no-restricted-globals\r\n const arrayIndex = comm.path.split('.').filter((field) => !isNaN(field));\r\n const arrayRootPath = arrayIndex.length > 0 && comm.path.substr(0, comm.path.indexOf(`.${arrayIndex[0]}`));\r\n const currentPathIndex = comm?.path.substr(0, comm.path.lastIndexOf('.'));\r\n // eslint-disable-next-line prettier/prettier\r\n const fieldName = comm.path.toLowerCase().split('.').pop();\r\n const arrayFieldInIndex = changesAnalizer.find((change) => change.path.includes(`${currentPathIndex}.`) && change.type !== 'same');\r\n const changesInArrayLevel = changesAnalizer.some((change) => change.path.includes(`${arrayRootPath}.`) && change.type !== 'same');\r\n\r\n // If the action send the arrayOnlyChanges = true, only include changed things in the arrays, not the entire array,\r\n // so fields not changed are aborted here, to dont include them (include only ids, we need them to update,\r\n // the arrayFieldRestriccion says us what fields from arrays always includes)\r\n // dont include ids in array index that havent change anything for that array index (last check after ||)\r\n if (arrayRootPath && arrayOnlyChanges.includes(arrayRootPath) && ((comm.type === 'same' && !arrayFieldsRestriction.includes(fieldName)) || !arrayFieldInIndex)) {\r\n return;\r\n }\r\n\r\n if (!arrayRootPath || arrayFieldInIndex || (!arrayOnlyChanges.includes(arrayRootPath) && changesInArrayLevel)) {\r\n changes[comm.path] = comm.value;\r\n // when a change in a field required other field to be sent\r\n if (fieldForcedDependencies[comm.path]) {\r\n const [dependencyValue = null] = changesAnalizer.filter((c) => c.path === fieldForcedDependencies[comm.path]);\r\n if (dependencyValue && changes[fieldForcedDependencies[comm.path]] === undefined) {\r\n changes[fieldForcedDependencies[comm.path]] = dependencyValue.value;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n\r\n return changes;\r\n }\r\n\r\n return null;\r\n};\r\n\r\n// eslint-disable-next-line no-restricted-globals\r\nconst isPathAnArray = (path) => path.split('.').some((field) => !isNaN(field));\r\n\r\n/**\r\n * Gets the current __unsaved state defined globally\r\n * @param {*} state current state\r\n */\r\nexport const globalEditStateSelector = (state) => state && state.app.forms && state.app.forms.__unsaved;\r\n\r\nexport const selectorWithForms = (state, selector, { model, key }, ...params) => {\r\n if (selector) {\r\n /**\r\n * Executed the provided selector with the additional list of params\r\n */\r\n let values = selector(state, ...params);\r\n /**\r\n * Get the forms for the mentioned entity\r\n */\r\n const forms = editEntityByModelSelector(state, model?.name)?.map(({ entity, __deleted, __edited, __created }) => ({ ...entity, __deleted, __edited, __created })) || [];\r\n /**\r\n * If the selector returns an array\r\n */\r\n if (isArray(forms) && !empty(forms)) {\r\n let entities = [];\r\n if (key && objectPath(values).has(key)) {\r\n entities = objectPath(values).get(key);\r\n } else {\r\n entities = values;\r\n }\r\n /**\r\n * Loop through each value on the flags\r\n */\r\n entities =\r\n entities?.map?.((entity) => {\r\n const formEntity = forms.find(({ id }) => entity.id === id);\r\n if (!empty(formEntity)) {\r\n const combinedEntity = clone(deepMerge(entity, formEntity, { keepEmptyObject: true }));\r\n combinedEntity.$fromForm = true;\r\n return combinedEntity;\r\n }\r\n return entity;\r\n }) || [];\r\n if (key && objectPath(values).has(key)) {\r\n objectPath(values).set(key, entities);\r\n } else {\r\n values = entities;\r\n }\r\n }\r\n\r\n return values;\r\n }\r\n};\r\n","import { empty, objectToDotNotation, objectPath } from '../utils/bdx-lodash-lite';\r\nimport { editEntitiesSelector } from './forms/selectors';\r\n\r\n/**\r\n * Return the error if present for a specific action list, optionally under a model name and id (We can have different errors in different entities)\r\n * These selectos dont apply for using re-select library we dont want to memorize errors or loading status bc they change constantly\r\n * @param {*} state Store from Redux\r\n * @param {*} actions Actions to check if there where any error\r\n * @param {*} model Model name to check\r\n * @param {*} id id for the Model name to check\r\n */\r\nexport const getErrorInfo = (state, actions, modelName, id) => {\r\n const errors = getErrors(state, actions, modelName, id);\r\n\r\n if (!empty(errors)) {\r\n const error = errors[0];\r\n return { message: error.appMessage, error: error.errorMessage, handled: error?.handled };\r\n }\r\n\r\n return {};\r\n};\r\n\r\n/**\r\n * Return the error status for each of the actions passed\r\n * @param {*} state Store from Redux\r\n * @param {*} actions Actions to check if there where any error\r\n * @param {*} model Model name to check\r\n * @param {*} id id for the Model name to check\r\n */\r\nexport const getErrors = (state, actions, modelName, id) => {\r\n let errors = null;\r\n\r\n // If model and id specified check for errors under that model name and id, el check a global Action name\r\n if (modelName && id) {\r\n errors = actions.map((action) => state && state.app.errors && state.app.errors[modelName] && state.app.errors[modelName][id] && state.app.errors[modelName][id][action.replace(/_request|_fail|_success/g, '').toUpperCase()]);\r\n } else {\r\n errors = actions.map((action) => state && state.app.errors && state.app.errors[action.replace(/_request|_fail|_success/g, '').toUpperCase()]);\r\n }\r\n\r\n return errors.filter(Boolean);\r\n};\r\n\r\n/**\r\n * If any of the keys in the Loadings object is true app is loading somethign (excluding the excludedActions specified)\r\n * @param {*} state Redux state\r\n * @param {*} excludedActions A list of actions to exclude (conditional)\r\n */\r\nexport const isAppLoading = (state, excludedActions = []) => {\r\n const loadings = objectToDotNotation(state.app.loadings); // get the list of keys (dot fotmat) of the loadings state's object\r\n excludedActions = excludedActions.map((action) => action.replace(/_request|_fail|_success/g, '')); // format actions correctly (removing sufixes bc actions are stored without them in the loading section)\r\n return Object.keys(loadings).some((key) => !excludedActions.includes(key.split('.').pop().toLowerCase()) && objectPath(state.app.loadings).get(key));\r\n};\r\n\r\n// Check if any of the passed action array is loading\r\nexport const getLoading = (state, actions, modelName, id) => getLoadings(state, actions, modelName, id).some((loading) => loading);\r\n\r\nexport const getFormsLoadings = (state, watchActions) => {\r\n const formEntities = editEntitiesSelector(state) || [];\r\n return formEntities?.map?.(({ id, model }) => getLoadingSafe(state, watchActions, model, id)).some((loading) => loading);\r\n};\r\n\r\n/**\r\n * Return the loading status for each of the actions passed\r\n * @param {*} state Store from Redux\r\n * @param {*} actions Actions to check if it is loading\r\n * @param {*} model Model name to check\r\n * @param {*} id id for the Model name to check\r\n */\r\nexport const getLoadings = (state, actions, modelName, id) => {\r\n let loadings = null;\r\n\r\n if (empty(actions?.filter(Boolean))) return [];\r\n\r\n // If model and id specified check for errors under that model name and id, el check a global Action name\r\n if (modelName && id) {\r\n loadings = actions.map((action) => state && state.app.loadings && state.app.loadings[modelName] && state.app.loadings[modelName][id] && state.app.loadings[modelName][id][action.replace(/_request|_fail|_success/g, '').toUpperCase()]);\r\n } else {\r\n // changed to find for the specific action in any level of the loading object (before this it was only looking at the first lavel, so when no context was passed it was imposible to find that the action is loading)\r\n const loadingsToDotNotation = objectToDotNotation(state.app.loadings);\r\n loadings = Object.keys(loadingsToDotNotation)\r\n .map((key) => actions.some((key2) => key.split('.').pop() === key2.replace(/_request|_fail|_success/g, '').toUpperCase()) && loadingsToDotNotation[key])\r\n .filter(Boolean);\r\n }\r\n\r\n return loadings.filter(Boolean);\r\n};\r\n\r\nexport const getLoadingSafe = (state, actions, modelName, id) => getLoadingsSafe(state, actions, modelName, id).some((loading) => loading);\r\n\r\n/**\r\n * Return the loading status for each of the actions passed\r\n * @param {*} state Store from Redux\r\n * @param {*} actions Actions to check if it is loading\r\n * @param {*} model Model name to check\r\n * @param {*} id id for the Model name to check\r\n */\r\nexport const getLoadingsSafe = (state, actions, modelName, id) => {\r\n let loadings = null;\r\n\r\n // If model and id specified check for errors under that model name and id, el check a global Action name\r\n if (modelName && id) {\r\n loadings = actions.map((action) => {\r\n const loading = state?.app?.loadings?.[action?.replace(/_request|_fail|_success/g, '')?.toUpperCase()];\r\n const loadingEntityBased = state?.app?.loadings?.[modelName]?.[id]?.[action?.replace(/_request|_fail|_success/g, '')?.toUpperCase()];\r\n\r\n /**\r\n * Loading based on entity\r\n */\r\n if (loadingEntityBased !== undefined) {\r\n return loadingEntityBased;\r\n }\r\n /**\r\n * Loading based on global loadings\r\n */\r\n if (loading !== undefined) {\r\n return loading;\r\n }\r\n return null;\r\n });\r\n } else {\r\n // changed to find for the specific action in any level of the loading object (before this it was only looking at the first lavel, so when no context was passed it was imposible to find that the action is loading)\r\n const loadingsToDotNotation = objectToDotNotation(state.app.loadings);\r\n loadings = Object.keys(loadingsToDotNotation)\r\n .map((key) => actions.some((key2) => key === key2.replace(/_request|_fail|_success/g, '').toUpperCase()) && loadingsToDotNotation[key])\r\n .filter(Boolean);\r\n }\r\n\r\n return loadings.filter(Boolean);\r\n};\r\n\r\n/**\r\n * Checks if any action is loading under a determined model.\r\n * @param {*} state Store from Redux.\r\n * @param {*} model Model name to check.\r\n */\r\nexport const isModelLoading = (state, modelName) => {\r\n const entities = state && state.app.loadings && state.app.loadings[modelName];\r\n return Object.keys(entities || {}).some((key) => Object.keys(entities[key] || {}).some((type) => entities[key][type]));\r\n};\r\n","/*\r\nThis file contains string literals for your action types.\r\nThis provides an easy reference for the actions available.\r\nThese strings are exported as an object literal which can then be imported\r\ninto your reducers and action creators instead of hard-coding them.\r\nAlthough maintaining a separate file containing just your action\r\ntypes is optional, it is highly recommended.\r\n*/\r\n\r\n// ACTION TYPES\r\nexport const LISTING_DATACOMPLETENESS_REQUEST = 'bdxlive/listing_details/datacompleteness_request';\r\nexport const LISTING_DATACOMPLETENESS_SUCCESS = 'bdxlive/listing_details/datacompleteness_success';\r\nexport const LISTING_DATACOMPLETENESS_FAIL = 'bdxlive/listing_details/datacompleteness_fail';\r\n","import { getErrorInfo } from '../../../@redux/selectors';\r\nimport { entityById } from '../../../@redux/models/selectors';\r\nimport { LISTING_DATACOMPLETENESS_FAIL } from './types';\r\nimport { empty } from '../../../utils/bdx-lodash-lite';\r\nimport { getCommunityById, getPlanById, getSpecById } from '@/redux/entities';\r\nimport { getLotById } from '@/redux/entities/lot/selectors';\r\nimport { getBuilderById } from '@/redux/entities/builder/selectors';\r\n\r\nexport const listingCompletenessSelector = (state, model, entityId) => {\r\n const entity = entityById(state, entityId, model.schema);\r\n const error = getErrorInfo(state, [LISTING_DATACOMPLETENESS_FAIL], model.name, entityId).message;\r\n\r\n if (!empty(entity)) {\r\n if (entity.communityScore) {\r\n const { communityScore = 0, homeScore = 0 } = entity;\r\n const commScoreFinal = communityScore;\r\n const homeScoreFinal = model.isHome ? homeScore : Math.round((homeScore * 100) / 30);\r\n\r\n return { communityScore: commScoreFinal, homeScore: homeScoreFinal };\r\n }\r\n if (error) {\r\n // if it is returning null for this community dont try always (FOR NOW, THIS SCORE NEED TO BE PERFORMANCE IMPREVED IN THE FUTURE)\r\n return { communityScore: null, homeScore: null };\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * Based in a listing entity (comm, plan or spec) id and a model, return t he proper entity\r\n * example: entitySelector[model.name](_state, entityId),\r\n */\r\nexport const listingEntitySelector = {\r\n community: (state, communityId) => getCommunityById(state, communityId),\r\n plan: (state, planId) => getPlanById(state, planId),\r\n spec: (state, specId) => getSpecById(state, specId),\r\n lot: (state, lotId) => getLotById(state, lotId),\r\n builder: (state, builderId) => getBuilderById(state, builderId),\r\n};\r\n","import { planLibraryType } from '@/constants/bdx-lookups';\r\n\r\nexport const isCorpPlanLibrary = (libraryType) => libraryType !== planLibraryType.DIVISION;\r\n","import { createSelector } from 'reselect';\r\nimport { entityById } from '@/redux/models/selectors';\r\nimport { listingEntitySelector } from '@/modules/listings-detail/@redux/selectors';\r\n\r\nimport { Builder } from '@/models/Builder';\r\nimport { Partner } from '@/models/Partner';\r\nimport { empty } from '@/lodash/';\r\nimport { isCorpPlanLibrary } from '@/utils/entities/builder/libraryType';\r\nimport { orgTypeCode } from '@/constants/bdx-lookups';\r\nimport { Division } from '@/models/Division';\r\n\r\nexport const getBuilderById = (state, buildeId) => entityById(state, buildeId, Builder().schema);\r\n\r\nexport const getDivisionById = (state, divisionId) => entityById(state, divisionId, Division().schema);\r\n\r\nexport const getPartnerById = (state, partnerId) => entityById(state, partnerId, Partner().schema);\r\n\r\nexport const getBuilderMarkets = (state, buildeId) =>\r\n createSelector(\r\n (_state) => getBuilderById(_state, buildeId),\r\n (builder) => (!empty(builder) && builder.markets) || null\r\n )(state);\r\n\r\nexport const getBuilderDivisions = (state, buildeId) =>\r\n createSelector(\r\n (_state) => getBuilderById(_state, buildeId),\r\n (builder) => (!empty(builder) && builder.divisions) || null\r\n )(state);\r\n\r\nexport const getBuilderDivisionsByParentId = (state, builderId) =>\r\n createSelector(\r\n (_state) => _state?.app?.entities?.divisions || {},\r\n (divisions) => Object.values(divisions).filter(({ parentBuilderId }) => parentBuilderId === builderId)\r\n )(state);\r\n\r\nexport const isCorp = (state, id) => {\r\n const builder = getBuilderById(state, id);\r\n if (!empty(builder) && !empty(builder.planLibraryType)) {\r\n return isCorpPlanLibrary(builder.planLibraryType);\r\n }\r\n return false;\r\n};\r\n\r\nexport const isDataFeedBuilder = (state, buildeId) =>\r\n createSelector(\r\n (_state) => getBuilderById(_state, buildeId) || getDivisionById(_state, buildeId),\r\n (builder) => {\r\n if (!builder) return false;\r\n return builder?.autoFeedFlag?.toUpperCase() === 'Y'; // autofeedFlag says if a builder is datafeed(Y) or manual\r\n }\r\n )(state);\r\n\r\n/*\r\nReturns the dataLocks property for the entity if the object exists \r\n*/\r\nexport const isBuilderDataFeedByListingId = (state, entityId, model) =>\r\n createSelector(\r\n (_state) => listingEntitySelector[model.model]?.(_state, entityId),\r\n (entity) => {\r\n if (!entity) return false;\r\n const builder = entity.builder || entity.community?.builder; // first case community and plan, 2nd for specs\r\n return builder?.autoFeedFlag?.toUpperCase() === 'Y'; // autofeedFlag says if a builder is datafeed or manual\r\n }\r\n )(state);\r\n\r\n/*\r\nReturns if the builder property for the listing is Manufactured\r\n*/\r\nexport const isBuilderManufactureByListingId = (state, entityId, model) => {\r\n if (!entityId || !model) return false;\r\n return createSelector(\r\n (_state) => listingEntitySelector[model.model]?.(_state, entityId),\r\n (entity) => {\r\n if (!entity) return false;\r\n const builder = entity.builder || entity.community?.builder; // first case community and plan, 2nd for specs\r\n return builder?.orgTypeCode === orgTypeCode.MFR;\r\n }\r\n )(state);\r\n};\r\n\r\n/**\r\n * This Selector is not used anymore, but we will keep it here in case in the future they want\r\n * the flag to display the scheduler section in community main detail, if we wanna use it again\r\n * add communitySchedulerFlag Graphql property in the API_GET_COMMUNITY_CONTEXT_FIELDS const in\r\n * builder > parentBuilder section (we removed it from there for query performance )\r\n */\r\nexport const builderSchedulerFlag = (state, buildeId) =>\r\n createSelector(\r\n (_state) => getBuilderById(_state, buildeId),\r\n (builder) => {\r\n if (!builder) return false;\r\n return builder?.communitySchedulerFlag;\r\n }\r\n )(state);\r\n\r\n/**\r\n * Selector that returns if a corp builder is MPC or not (developer builder)\r\n * @param {*} state Store data\r\n * @param {*} builderId Corp builder Id\r\n * @param {*} isOnlyMPC If true will return if the builder has all their divisions as developer (mpc) if false,\r\n * will returen true if the corp has at least 1 as MPC (this is the default if not passed)\r\n * @returns True if the builder is developer (mpc) False if it is not. this mean divisions with org type as DEV.\r\n */\r\nexport const isMpcBuilder = (state, builderId, isOnlyMPC = false) =>\r\n createSelector(\r\n (_state) => getBuilderDivisions(_state, builderId),\r\n (divisions) => {\r\n if (!empty(divisions)) {\r\n if (isOnlyMPC) {\r\n return divisions.every((d) => d.orgTypeCode === orgTypeCode.DEV);\r\n }\r\n\r\n return divisions.some((d) => d.orgTypeCode === orgTypeCode.DEV);\r\n }\r\n return false;\r\n }\r\n )(state);\r\n","import { schemaDenormalizer } from '../../../@redux/models/selectors';\r\nimport { partnerSchema, builderSchema, divisionSchema, communitySchema, planSchema, specSchema, navigationSchema } from '../../../app.entities';\r\n\r\nconst navigationPathSelector = (state) => (state && state.app && state.app.navigation.global) || {};\r\n\r\n/**\r\n * Context loading\r\n */\r\nexport const contextLoadingSelector = (state) => navigationPathSelector(state).contextLoading;\r\nexport const listModeSelector = (state) => navigationPathSelector(state).listMode;\r\n/**\r\n * Navigation opened\r\n */\r\nexport const navOpenSelector = (state) => navigationPathSelector(state).opened;\r\nexport const navFloatSelector = (state) => navigationPathSelector(state).float;\r\nexport const navForcedSelector = (state) => navigationPathSelector(state).locationForced;\r\nexport const navCollapsedSelector = (state) => navigationPathSelector(state).collapsed;\r\n\r\n/**\r\n * Navigation Ids\r\n */\r\nexport const navPartnerIdContextSelector = (state) => navigationPathSelector(state).partner;\r\nexport const navBuilderIdContextSelector = (state) => navigationPathSelector(state).builder;\r\nexport const navDivisionIdContextSelector = (state) => navigationPathSelector(state).division;\r\nexport const navCommunityIdContextSelector = (state) => navigationPathSelector(state).community;\r\nexport const navPlanIdContextSelector = (state) => navigationPathSelector(state).plan;\r\nexport const navSpecIdContextSelector = (state) => navigationPathSelector(state).spec;\r\n\r\nexport const navbuilderDivisionsSelector = (state) => navigationPathSelector(state).builderDivisions;\r\n\r\n/**\r\n * Navigation Context\r\n */\r\nexport const navContextSelector = schemaDenormalizer((state) => navigationPathSelector(state), navigationSchema);\r\nexport const navPartnerContextSelector = schemaDenormalizer(navPartnerIdContextSelector, partnerSchema);\r\nexport const navBuilderContextSelector = schemaDenormalizer(navBuilderIdContextSelector, builderSchema);\r\nexport const navDivisionContextSelector = schemaDenormalizer(navDivisionIdContextSelector, divisionSchema);\r\nexport const navCommunityContextSelector = schemaDenormalizer(navCommunityIdContextSelector, communitySchema);\r\nexport const navPlanContextSelector = schemaDenormalizer(navPlanIdContextSelector, planSchema);\r\nexport const navSpecContextSelector = schemaDenormalizer(navSpecIdContextSelector, specSchema);\r\n\r\nexport const navCommunityContextExistsSelector = (state) => navigationPathSelector(state).community;\r\n\r\n/**\r\n * Search / Combo Values\r\n */\r\nexport const navPartnerSearchBoxSelector = schemaDenormalizer((state) => ((navigationPathSelector(state) || {}).nestedComboBox || {}).partnerSearchBox);\r\nexport const navBuilderSearchBoxSelector = schemaDenormalizer((state) => ((navigationPathSelector(state) || {}).nestedComboBox || {}).builderSearchBox);\r\nexport const navDivisionComboBoxSelector = schemaDenormalizer((state) => ((navigationPathSelector(state) || {}).nestedComboBox || {}).divisionComboBox);\r\nexport const navCommunityComboBoxSelector = schemaDenormalizer((state) => ((navigationPathSelector(state) || {}).nestedComboBox || {}).communityComboBox);\r\nexport const navPlanComboBoxSelector = schemaDenormalizer((state) => ((navigationPathSelector(state) || {}).nestedComboBox || {}).planComboBox);\r\nexport const navSpecComboBoxSelector = schemaDenormalizer((state) => ((navigationPathSelector(state) || {}).nestedComboBox || {}).specComboBox);\r\n\r\n/**\r\n * Tree View\r\n */\r\nexport const navCommunityTreeViewSelector = schemaDenormalizer((state) => ((navigationPathSelector(state) || {}).nestedComboBox || {}).communityTreeView);\r\nexport const navCommunityTreeViewFilter = (state) => navigationPathSelector(state).communityTreeViewFilter;\r\nexport const navCommunityTreeViewFilterSelector = (state, { statuses }) => {\r\n const div = navDivisionContextSelector(state);\r\n if (!div || !div.communities) return null;\r\n return div.communities && { communities: div.communities.filter((comm) => statuses.includes(comm.status)) };\r\n};\r\n","import { createSelector } from 'reselect';\r\nimport { userContextDivisionSelector, userContextBuilderSelector, userContextPartnerSelector } from '@/modules/auth/@redux/selectors';\r\nimport { navDivisionContextSelector, navCommunityContextSelector, navBuilderContextSelector, navPartnerContextSelector } from '@/modules/global/@redux/selectors';\r\nimport { entityById } from '../models/selectors';\r\n\r\nexport const contextIsPresent = (id, model) =>\r\n createSelector(\r\n (state) => state.app && state.app.context[model.name],\r\n (context) => new Set(context).has(Number(id))\r\n );\r\n\r\nexport const contextSelector = (state, id, model) => {\r\n const isPresent = contextIsPresent(id, model)(state);\r\n if (isPresent) {\r\n return entityById(state, id, model.schema);\r\n }\r\n return null;\r\n};\r\n\r\nexport const contextIsLoading = (state) => state && state.app && state.app.context.loading;\r\n\r\nexport const partnerContext = createSelector(userContextPartnerSelector, navPartnerContextSelector, (partnerUser, partnerNav) => partnerNav || partnerUser || null);\r\n\r\nexport const builderContext = createSelector(userContextBuilderSelector, navBuilderContextSelector, (builderUser, builderNav) => builderNav || builderUser || null);\r\n\r\nexport const divisionContext = createSelector(userContextDivisionSelector, navDivisionContextSelector, (divisionUser, divisionNav) => divisionNav || (divisionUser && divisionUser.length === 1 && divisionUser[0]) || null);\r\n\r\nexport const communityContext = navCommunityContextSelector || null;\r\n","import { createSelector } from 'reselect';\r\nimport { entityById } from '@/redux/models/selectors';\r\nimport { Division } from '@/models/Division';\r\nimport { empty } from '@/lodash/';\r\nimport { getBuilderDivisions } from '../builder/selectors';\r\nimport { builderContext } from '@/redux/context/selectors';\r\nimport { orgTypeCode } from '@/constants/bdx-lookups';\r\n\r\n/**\r\n * Division\r\n */\r\nexport const getDivisionById = (state, divisionId) => entityById(state, divisionId, Division().schema);\r\n\r\nexport const getDivisionCommunities = (state, divisionId, listingTypes = [], mpcId) =>\r\n createSelector(\r\n (_state) => getDivisionById(_state, divisionId),\r\n (division) => {\r\n if (!empty(division)) {\r\n let { communities = [] } = division;\r\n if (!empty(listingTypes)) {\r\n communities = communities?.filter((community) => listingTypes.includes(community?.listingType));\r\n }\r\n if (mpcId) {\r\n communities = communities?.filter(({ parentCommunity, parentCommunityId } = {}) => parentCommunity?.id === mpcId || parentCommunityId === mpcId);\r\n }\r\n return communities;\r\n }\r\n return null;\r\n }\r\n )(state);\r\n\r\nexport const getDivisionPlans = (state, divisionId) =>\r\n createSelector(\r\n (_state) => getDivisionById(_state, divisionId),\r\n (division) => (!empty(division) && division.plans) || null\r\n )(state);\r\n\r\nexport const someDivisionIsWebArch = (state, builderId) =>\r\n createSelector(\r\n (_state) => getBuilderDivisions(_state, builderId),\r\n (divisions) => {\r\n if (divisions) {\r\n return divisions.some((division) => division.displayChannelSelection?.displayOnWebArch);\r\n }\r\n return false;\r\n }\r\n )(state);\r\n\r\nexport const someDivisionIsManufacturer = (state) =>\r\n createSelector(\r\n (_state) => builderContext(_state)?.divisions,\r\n (divisions) => {\r\n if (divisions) {\r\n return divisions.some((division) => division.orgTypeCode === orgTypeCode?.MFR);\r\n }\r\n return false;\r\n }\r\n )(state);\r\n\r\nexport const isAllDivisionsMPC = (state) =>\r\n createSelector(\r\n (_state) => builderContext(_state)?.divisions,\r\n (divisions) => divisions?.every((division) => division.orgTypeCode === orgTypeCode?.DEV)\r\n )(state);\r\n","import { createSelector } from 'reselect';\r\n\r\nimport { userContextBuilderSelector, userDivisionIdsSelector } from '../../../modules/auth/@redux/selectors';\r\nimport { getDivisionById } from '../division/selectors';\r\n\r\nimport { empty } from '@/lodash/';\r\nimport { orgTypeCode } from '@/constants/bdx-lookups';\r\n\r\nexport const isMpcUser = (state) =>\r\n createSelector(\r\n (state_) => userDivisionIdsSelector(state_),\r\n (divisionIds) => {\r\n if (!empty(divisionIds)) {\r\n return divisionIds.some((id) => getDivisionById(state, id)?.orgTypeCode === orgTypeCode.DEV);\r\n }\r\n return false;\r\n }\r\n )(state);\r\n\r\nexport const isInternalUser = (state) =>\r\n createSelector(\r\n (state_) => userContextBuilderSelector(state_),\r\n (builder) => empty(builder)\r\n )(state);\r\n\r\nexport const isExternalUser = (state) =>\r\n createSelector(\r\n (state_) => userContextBuilderSelector(state_),\r\n (builder) => !empty(builder)\r\n )(state);\r\n","import { saveLastLocation } from '../../@redux/routes/actions';\r\nimport { getCurrentUser, userContextBuilderSelector } from '../../modules/auth/@redux/selectors';\r\nimport { store } from '../../app.store';\r\nimport { config } from '../../@redux/config/selectors';\r\nimport { requestLogin } from '../../modules/auth/@redux/actions';\r\nimport { getLastLocation } from '../../@redux/routes/selectors';\r\nimport { empty, isNullish } from '../bdx-lodash-lite';\r\nimport { AUTO_LOGIN, WRONG_BUILDER } from '../../app.location';\r\nimport { getQueryParam, hasQueryParam } from '../routing/queryParams';\r\nimport { ErrorMessages } from '@/constants/bdx-lookups';\r\n\r\nimport { BuilderContextError } from '@/redux/models/sagas';\r\nimport { isExternalUser } from '@/redux/entities/user/selectors';\r\n\r\n/* Security function to handle the authentication for the app, it handle the logic\r\n related to the keep me in options and also the Config setting to auto authenticate users\r\n In case the app should auto authenticate it retrieve the user (localstorage or a default one\r\n from config) and dispatch the user login redux action to simulate user authentication.\r\n Important: the \"AuthenticationRequired\" config setting will be removed later it is\r\n temporal in order to speed up development and testing.\r\n*/\r\n\r\nexport async function checkSecurity(context, command, loginUrl) {\r\n const userInfo = getCurrentUser(store.getState());\r\n if (userInfo) {\r\n await import(/* webpackPrefetch: true */ '../../modules/global/components/bdx-main-layout');\r\n return undefined;\r\n }\r\n\r\n // app.settings automatic credentials\r\n let [isAuthRequired = true, credentials = null] = (!empty(config('AuthenticationRequired')) && config('AuthenticationRequired').split('|')) || [];\r\n // keep me logged in credentials\r\n if (localStorage.getItem('keepMe')) {\r\n credentials = window.atob(localStorage.getItem('keepMe'));\r\n isAuthRequired = false;\r\n }\r\n\r\n // If the user is not in auto-sign-in or sign-in then go to either as required\r\n if (!context.pathname.includes('sign-in')) {\r\n store.dispatch(saveLastLocation(window.location));\r\n const url = (!JSON.parse(isAuthRequired) && credentials) || hasQueryParam('accessToken') ? AUTO_LOGIN.path : loginUrl;\r\n return command.redirect(url);\r\n }\r\n\r\n // If credentials are available then dispatch a login request\r\n if (!JSON.parse(isAuthRequired) && !empty(credentials)) {\r\n const { username, password } = JSON.parse(credentials);\r\n store.dispatch(\r\n requestLogin({\r\n user: { username, password },\r\n keepMe: true,\r\n lastLocation: getLastLocation(store.getState()),\r\n })\r\n );\r\n }\r\n\r\n if (hasQueryParam('accessToken')) {\r\n const accessToken = getQueryParam('accessToken');\r\n store.dispatch(\r\n requestLogin({\r\n accessToken,\r\n keepMe: true,\r\n lastLocation: getLastLocation(store.getState()),\r\n })\r\n );\r\n }\r\n}\r\n\r\n/* \r\nChecks the response from a context check request, so we retrieve the builder id for this context retrival\r\nand compare it with the user builder, if they are different means the user is trying to open a url for a different builder context\r\nso we throw an exception and redirect.\r\n*/\r\nexport const checkContextSecurityResponse = (response, failFunc) => {\r\n const isExternal = isExternalUser(store.getState());\r\n const [keyName] = Object.keys(response); // extract the key for what the results are (first property name for the obj)\r\n const { builderId } = userContextBuilderSelector(store.getState()) || {};\r\n let contextParentBuilderId = null;\r\n let contextCorpId = null;\r\n let contextBuilderId = null;\r\n [{ builderId: contextCorpId, builder: { parentBuilderId: contextParentBuilderId } = {} } = {}] = response[keyName]; // check if the obj have parent builder id, if not check the builder id.\r\n\r\n // in case of brand context, the format doesnt comes with builder id or parent builder id, we need to access the corporations array to retrieve the builder id\r\n if (keyName === 'brands') {\r\n [{ corporations: [{ builderId: contextCorpId } = {}] } = {}] = response[keyName];\r\n // Validate if the current builderId is present in brands corporation as currently in corporations there can be more than one builder.\r\n contextBuilderId = response[keyName]?.[0]?.corporations\r\n ?.map(({ builderId: corpId }) => corpId)\r\n ?.filter((id) => id === builderId)\r\n ?.at(0);\r\n } else if (keyName === 'builders') {\r\n [{ parentBuilderId: contextParentBuilderId, builderId: contextCorpId } = {}] = response[keyName];\r\n } else if (keyName === 'specs') {\r\n [{ plan: { community: { builder: { parentBuilderId: contextParentBuilderId, builderId: contextCorpId } = {} } = {} } = {} } = {}] = response[keyName];\r\n } else if (keyName === 'plans') {\r\n [{ builder: { parentBuilderId: contextParentBuilderId, builderId: contextCorpId } = {} } = {}] = response[keyName];\r\n }\r\n\r\n if (isExternal && !empty(response) && (!empty(contextParentBuilderId) || !empty(contextCorpId) || !empty(contextBuilderId))) {\r\n // check if user builder Id is different from the corp if (checking first if parent builder id came in the results if not, builder id)\r\n if ((keyName !== 'brands' && builderId !== (contextParentBuilderId || contextCorpId)) || (!isNullish(contextBuilderId) && builderId !== contextBuilderId)) {\r\n WRONG_BUILDER.dispatch(store);\r\n throw new BuilderContextError(failFunc, ErrorMessages.UserWrongBuilder);\r\n }\r\n\r\n return true;\r\n }\r\n};\r\n","import { html } from 'lit-element';\r\nimport { pushState } from '../../@redux/routes/actions';\r\nimport { empty } from '../bdx-lodash-lite';\r\nimport { getRouter, findRouteByPath, convertObjectToQueryStrings } from './router-helpers';\r\n\r\nexport class Location {\r\n constructor(path, settings, action = null) {\r\n this.path = path;\r\n this.settings = settings;\r\n this.action = action;\r\n\r\n if (settings?.title) {\r\n this.title = settings.title;\r\n }\r\n\r\n if (settings?.modal instanceof Function) {\r\n this.modal = settings?.modal;\r\n }\r\n\r\n if (settings?.component || settings?.name) {\r\n this.name = settings.name || settings.component;\r\n }\r\n\r\n if (settings?.menu && !settings?.component) {\r\n this.isMenu = !!settings?.menu;\r\n this.settings.name = settings?.menu;\r\n this.settings.component = 'bdx-route-forward';\r\n this.name = settings?.menu;\r\n }\r\n\r\n if (settings?.justForward) {\r\n const name = `${path.replace(/\\//g, '')}-bdx-route-forward`;\r\n this.settings = {\r\n name,\r\n component: 'bdx-route-forward',\r\n };\r\n this.name = name;\r\n }\r\n\r\n if (this.path) {\r\n this.page = this.getPageName(this.path);\r\n }\r\n }\r\n\r\n /**\r\n * Create a Location object based on a vaadin route info\r\n */\r\n static createLocation({ path, component, linkName, title, name, action }) {\r\n return new Location(path, {\r\n component,\r\n linkName,\r\n title,\r\n name,\r\n action,\r\n });\r\n }\r\n\r\n dispatch(storep, { action = pushState, force, params, extraParams, ctrl, hash } = {}) {\r\n const { path, settings, parent } = this;\r\n if (this.isMenu) {\r\n window.dispatchEvent(new CustomEvent('display-navigation-menu', { composed: true, bubbles: true, detail: { route: findRouteByPath(this.path) } }));\r\n } else {\r\n storep.dispatch(\r\n this.action\r\n ? this.action({\r\n path,\r\n parent,\r\n force,\r\n ctrl,\r\n ...settings,\r\n })\r\n : action(this.toUrl(params, extraParams, hash), force, ctrl)\r\n );\r\n }\r\n }\r\n\r\n toRoute(children) {\r\n const { path, settings } = this;\r\n const route = { path, ...settings };\r\n if (children) {\r\n route.children = children;\r\n /**\r\n * FIX\r\n * Make sure that the parent location is set on the element,\r\n * there's a chance the value could be undefined when certain navigation hasn't occurred\r\n */\r\n route.children.map((child) => {\r\n if (!child.parent) child.parent = route;\r\n return child;\r\n });\r\n }\r\n return route;\r\n }\r\n\r\n toUrl(params, extraParams, hash = '') {\r\n if (getRouter() && this.name) {\r\n let url = getRouter().urlForName(this.name, params);\r\n\r\n if (extraParams) {\r\n url += (url.includes('?') ? '' : '?') + convertObjectToQueryStrings(extraParams);\r\n }\r\n\r\n if (!empty(hash)) {\r\n url += hash;\r\n }\r\n\r\n return url;\r\n }\r\n return this.path;\r\n }\r\n\r\n toLink(name = '') {\r\n return html` ${name} `;\r\n }\r\n\r\n toRedirect(path) {\r\n // TODO: Remove toURL\r\n return { path, redirect: this.toUrl() };\r\n }\r\n\r\n getPageName(url) {\r\n const segments = url.split('/');\r\n return segments.filter((s) => !s.includes(':')).join('/'); // exclude parameters from the url\r\n }\r\n}\r\n","/**\r\n * Helper Importings\r\n */\r\nimport { LitElement, html, customElement } from 'lit-element';\r\n\r\n/**\r\n * Element Definition\r\n */\r\n@customElement('bdx-route-forward')\r\nexport class BdxRouteForward extends LitElement {\r\n /**\r\n * Invoked on each update to perform rendering tasks. This method must return\r\n * a lit-html TemplateResult. Setting properties inside this method will *not*\r\n * trigger the element to update.\r\n * @returns {TemplateResult} Must return a lit-html TemplateResult.\r\n */\r\n render() {\r\n return html` `;\r\n }\r\n\r\n // ======================== Element Getters - Start ============================ //\r\n // ======================== Element Getters - End ============================== //\r\n\r\n // ======================== Redux Requests - Start ============================= //\r\n // ======================== Redux Requests - End =============================== //\r\n\r\n // ======================== Lifecycle Callbacks - Start ======================== //\r\n\r\n // ======================== Lifecycle Callbacks - End ========================== //\r\n\r\n // ======================== Listener Callbacks - Start ========================= //\r\n // ======================== Listener Callbacks - End =========================== //\r\n}\r\n","import { DIVISION, COMMUNITY, STATUS, TYPE, SEARCH, BATHS, BEDS, GARAGES, PAGE_NUMBER, OTHER, PAGE_SIZE, SORT, BUILDER, STATES, BRANDS, MARKETS, MOVEINDATE, PRODUCTS, CUSTOMERS, CYCLES } from '@/app/constants/params';\r\nimport { checkSecurity } from './utils/security/check-security';\r\nimport { Location } from './utils/routing/location';\r\nimport { goBack } from './@redux/routes/actions';\r\nimport { requestLogout } from './modules/auth/@redux/actions';\r\n\r\nimport '@/components/route-forward';\r\nimport { userContextBuilderSelector } from './modules/auth/@redux/selectors';\r\nimport { empty } from '@/lodash/empty';\r\nimport { invoicesTypes } from './constants/bdx-lookups';\r\nimport { isExternalUser } from './@redux/entities/user/selectors';\r\n\r\n/**\r\n * APP MAIN\r\n */\r\nexport const APP_MAIN = new Location('', {\r\n component: 'bdx-main-layout',\r\n animate: true,\r\n action: (context, command) => checkSecurity(context, command, '/sign-in'),\r\n});\r\n\r\nexport const NOT_FOUND = new Location('/(.*)', {\r\n title: 'ZondaLive - Not found',\r\n component: 'not-found-view',\r\n action: () => import('./shared/views/not-found/not-found'),\r\n});\r\n\r\nexport const WRONG_BUILDER = new Location('/not-allowed', {\r\n title: 'ZondaLive - Invalid builder Context',\r\n component: 'bdx-wrong-builder-view',\r\n action: () => import('./shared/views/wrong-builder/wrong-builder'),\r\n});\r\n\r\nexport const BACK = new Location(null, null, goBack);\r\n\r\nexport const LOGOUT = new Location(null, null, requestLogout);\r\n\r\nexport const LOGIN = new Location('/sign-in', {\r\n title: 'ZondaLive - Sign In',\r\n component: 'bdx-login-box',\r\n});\r\n\r\nexport const AUTO_LOGIN = new Location('/auto-sign-in', {\r\n component: 'bdx-blank',\r\n action: (context, command) => checkSecurity(context, command),\r\n});\r\n\r\nexport const DASHBOARD = new Location('/dashboard', {\r\n component: 'bdx-dashboard',\r\n title: 'ZondaLive – Dashboard',\r\n action: () => import('./modules/content/views/dashboard/dashboard'),\r\n});\r\n\r\nexport const DETAILS = new Location('/details', {\r\n menu: 'listings-detail-menu',\r\n action: () => import('./modules/listings-detail/menu'),\r\n});\r\n\r\nexport const MANAGE_LEAD_REC = new Location('/manage', {\r\n menu: 'bdx-lead-recipients-menu',\r\n action: () => import('./modules/lead-recipients/menu'),\r\n});\r\n\r\nexport const LEAD_RECIPIENTS_BUILDER = new Location('/lead-recipients/:builderId?', {\r\n name: 'bdx-lead-recipients-builder',\r\n component: 'bdx-lead-recipients',\r\n title: 'ZondaLive – Lead Recipients',\r\n action: () => import('./modules/lead-recipients/views/lead-recipients/lead-recipients'),\r\n});\r\n\r\nexport const LEAD_RECIPIENTS = new Location('/lead-recipients', {\r\n name: 'bdx-lead-recipients',\r\n component: 'bdx-lead-recipients',\r\n title: 'ZondaLive – Lead Recipients',\r\n menu: 'bdx-lead-recipients-menu',\r\n action: () => Promise.all([import('./modules/lead-recipients/menu'), import('./modules/lead-recipients/views/lead-recipients/lead-recipients')]),\r\n});\r\n\r\nexport const MANAGE_LEAD_RECIPIENTS = new Location('/main', {\r\n name: 'bdx-manage-lead-recipients',\r\n component: 'bdx-manage-lead-recipients',\r\n title: 'ZondaLive – Lead Recipients - Main',\r\n linkName: 'Manage Lead Recipients',\r\n params: {\r\n [BUILDER]: { type: Number, default: 0 },\r\n [DIVISION]: { type: Number, default: 0 },\r\n [SEARCH]: { type: String, default: '' },\r\n [SORT]: { type: Array, default: [] },\r\n [PAGE_NUMBER]: { type: Number, default: 1 },\r\n [PAGE_SIZE]: { type: Number, default: 100 },\r\n [STATES]: { type: Array, default: [] },\r\n [STATUS]: { type: Array, default: ['Approved', 'Inactive'] },\r\n },\r\n action: () => import('./modules/lead-recipients/views/manage-lead-recipients/manage-lead-recipients'),\r\n});\r\n\r\nexport const CORPORATE_LEAD_RECIPIENTS = new Location('/corporate', {\r\n name: 'bdx-corporate-lead-recipients',\r\n component: 'bdx-corporate-lead-recipients',\r\n title: 'ZondaLive – Lead Recipients - Corporate',\r\n linkName: 'Corporate',\r\n action: () => import('./modules/lead-recipients/views/corporate-lead-recipients/corporate-lead-recipients'),\r\n});\r\n\r\nexport const ADVANCED_SETTINGS_LEAD_RECIPIENTS = new Location('/advanced-settings', {\r\n name: 'bdx-advanced-settings-lead-recipients',\r\n component: 'bdx-advanced-settings-lead-recipients',\r\n title: 'ZondaLive – Lead Recipients - Advanced Settings',\r\n linkName: 'Advanced Settings',\r\n action: () => import('./modules/lead-recipients/views/advanced-settings-lead-recipients/advanced-settings-lead-recipients'),\r\n});\r\n\r\nexport const QUICK_EDIT_TABLE = new Location('/quickedittable', {\r\n name: 'bdx-quick-edit-table',\r\n component: 'bdx-quick-edit-table',\r\n title: 'ZondaLive – Quick Edit Table',\r\n menu: 'bdx-quick-edit-table-menu',\r\n action: () => Promise.all([import('./modules/quick-edit-table/menu'), import('./modules/quick-edit-table/views/quick-edit-table/quick-edit-table')]),\r\n});\r\n\r\nexport const COMMUNITY_QUICK_EDIT_TABLE = new Location('/communities', {\r\n name: 'bdx-community-quick-edit-table',\r\n component: 'bdx-community-quick-edit-table',\r\n title: 'ZondaLive – Quick Edit Table - Communities',\r\n params: {\r\n [BUILDER]: { type: Number, default: 0 },\r\n [SEARCH]: { type: String, default: '' },\r\n [DIVISION]: { type: Number, default: 0 },\r\n [PAGE_NUMBER]: { type: Number, default: 1 },\r\n [PAGE_SIZE]: { type: Number, default: 15 },\r\n [SORT]: { type: Array, default: [] },\r\n [STATUS]: { type: Array, default: ['Active', 'Inactive'] },\r\n },\r\n action: () => import('./modules/quick-edit-table/views/community-quick-edit-table/community-quick-edit-table'),\r\n});\r\n\r\n// ================== New Quick Edit===================================\r\nexport const BDX_QUICK_EDIT = new Location('/quickedittable', {\r\n name: 'bdx-quick-edit',\r\n component: 'bdx-quick-edit',\r\n title: 'ZondaLive – Quick Edit',\r\n menu: 'bdx-quick-edit-menu',\r\n action: () => Promise.all([import('./modules/bdx-quick-edit/menu'), import('./modules/bdx-quick-edit/views/bdx-quick-edit/bdx-quick-edit')]),\r\n});\r\n\r\nexport const BDX_QUICK_EDIT_COMMUNITY = new Location('/communities', {\r\n name: 'bdx-quick-edit-community',\r\n component: 'bdx-quick-edit-community',\r\n title: 'ZondaLive - Quick Edit - Communities',\r\n params: {\r\n [BUILDER]: { type: Number, default: 0 },\r\n [SEARCH]: { type: String, default: '' },\r\n [DIVISION]: { type: Number, default: 0 },\r\n [PAGE_NUMBER]: { type: Number, default: 1 },\r\n [PAGE_SIZE]: { type: Number, default: 15 },\r\n [SORT]: { type: Array, default: [] },\r\n [STATUS]: { type: Array, default: ['Active', 'Inactive'] },\r\n },\r\n action: () => import('./modules/bdx-quick-edit/views/community-quick-edit/bdx-quick-edit-community'),\r\n});\r\n\r\nexport const BDX_QUICK_EDIT_PLANS = new Location('/plans', {\r\n name: 'bdx-quick-edit-plans',\r\n component: 'bdx-quick-edit-plans',\r\n title: 'ZondaLive – Quick Edit - Plans',\r\n params: {\r\n [BUILDER]: { type: Number, default: 0 },\r\n [DIVISION]: { type: Number, default: 0 },\r\n [COMMUNITY]: { type: Number, default: 0 },\r\n [SEARCH]: { type: String, default: '' },\r\n [PAGE_NUMBER]: { type: Number, default: 1 },\r\n [PAGE_SIZE]: { type: Number, default: 15 },\r\n [SORT]: { type: Array, default: [] },\r\n [STATUS]: { type: Array, default: ['Active', 'Inactive'] },\r\n },\r\n action: () => import('./modules/bdx-quick-edit/views/plans-quick-edit/bdx-quick-edit-plans'),\r\n});\r\n\r\nexport const BDX_QUICK_EDIT_SPECS = new Location('/specs', {\r\n name: 'bdx-quick-edit-specs',\r\n component: 'bdx-quick-edit-specs',\r\n title: 'ZondaLive – Quick Edit - Specs',\r\n params: {\r\n [BUILDER]: { type: Number, default: 0 },\r\n [DIVISION]: { type: Number, default: 0 },\r\n [COMMUNITY]: { type: Number, default: 0 },\r\n [SEARCH]: { type: String, default: '' },\r\n [PAGE_NUMBER]: { type: Number, default: 1 },\r\n [PAGE_SIZE]: { type: Number, default: 15 },\r\n [SORT]: { type: Array, default: [] },\r\n [STATUS]: { type: Array, default: ['Active', 'Inactive'] },\r\n },\r\n action: () => import('./modules/bdx-quick-edit/views/specs-quick-edit/bdx-quick-edit-specs'),\r\n});\r\n// =================== End New Quick Edit =============================\r\n\r\nexport const PLAN_QUICK_EDIT_TABLE = new Location('/plans', {\r\n name: 'bdx-plan-quick-edit-table',\r\n component: 'bdx-plan-quick-edit-table',\r\n title: 'ZondaLive – Quick Edit Table - Plans',\r\n params: {\r\n [BUILDER]: { type: Number, default: 0 },\r\n [DIVISION]: { type: Number, default: 0 },\r\n [COMMUNITY]: { type: Number, default: 0 },\r\n [SEARCH]: { type: String, default: '' },\r\n [PAGE_NUMBER]: { type: Number, default: 1 },\r\n [PAGE_SIZE]: { type: Number, default: 15 },\r\n [SORT]: { type: Array, default: [] },\r\n [STATUS]: { type: Array, default: ['Active', 'Inactive'] },\r\n },\r\n action: () => import('./modules/quick-edit-table/views/plan-quick-edit-table/plan-quick-edit-table'),\r\n});\r\n\r\nexport const SPEC_QUICK_EDIT_TABLE = new Location('/specs', {\r\n name: 'bdx-spec-quick-edit-table',\r\n component: 'bdx-spec-quick-edit-table',\r\n title: 'ZondaLive – Quick Edit Table - Specs',\r\n params: {\r\n [BUILDER]: { type: Number, default: 0 },\r\n [DIVISION]: { type: Number, default: 0 },\r\n [COMMUNITY]: { type: Number, default: 0 },\r\n [SEARCH]: { type: String, default: '' },\r\n [PAGE_NUMBER]: { type: Number, default: 1 },\r\n [PAGE_SIZE]: { type: Number, default: 15 },\r\n [SORT]: { type: Array, default: [] },\r\n [STATUS]: { type: Array, default: ['Active', 'Inactive'] },\r\n },\r\n action: () => import('./modules/quick-edit-table/views/spec-quick-edit-table/spec-quick-edit-table'),\r\n});\r\n\r\nexport const LISTINGS = new Location('/listings', {\r\n menu: 'bdx-listings-menu',\r\n action: () => import('./shared/components/menus/listings'),\r\n});\r\n\r\nexport const LIBRARIES = new Location('/library', { justForward: true });\r\nexport const MANAGE = new Location('/manage', { justForward: true });\r\n\r\nexport const SERVICES = new Location('/services', {\r\n menu: 'bdx-services-menu',\r\n action: () => import('./shared/components/menus/services'),\r\n});\r\n\r\nexport const REPORTING = new Location('/reporting', {\r\n menu: 'bdx-reporting-menu',\r\n action: () => import('./shared/components/menus/reporting'),\r\n});\r\n\r\nexport const SETUP = new Location('/setup', {\r\n menu: 'bdx-setup-menu',\r\n action: () => import('./shared/components/menus/setup'),\r\n});\r\n\r\nexport const ADMIN = new Location('/admin', {\r\n menu: 'bdx-admin-menu',\r\n action: () => import('./shared/components/menus/admin'),\r\n});\r\n\r\nexport const GREEN_PROGRAM = new Location('/green', {\r\n name: 'bdx-green-program-page',\r\n component: 'bdx-green-program-page',\r\n title: 'ZondaLive – Green Program',\r\n menu: 'bdx-green-program-menu',\r\n params: {\r\n [BUILDER]: { type: Number, default: 0 },\r\n [DIVISION]: { type: Number, default: 0 },\r\n [OTHER]: { type: Array, default: [] },\r\n [SEARCH]: { type: String, default: '' },\r\n [PAGE_NUMBER]: { type: Number, default: 1 },\r\n [PAGE_SIZE]: { type: Number, default: 15 },\r\n },\r\n action: () => Promise.all([import('./modules/content-libraries/green-program/menu'), import('./modules/content-libraries/green-program/views/green-program-page/green-program-page')]),\r\n});\r\n\r\nexport const PROMOTIONS_LIBRARY = new Location('/promotions', {\r\n name: 'bdx-promotions-library-page',\r\n component: 'bdx-promotions-library-page',\r\n title: 'ZondaLive – Promotions Library',\r\n menu: 'bdx-promotions-library-menu',\r\n params: {\r\n [BUILDER]: { type: Number, default: 0 },\r\n [DIVISION]: { type: Number, default: 0 },\r\n [STATUS]: { type: Array, default: ['Active'] },\r\n [TYPE]: { type: Array, default: ['Consumer', 'Agent'] },\r\n [OTHER]: { type: Array, default: [] },\r\n [SEARCH]: { type: String, default: '' },\r\n [PAGE_NUMBER]: { type: Number, default: 1 },\r\n [PAGE_SIZE]: { type: Number, default: 15 },\r\n [SORT]: { type: Object, default: { startDate: 1 } },\r\n },\r\n action: () => Promise.all([import('./modules/content-libraries/promotions/views/menu'), import('./modules/content-libraries/promotions/views/page/promotions-library-page')]),\r\n});\r\n\r\nexport const EVENTS_LIBRARY = new Location('/events', {\r\n name: 'bdx-events-library-page',\r\n component: 'bdx-events-library-page',\r\n title: 'ZondaLive – Events Library',\r\n menu: 'bdx-events-library-menu',\r\n params: {\r\n [BUILDER]: { type: Number, default: 0 },\r\n [DIVISION]: { type: Number, default: 0 },\r\n [STATUS]: { type: Array, default: ['Active'] },\r\n [TYPE]: { type: Array, default: ['Consumer', 'Agent'] },\r\n [OTHER]: { type: Array, default: [] },\r\n [SEARCH]: { type: String, default: '' },\r\n [PAGE_NUMBER]: { type: Number, default: 1 },\r\n [PAGE_SIZE]: { type: Number, default: 15 },\r\n [SORT]: { type: Object, default: { startDate: 1 } },\r\n },\r\n action: () => Promise.all([import('./modules/content-libraries/events/views/menu'), import('./modules/content-libraries/events/views/page/events-library-page')]),\r\n});\r\n\r\nexport const PLAN_LIBRARY = new Location('/plans', {\r\n name: 'bdx-plan-library',\r\n component: 'bdx-plan-library-page',\r\n title: 'ZondaLive – Plan Library',\r\n menu: 'bdx-plan-library-menu',\r\n params: {\r\n [BUILDER]: { type: Number, default: 0 },\r\n [DIVISION]: { type: Number, default: 0 },\r\n [COMMUNITY]: { type: Number, default: 0 },\r\n [SEARCH]: { type: String, default: '' },\r\n [STATUS]: { type: String, default: 'All' },\r\n [BEDS]: { type: Array, default: [] },\r\n [BATHS]: { type: Array, default: [] },\r\n [GARAGES]: { type: Array, default: [] },\r\n [PAGE_NUMBER]: { type: Number, default: 1 },\r\n [PAGE_SIZE]: { type: Number, default: 50 },\r\n [SORT]: { type: Object, default: { name: 1 } },\r\n },\r\n action: () => Promise.all([import('./modules/content-libraries/plans/views/menu'), import('./modules/content-libraries/plans/views/page/plan-library-page')]),\r\n});\r\n\r\nexport const PLAN_PARENT = new Location('/plan/:planId', {\r\n component: 'bdx-plan-parent',\r\n title: 'ZondaLive – Parent Plan Detail',\r\n menu: 'bdx-plan-parent-menu',\r\n action: () => Promise.all([import('@/modules/content-libraries/plans/plan-parent-detail/views/plan-parent/plan-parent'), import('@/modules/content-libraries/plans/plan-parent-detail/menu')]),\r\n});\r\n\r\nexport const PLAN_PARENT_MAIN = new Location('/main', {\r\n name: 'bdx-plan-parent-main',\r\n component: 'bdx-plan-main',\r\n title: 'ZondaLive – Plan Parent Detail',\r\n linkName: 'Main Details',\r\n action: () => import('./modules/listings-detail/plan-detail/components/plan-main/plan-main'),\r\n});\r\n\r\nexport const PLAN_PARENT_NEW = new Location('/', {\r\n name: 'bdx-plan-parent-new',\r\n disableMenu: true,\r\n component: 'bdx-plan-main',\r\n title: 'ZondaLive – Plan Parent Detail',\r\n linkName: 'Main Details',\r\n action: () => import('./modules/listings-detail/plan-detail/components/plan-main/plan-main'),\r\n});\r\n\r\nexport const PLAN_PARENT_IMAGES = new Location('/images', {\r\n name: 'bdx-plan-parent-images',\r\n component: 'bdx-plan-images-tab',\r\n title: 'ZondaLive – Plan Parent Images',\r\n linkName: 'Images',\r\n action: () => import('./modules/listings-detail/plan-detail/components/plan-images-tab/plan-images-tab'),\r\n});\r\n\r\nexport const PLAN_PARENT_VIDEOS = new Location('/videos', {\r\n name: 'bdx-plan-parent-videos',\r\n component: 'bdx-plan-videos-tab',\r\n title: 'ZondaLive – Plan Parent Videos',\r\n linkName: 'Videos',\r\n action: () => import('./modules/listings-detail/plan-detail/components/plan-videos-tab/plan-videos-tab'),\r\n});\r\n\r\nexport const PLAN_PARENT_INTERACTIVE_MEDIA = new Location('/interactive-media', {\r\n component: 'bdx-plan-interactive-media',\r\n title: 'ZondaLive – Plan Parent Interactive Media',\r\n name: 'bdx-plan-parent-interactive-media',\r\n linkName: 'Interactive Media',\r\n action: () => import('./modules/listings-detail/plan-detail/components/plan-interactive-media/plan-interactive-media'),\r\n});\r\n\r\nexport const PLAN_PARENT_ASSIGNED_COMMUNITIES = new Location('/assigned-communities', {\r\n name: 'bdx-plan-assigned-communities',\r\n component: 'bdx-plan-assigned-comm',\r\n title: 'ZondaLive – Assigned Communties',\r\n linkName: 'Assigned Communities',\r\n params: { [SEARCH]: { type: String, default: '', visible: false } },\r\n action: () => import('./modules/listings-detail/plan-detail/components/plan-assigned-comm/plan-assigned-comm'),\r\n});\r\n\r\nexport const ACCOUNTSETUP = new Location('/acccount-setup', {\r\n component: 'bdx-dashboard',\r\n action: () => import('./modules/content/views/dashboard/dashboard'),\r\n});\r\n\r\nexport const COMMUNITY_DETAIL = new Location('/community/:communityId?', {\r\n component: 'bdx-community-page',\r\n linkName: 'Main Details',\r\n title: 'ZondaLive – Community Detail',\r\n action: () => import('./modules/listings-detail/community-detail/views/community-page/community-page'),\r\n});\r\n\r\nexport const COMMUNITY_DETAIL_NEW = new Location('/', {\r\n component: 'bdx-community-main',\r\n linkName: 'Main Details',\r\n disableMenu: true,\r\n name: 'bdx-community-main-new',\r\n title: 'ZondaLive – Community Detail',\r\n action: () => import('./modules/listings-detail/community-detail/components/community-main/community-main'),\r\n});\r\n\r\nexport const COMMUNITY_DETAIL_MAIN = new Location('/main', {\r\n component: 'bdx-community-main',\r\n title: 'ZondaLive – Community Detail',\r\n linkName: 'Main Details',\r\n action: () => import('./modules/listings-detail/community-detail/components/community-main/community-main'),\r\n});\r\n\r\nexport const COMMUNITY_SCHOOLS = new Location('/schools', {\r\n component: 'bdx-listing-schools',\r\n title: 'ZondaLive – Community Schools',\r\n name: 'bdx-community-schools',\r\n linkName: 'Schools',\r\n action: () => import('./modules/listings-detail/components/listing-schools/listing-schools'),\r\n});\r\n\r\nexport const COMMUNITY_AMENITIES_UTILITIES = new Location('/amenities-utilities', {\r\n component: 'bdx-community-amenities-utilities',\r\n title: 'ZondaLive – Community Amenities / Utilities',\r\n linkName: 'Amenities / Utilities',\r\n action: () => import('./modules/listings-detail/community-detail/components/community-amenities-utilities/views/community-amenities-utilities/community-amenities-utilities'),\r\n});\r\n\r\nexport const COMMUNITY_MARKETING = new Location('/marketing', {\r\n component: 'bdx-community-marketing',\r\n title: 'ZondaLive – Community Marketing',\r\n linkName: 'Marketing',\r\n action: () => import('./modules/listings-detail/community-detail/components/community-marketing/community-marketing'),\r\n});\r\n\r\nexport const COMMUNITY_IMAGE = new Location('/images', {\r\n component: 'bdx-community-images-tab',\r\n title: 'ZondaLive – Community Images',\r\n linkName: 'Images',\r\n action: () => import('./modules/listings-detail/community-detail/components/community-images-tab/community-images-tab'),\r\n});\r\n\r\nexport const COMMUNITY_VIDEO = new Location('/videos', {\r\n component: 'bdx-community-videos-tab',\r\n title: 'ZondaLive – Community Videos',\r\n linkName: 'Videos',\r\n action: () => import('./modules/listings-detail/community-detail/components/community-videos-tab/community-videos-tab'),\r\n});\r\n\r\nexport const COMMUNITY_INTERACTIVE_MEDIA = new Location('/interactive-media', {\r\n component: 'bdx-community-interactive-media',\r\n title: 'ZondaLive – Community Interactive Media',\r\n linkName: 'Interactive Media',\r\n action: () => import('./modules/listings-detail/community-detail/components/community-interactive-media/community-interactive-media'),\r\n});\r\n\r\nexport const COMMUNITY_LOTS = new Location('/lots', {\r\n component: 'bdx-community-lots',\r\n title: 'ZondaLive - Community Lots',\r\n linkName: 'Lots',\r\n action: () => import('@/modules/listings-detail/community-detail/components/community-lots/views/community-lots/community-lots'),\r\n});\r\n\r\nexport const COMMUNITY_MANAGE_HOMES = new Location('/manage-homes', {\r\n component: 'bdx-community-manage-homes',\r\n title: 'ZondaLive - Community Manage Homes',\r\n linkName: 'Manage Homes',\r\n action: () => import('@/modules/listings-detail/community-detail/components/community-manage-homes/views/community-manage-homes/community-manage-homes'),\r\n});\r\n\r\nexport const MPC_DETAIL = new Location('/mpc/:communityId?', {\r\n component: 'bdx-mpc-page',\r\n linkName: 'Main Details',\r\n title: 'ZondaLive – Mpc Detail',\r\n menu: 'mpc-detail-menu',\r\n action: () => Promise.all([import('./modules/listings-detail/mpc-detail/views/mpc-page/mpc-page'), import('./modules/listings-detail/mpc-detail/menu')]),\r\n});\r\n\r\nexport const MPC_DETAIL_NEW = new Location('/', {\r\n component: 'bdx-mpc-main',\r\n linkName: 'Main Details',\r\n disableMenu: true,\r\n name: 'bdx-mpc-main-new',\r\n title: 'ZondaLive – Mpc Detail',\r\n action: () => import('./modules/listings-detail/mpc-detail/components/mpc-main/mpc-main'),\r\n});\r\n\r\nexport const MPC_DETAIL_MAIN = new Location('/main', {\r\n component: 'bdx-mpc-main',\r\n title: 'ZondaLive – Mpc Detail',\r\n linkName: 'Main Details',\r\n name: 'bdx-mpc-main',\r\n action: () => import('./modules/listings-detail/mpc-detail/components/mpc-main/mpc-main'),\r\n});\r\n\r\nexport const MPC_SCHOOLS = new Location('/schools', {\r\n component: 'bdx-listing-schools',\r\n title: 'ZondaLive – MPC Schools',\r\n name: 'bdx-mpc-schools',\r\n linkName: 'Schools',\r\n action: () => import('./modules/listings-detail/components/listing-schools/listing-schools'),\r\n});\r\n\r\nexport const MPC_AMENITIES_UTILITIES = new Location('/amenities-utilities', {\r\n component: 'bdx-mpc-amenities-utilities',\r\n title: 'ZondaLive – MPC Amenities / Utilities',\r\n linkName: 'Amenities / Utilities',\r\n name: 'bdx-mpc-amenities-utilities',\r\n action: () => import('./modules/listings-detail/mpc-detail/components/mpc-amenities-utilities/views/mpc-amenities-utilities/mpc-amenities-utilities'),\r\n});\r\n\r\nexport const MPC_MARKETING = new Location('/marketing', {\r\n component: 'bdx-mpc-marketing',\r\n title: 'ZondaLive – MPC Marketing',\r\n linkName: 'Marketing',\r\n name: 'bdx-mpc-marketing',\r\n action: () => import('./modules/listings-detail/mpc-detail/components/mpc-marketing/mpc-marketing'),\r\n});\r\n\r\nexport const MPC_LINKED_COMMUNITIES = new Location('/linked-communities', {\r\n component: 'bdx-mpc-linked-communities',\r\n title: 'ZondaLive – MPC Linked Communities',\r\n linkName: 'Linked Communities',\r\n name: 'bdx-mpc-linked-communities',\r\n action: () => import('./modules/listings-detail/mpc-detail/components/mpc-linked-communities/mpc-linked-communities'),\r\n});\r\n\r\nexport const MPC_IMAGE = new Location('/images', {\r\n component: 'bdx-mpc-images-tab',\r\n title: 'ZondaLive – MPC Images',\r\n linkName: 'Images',\r\n name: 'bdx-mpc-images-tab',\r\n action: () => import('./modules/listings-detail/mpc-detail/components/mpc-images-tab/mpc-images-tab'),\r\n});\r\n\r\nexport const MPC_VIDEO = new Location('/videos', {\r\n component: 'bdx-mpc-videos-tab',\r\n title: 'ZondaLive – MPC Videos',\r\n linkName: 'Videos',\r\n name: 'bdx-mpc-videos-tab',\r\n action: () => import('./modules/listings-detail/mpc-detail/components/mpc-videos-tab/mpc-videos-tab'),\r\n});\r\n\r\nexport const PLAN_DETAIL = new Location('/plan/:planId?', {\r\n component: 'bdx-plan-page',\r\n title: 'ZondaLive – Plan Detail',\r\n linkName: 'Main Details',\r\n params: { page: { type: String } },\r\n action: () => import('./modules/listings-detail/plan-detail/views/plan-page/plan-page'),\r\n});\r\n\r\nexport const PLAN_DETAIL_NEW = new Location('/', {\r\n name: 'bdx-plan-main-new',\r\n disableMenu: true,\r\n component: 'bdx-plan-main',\r\n linkName: 'Main Details',\r\n title: 'ZondaLive – Plan Detail',\r\n action: () => import('./modules/listings-detail/plan-detail/components/plan-main/plan-main'),\r\n});\r\n\r\nexport const PLAN_DETAIL_MAIN = new Location('/main', {\r\n name: 'bdx-plan-detail-main',\r\n component: 'bdx-plan-main',\r\n title: 'ZondaLive – Plan Details',\r\n linkName: 'Main Details',\r\n action: () => import('./modules/listings-detail/plan-detail/components/plan-main/plan-main'),\r\n});\r\n\r\nexport const PLAN_IMAGE = new Location('/images', {\r\n component: 'bdx-plan-images-tab',\r\n title: 'ZondaLive – Plan Images',\r\n linkName: 'Images',\r\n action: () => import('./modules/listings-detail/plan-detail/components/plan-images-tab/plan-images-tab'),\r\n});\r\n\r\nexport const PLAN_VIDEO = new Location('/videos', {\r\n component: 'bdx-plan-videos-tab',\r\n title: 'ZondaLive – Plan Videos',\r\n linkName: 'Videos',\r\n action: () => import('./modules/listings-detail/plan-detail/components/plan-videos-tab/plan-videos-tab'),\r\n});\r\n\r\nexport const PLAN_INTERACTIVE_MEDIA = new Location('/interactive-media', {\r\n component: 'bdx-plan-interactive-media',\r\n title: 'ZondaLive – Plan Interactive Media',\r\n linkName: 'Interactive Media',\r\n action: () => import('./modules/listings-detail/plan-detail/components/plan-interactive-media/plan-interactive-media'),\r\n});\r\n\r\nexport const PLAN_OPTIONS = new Location('/plan-options', {\r\n component: 'bdx-plan-options',\r\n title: 'ZondaLive – Plan Options',\r\n linkName: 'Plan Options',\r\n action: () => import('./modules/listings-detail/plan-detail/components/plan-options/plan-options'),\r\n});\r\n\r\nexport const SPEC_DETAIL = new Location('/spec/:specId?', {\r\n component: 'bdx-spec-page',\r\n title: 'ZondaLive – Spec Detail',\r\n linkName: 'Main Details',\r\n action: () => import('./modules/listings-detail/spec-detail/views/spec-page/spec-page'),\r\n});\r\n\r\nexport const SPEC_DETAIL_NEW = new Location('/', {\r\n name: 'bdx-spec-main-new',\r\n component: 'bdx-spec-main',\r\n disableMenu: true,\r\n linkName: 'Main Details',\r\n title: 'ZondaLive – Spec Detail',\r\n action: () => import('./modules/listings-detail/spec-detail/components/spec-main/spec-main'),\r\n});\r\n\r\nexport const SPEC_DETAIL_MAIN = new Location('/main', {\r\n component: 'bdx-spec-main',\r\n linkName: 'Main Details',\r\n title: 'ZondaLive – Spec Detail',\r\n action: () => import('./modules/listings-detail/spec-detail/components/spec-main/spec-main'),\r\n});\r\n\r\nexport const SPEC_IMAGE = new Location('/images', {\r\n component: 'bdx-spec-images-tab',\r\n title: 'ZondaLive – Spec Images',\r\n linkName: 'Images',\r\n action: () => import('./modules/listings-detail/spec-detail/components/spec-images-tab/spec-images-tab'),\r\n});\r\n\r\nexport const SPEC_VIDEO = new Location('/videos', {\r\n component: 'bdx-spec-videos-tab',\r\n title: 'ZondaLive – Spec Videos',\r\n linkName: 'Videos',\r\n action: () => import('./modules/listings-detail/spec-detail/components/spec-videos-tab/spec-videos-tab'),\r\n});\r\n\r\nexport const SPEC_INTERACTIVE_MEDIA = new Location('/interactive-media', {\r\n component: 'bdx-spec-interactive-media',\r\n title: 'ZondaLive – Spec Interactive Media',\r\n linkName: 'Interactive Media',\r\n action: () => import('./modules/listings-detail/spec-detail/components/spec-interactive-media/spec-interactive-media'),\r\n});\r\n\r\nexport const LOT_DETAIL = new Location('/lot/:lotId?', {\r\n component: 'bdx-lot-page',\r\n title: 'ZondaLive – Lot Detail',\r\n linkName: 'Main Details',\r\n action: () => import('./modules/listings-detail/lot-detail/views/lot-page/lot-page'),\r\n});\r\n\r\nexport const LOT_DETAIL_MAIN = new Location('/main', {\r\n component: 'bdx-lot-main',\r\n linkName: 'Main Details',\r\n title: 'ZondaLive – Lot Detail',\r\n action: () => import('./modules/listings-detail/lot-detail/components/lot-main/lot-main'),\r\n});\r\n\r\nexport const LOT_IMAGE = new Location('/images', {\r\n component: 'bdx-lot-images-tab',\r\n title: 'ZondaLive – Lot Images',\r\n linkName: 'Images',\r\n action: () => import('./modules/listings-detail/lot-detail/components/lot-images-tab/lot-images-tab'),\r\n});\r\n\r\nexport const LOT_VIDEO = new Location('/videos', {\r\n component: 'bdx-lot-videos-tab',\r\n title: 'ZondaLive – Lot Videos',\r\n linkName: 'Videos',\r\n action: () => import('./modules/listings-detail/lot-detail/components/lot-videos-tab/lot-videos-tab'),\r\n});\r\n\r\nexport const LOT_INTERACTIVE_MEDIA = new Location('/interactive-media', {\r\n component: 'bdx-lot-interactive-media',\r\n title: 'ZondaLive – Lot Interactive Media',\r\n linkName: 'Interactive Media',\r\n action: () => import('./modules/listings-detail/lot-detail/components/lot-interactive-media/lot-interactive-media'),\r\n});\r\n\r\nexport const LOT_DETAIL_NEW = new Location('/', {\r\n name: 'bdx-lot-main-new',\r\n component: 'bdx-lot-main',\r\n disableMenu: true,\r\n linkName: 'Main Details',\r\n title: 'ZondaLive – Lot Detail',\r\n action: () => import('./modules/listings-detail/lot-detail/components/lot-main/lot-main'),\r\n});\r\n\r\nexport const USER_MANAGEMENT = new Location('/user/:userId?', {\r\n component: 'bdx-user-main',\r\n linkName: 'User Management',\r\n title: 'ZondaLive – User Management',\r\n disableMenu: true,\r\n action: () => import('./modules/user-management/components/user-main/user-main'),\r\n});\r\n\r\nexport const MULTI_SELECT_COMBO_BOX_DEMO = new Location('/multi-select-combo-box-demo', {\r\n component: 'multi-select-combo-box-demo',\r\n action: () => import('./shared/components/multi-select-combo-box/multi-select-combo-box-demo'),\r\n});\r\n\r\nexport const MONEY_FIELD_DEMO = new Location('/money-field-demo', {\r\n component: 'bdx-money-field-demo',\r\n title: 'ZondaLive – Dashboard',\r\n action: () => import('./shared/components/text-fields/money-field/money-field-demo'),\r\n});\r\n\r\nexport const EFLYER = new Location('/eflyer', {\r\n component: 'bdx-eflyer-page',\r\n title: 'ZondaLive – EFLYER',\r\n disableMenu: true,\r\n action: () => import('./modules/content/views/dashboard/eflyer-page/components/manage-campaign/eflyer-page'),\r\n});\r\n\r\nexport const NEW_EFLYER = new Location('/new-eflyer', {\r\n component: 'bdx-new-eflyer-page',\r\n title: 'ZondaLive – EFLYER',\r\n disableMenu: true,\r\n action: () => import('./modules/content/views/dashboard/eflyer-page/components/new-campaign/new-eflyer-page'),\r\n});\r\n\r\nexport const BILLING = new Location('/billing', {\r\n name: 'bdx-billing-page',\r\n component: 'bdx-billing-page',\r\n title: 'ZondaLive – Billing & Invoices',\r\n menu: 'bdx-billing-menu',\r\n params: {\r\n [BUILDER]: { type: Number, default: 0 },\r\n [DIVISION]: { type: Number, default: 0 },\r\n [PRODUCTS]: { type: Array, default: [] },\r\n [CUSTOMERS]: { type: Array, default: [] },\r\n [CYCLES]: { type: Array, default: [] },\r\n [STATUS]: { type: String, default: invoicesTypes.PastDue },\r\n [SEARCH]: { type: String, default: '' },\r\n [SORT]: { type: Object, default: { DueDate: -1 } },\r\n [PAGE_SIZE]: { type: Number, default: 50 },\r\n [PAGE_NUMBER]: { type: Number, default: 1 },\r\n },\r\n action: () => Promise.all([import('./modules/billing/menu'), import('./modules/billing/views/billing/billing-page')]),\r\n});\r\n\r\nexport const DIVISION_TESTIMONIALS = new Location('/testimonials', {\r\n component: 'bdx-division-testimonials',\r\n title: 'ZondaLive – Division Testimonials',\r\n menu: 'bdx-iframe-menu-division',\r\n action: () => Promise.all([import('./shared/components/iframe/menus/bdx-iframe-menu-division'), import('./modules/division-detail/components/division-testimonials/division-testimonials')]),\r\n});\r\n\r\nexport const DIVISION_LEAD_RECIPIENT = new Location('/division-lead-recipient', {\r\n component: 'bdx-division-lead-recipient',\r\n title: 'ZondaLive – Division Lead Recipient',\r\n menu: 'bdx-iframe-menu-lead-recipient',\r\n action: () => Promise.all([import('./shared/components/iframe/menus/bdx-iframe-menu-lead-recipient'), import('./modules/division-detail/components/division-lead-recipient/division-lead-recipient')]),\r\n});\r\n\r\nexport const CORPORATION_MAIN_DETAILS = new Location('/main-details', {\r\n component: 'bdx-corporation-main-details',\r\n title: 'ZondaLive – Corporation Main Details',\r\n menu: 'bdx-iframe-menu-corporation',\r\n action: () => Promise.all([import('./shared/components/iframe/menus/bdx-iframe-menu-corporation'), import('./modules/corporation-detail/components/corporation-main-details/corporation-main-details')]),\r\n});\r\n\r\nexport const SOLD_DATA_UPLOAD = new Location('/sold-data-upload', {\r\n component: 'bdx-sold-data-upload-page',\r\n title: 'ZondaLive – Sold Data Upload',\r\n menu: 'bdx-sold-data-upload-menu',\r\n disableMenu: (state) => !empty(userContextBuilderSelector(state)),\r\n action: () => Promise.all([import('./modules/sold-data-upload/menu'), import('./modules/sold-data-upload/views/sold-data-upload-page/sold-data-upload-page')]),\r\n});\r\n\r\nexport const CORPORATION_MANAGE_DIVISION = new Location('/manage-division', {\r\n component: 'bdx-corporation-manage-division',\r\n title: 'ZondaLive – Corporation Manage Division',\r\n menu: 'bdx-iframe-menu-corporation',\r\n action: () => Promise.all([import('./shared/components/iframe/menus/bdx-iframe-menu-corporation'), import('./modules/corporation-detail/components/corporation-manage-division/corporation-manage-division')]),\r\n});\r\n\r\nexport const LISTHUB = new Location('/list-hub/:builderId?', {\r\n component: 'bdx-listhub-page',\r\n linkName: 'List Hub',\r\n title: 'ZondaLive - List Hub Detail',\r\n menu: 'bdx-listhub-menu',\r\n action: () => Promise.all([import('./modules/listhub/menu'), import('./modules/listhub/views/listhub-page/listhub-page')]),\r\n});\r\n\r\nexport const BRAND = new Location('/builder-showcase/:brandId?', {\r\n component: 'bdx-brand-page',\r\n linkName: 'Main Details',\r\n title: 'ZondaLive - Builder Showcase Detail',\r\n menu: 'bdx-brand-menu',\r\n action: () => Promise.all([import('./modules/brand/menu'), import('./modules/brand/views/brand-page/brand-page')]),\r\n});\r\n\r\nexport const BRAND_MAIN = new Location('/main', {\r\n component: 'bdx-brand-main',\r\n linkName: 'Main Details',\r\n title: 'ZondaLive - Builder Showcase Detail',\r\n name: 'bdx-brand-main',\r\n action: () => import('./modules/brand/components/brand-main/brand-main'),\r\n});\r\n\r\nexport const BRAND_IMAGES = new Location('/images', {\r\n component: 'bdx-brand-images',\r\n linkName: 'Images',\r\n title: 'ZondaLive - Builder Showcase Detail',\r\n name: 'bdx-brand-images',\r\n action: () => import('./modules/brand/components/brand-images/brand-images'),\r\n});\r\n\r\nexport const BRAND_VIDEOS = new Location('/videos', {\r\n component: 'bdx-brand-videos',\r\n linkName: 'Videos',\r\n title: 'ZondaLive - Builder Showcase Detail',\r\n name: 'bdx-brand-videos',\r\n action: () => import('./modules/brand/components/brand-videos/brand-videos'),\r\n});\r\n\r\nexport const BRAND_TESTIMONIALS = new Location('/testimonials', {\r\n component: 'bdx-brand-testimonials',\r\n linkName: 'Testimonials',\r\n title: 'ZondaLive - Builder Showcase Detail',\r\n name: 'bdx-brand-testimonials',\r\n action: () => import('./modules/brand/components/brand-testimonials/brand-testimonials'),\r\n});\r\n\r\nexport const BRAND_FAQ = new Location('/faq', {\r\n component: 'bdx-brand-faq',\r\n linkName: 'FAQ',\r\n title: 'ZondaLive - Builder Showcase Detail',\r\n name: 'bdx-brand-faq',\r\n action: () => import('./modules/brand/components/brand-faq/brand-faq'),\r\n});\r\n\r\nexport const SPOTLIGHT = new Location('/spotlight', {\r\n component: 'bdx-spotlight-page',\r\n title: 'ZondaLive – Spotlight',\r\n menu: 'bdx-spotlight-menu',\r\n action: () => Promise.all([import('./modules/spotlight/menu'), import('./modules/spotlight/views/spotlight-page')]),\r\n});\r\n\r\nexport const SPOTLIGHT_LANDING = new Location('/landing/:builderId?', {\r\n component: 'bdx-spotlight-landing',\r\n title: 'ZondaLive – Spotlight Landing',\r\n name: 'bdx-spotlight-landing',\r\n action: () => import('./modules/spotlight/components/spotlight-landing/spotlight-landing'),\r\n});\r\n\r\nexport const SPOTLIGHT_MANAGER = new Location('/manager/:builderId?/:state?/:name?/:marketId?/:orderId?', {\r\n component: 'bdx-spotlight-manager',\r\n title: 'ZondaLive – Spotlight Manager',\r\n name: 'bdx-spotlight-manager',\r\n action: () => import('./modules/spotlight/components/spothlight-manager/spotlight-manager'),\r\n});\r\n\r\nexport const BUILDER_AGENT = new Location('/agent-policies/:builderId?', {\r\n component: 'bdx-agent-policies-page',\r\n title: 'ZondaLive – Agent Policies',\r\n menu: 'bdx-agent-policies-menu',\r\n action: () => Promise.all([import('./modules/agent/menu'), import('./modules/agent/views/agent-page/agent-page')]),\r\n});\r\n\r\nexport const AGENT_MAIN = new Location('/main', {\r\n component: 'bdx-agent-main',\r\n linkName: 'Agent Co-Op Confirmation',\r\n title: 'ZondaLive - Agent Policies Co-Op Confirmation',\r\n name: 'bdx-agent-main',\r\n disableMenu: (state) => !empty(userContextBuilderSelector(state)),\r\n action: () => import('./modules/agent/components/agent-main/agent-main'),\r\n});\r\n\r\nexport const AGENT_POLICIES = new Location('/agent-policies', {\r\n component: 'bdx-agent-policies',\r\n linkName: 'Agent Policies',\r\n title: 'ZondaLive - Agent Policies',\r\n name: 'bdx-agent-policies',\r\n disableMenu: (state) => !empty(userContextBuilderSelector(state)),\r\n action: () => import('./modules/agent/components/agent-policies-base/agent-policies-base'),\r\n});\r\n\r\nexport const AGENT_BUYER_POLICIES = new Location('/buyer-registration', {\r\n component: 'bdx-agent-buyer-policies',\r\n linkName: 'Buyer Registration Form',\r\n title: 'ZondaLive - Buyer Registration Form',\r\n name: 'bdx-agent-buyer-registration',\r\n disableMenu: (state) => !empty(userContextBuilderSelector(state)),\r\n action: () => import('./modules/agent/components/agent-buyer-policies/agent-buyer-policies'),\r\n});\r\n\r\nexport const CORPORATION_DATAFEED_OVERRIDES = new Location('/datafeed-overrides', {\r\n component: 'bdx-corporation-datefeed-overrides',\r\n title: 'ZondaLive – Corporation Datafeed Overrides',\r\n menu: 'bdx-iframe-menu-corporation',\r\n action: () => Promise.all([import('./shared/components/iframe/menus/bdx-iframe-menu-corporation'), import('./modules/corporation-detail/components/corporation-datafeed-overrides/corporation-datafeed-overrides')]),\r\n});\r\n\r\nexport const CORPORATION_LEAD_RECIPIENT = new Location('/corporation-lead-recipient', {\r\n component: 'bdx-corporation-lead-recipient',\r\n title: 'ZondaLive – Corporation Lead Recipient',\r\n menu: 'bdx-iframe-menu-lead-recipient',\r\n action: () => Promise.all([import('./shared/components/iframe/menus/bdx-iframe-menu-lead-recipient'), import('./modules/corporation-detail/components/corporation-lead-recipient/corporation-lead-recipient')]),\r\n});\r\n\r\nexport const MPCS = new Location('/master-planned-communities', {\r\n name: 'bdx-manage-mpcs-page',\r\n component: 'bdx-manage-mpcs-page',\r\n title: 'ZondaLive – Manage Master Planned Communities',\r\n menu: 'bdx-manage-mpcs-menu',\r\n params: {\r\n [BUILDER]: { type: Number, default: 0 },\r\n [DIVISION]: { type: Number, default: 0 },\r\n [STATUS]: { type: Array, default: ['Active', 'Inactive', 'Submitted'] },\r\n [STATES]: { type: Array, default: [] },\r\n [BRANDS]: { type: Array, default: [] },\r\n [MARKETS]: { type: Array, default: [] },\r\n [SEARCH]: { type: String, default: '' },\r\n [SORT]: { type: Array, default: [] },\r\n [PAGE_SIZE]: { type: Number, default: 15 },\r\n [PAGE_NUMBER]: { type: Number, default: 1 },\r\n },\r\n action: () => Promise.all([import('./modules/landing-pages/mpc/views/menu'), import('./modules/landing-pages/mpc/views/page/manage-mpcs-page')]),\r\n});\r\n\r\nexport const COMMUNITIES = new Location('/communities', {\r\n name: 'bdx-manage-communities-page',\r\n component: 'bdx-manage-communities-page',\r\n title: 'ZondaLive – Manage Communities',\r\n menu: 'bdx-manage-communities-menu',\r\n params: {\r\n [BUILDER]: { type: Number, default: 0 },\r\n [DIVISION]: { type: Number, default: 0 },\r\n [STATUS]: { type: Array, default: ['Active', 'Inactive', 'Submitted'] },\r\n [STATES]: { type: Array, default: [] },\r\n [BRANDS]: { type: Array, default: [] },\r\n [MARKETS]: { type: Array, default: [] },\r\n [SEARCH]: { type: String, default: '' },\r\n [SORT]: { type: Array, default: [] },\r\n [PAGE_SIZE]: { type: Number, default: 15 },\r\n [PAGE_NUMBER]: { type: Number, default: 1 },\r\n },\r\n action: () => Promise.all([import('./modules/landing-pages/community/views/menu'), import('./modules/landing-pages/community/views/page/manage-communities-page')]),\r\n});\r\n\r\nexport const SPECS = new Location('/specs', {\r\n name: 'bdx-manage-specs-page',\r\n component: 'bdx-manage-specs-page',\r\n title: 'ZondaLive – Manage Specs',\r\n menu: 'bdx-manage-specs-menu',\r\n params: {\r\n [BUILDER]: { type: Number, default: 0 },\r\n [DIVISION]: { type: Number, default: 0 },\r\n [COMMUNITY]: { type: Number, default: 0 },\r\n [STATUS]: { type: Array, default: ['Active', 'Inactive'] },\r\n [MARKETS]: { type: String, default: '' },\r\n [MOVEINDATE]: { type: Object, default: {} },\r\n [SEARCH]: { type: String, default: '' },\r\n [SORT]: { type: Object, default: { PlanName: 1 } },\r\n [PAGE_SIZE]: { type: Number, default: 15 },\r\n [PAGE_NUMBER]: { type: Number, default: 1 },\r\n },\r\n action: () => Promise.all([import('./modules/landing-pages/spec/views/menu'), import('./modules/landing-pages/spec/views/page/manage-specs-page')]),\r\n});\r\n\r\nexport const LOADER_DATA = new Location('/loader-data', {\r\n component: 'bdx-loader-data',\r\n title: 'ZondaLive – Loader Data',\r\n disableMenu: true,\r\n action: () => import('./modules/admin/loader-data/views/loader-data'),\r\n});\r\n\r\nexport const MLS_MANAGEMENT = new Location('/mls-management', {\r\n component: 'bdx-mls-management-page',\r\n title: 'ZondaLive – Zillow MLS Name Management',\r\n disableMenu: true,\r\n action: () => import('./modules/admin/mls-management/views/mls-management'),\r\n});\r\n\r\nexport const LEAD_MANAGEMENT = new Location('/lead-management', {\r\n name: 'bdx-lead-management-page',\r\n component: 'bdx-lead-management-page',\r\n title: 'ZondaLive – Lead Management',\r\n menu: 'bdx-lead-management-menu',\r\n disableMenu: (state) => isExternalUser(state),\r\n action: () => Promise.all([import('./modules/recommended-leads/menu'), import('./modules/recommended-leads/views/lead-management-page')]),\r\n});\r\n\r\nexport const CO_OP_CONFIRMATION_REPORT = new Location('/co_op-confirmation-report', {\r\n component: 'bdx-co-op-confirmation-report',\r\n title: 'ZondaLive – Co-Op Confirmation Report',\r\n disableMenu: true,\r\n action: () => import('./modules/bdx-live-report/co-op-confirmation-report'),\r\n});\r\n\r\nexport const GEOGRAPHY = new Location('/geography', {\r\n component: 'bdx-geography-page',\r\n title: 'ZondaLive – GEOGRAPHY',\r\n action: () => import('./modules/content/views/dashboard/geography-page/components/geography-page'),\r\n});\r\n\r\nexport const CONTRACTSIGNEE = new Location('/contract-signee', {\r\n modal: () => {\r\n import('@/utils/services/modal-service').then(({ ModalService }) =>\r\n ModalService.show({\r\n component: `bdx-contract-signee-modal`,\r\n importFn: () => import(`./shared/components/modal/modals/consumer-optix/contract-signee-modal`),\r\n config: { isCancelButtonVisible: false, confirmLabel: 'Close', buttonsPosition: 'flex-end' },\r\n }).subscribe()\r\n );\r\n },\r\n});\r\n\r\nexport const SEELEADAUG = new Location('/see-lead-aug', {\r\n modal: () => {\r\n import('@/utils/services/modal-service').then(({ ModalService }) =>\r\n ModalService.show({\r\n component: `bdx-see-lead-aug-modal`,\r\n importFn: () => import(`./shared/components/modal/modals/consumer-optix/see-lead-aug-modal`),\r\n config: { isCancelButtonVisible: false, confirmLabel: 'Close', buttonsPosition: 'flex-end' },\r\n }).subscribe()\r\n );\r\n },\r\n});\r\n\r\n/**\r\n * LOCATION LIST SECTION FOR DETAIL PAGES\r\n */\r\n\r\n// Locations list for Community Wizard MODE\r\nexport const COMMUNITY_ROUTES_WIZARD = [COMMUNITY_DETAIL_MAIN, COMMUNITY_IMAGE, COMMUNITY_VIDEO, COMMUNITY_INTERACTIVE_MEDIA, COMMUNITY_SCHOOLS, COMMUNITY_AMENITIES_UTILITIES, COMMUNITY_MARKETING];\r\n\r\n// Locations list for Community Wizard MODE\r\nexport const MPC_ROUTES_WIZARD = [MPC_DETAIL_MAIN, MPC_IMAGE, MPC_VIDEO, MPC_SCHOOLS, MPC_AMENITIES_UTILITIES, MPC_MARKETING, MPC_LINKED_COMMUNITIES];\r\n\r\n// Locations list for Community Wizard MODE\r\nexport const COMMUNITY_ROUTES_EDIT = [COMMUNITY_DETAIL_MAIN, COMMUNITY_IMAGE, COMMUNITY_VIDEO, COMMUNITY_INTERACTIVE_MEDIA, COMMUNITY_SCHOOLS, COMMUNITY_AMENITIES_UTILITIES, COMMUNITY_MARKETING, COMMUNITY_LOTS, COMMUNITY_MANAGE_HOMES];\r\n\r\n// Locations list for Mpc Wizard MODE\r\nexport const MPC_ROUTES_EDIT = [MPC_DETAIL_MAIN, MPC_IMAGE, MPC_VIDEO, MPC_SCHOOLS, MPC_AMENITIES_UTILITIES, MPC_MARKETING, MPC_LINKED_COMMUNITIES];\r\n\r\n// Locations list for Specification Wizard MODE\r\nexport const SPEC_ROUTES = [SPEC_DETAIL_MAIN, SPEC_IMAGE, SPEC_VIDEO, SPEC_INTERACTIVE_MEDIA];\r\n\r\n// Locations list for Specification Wizard MODE\r\nexport const LOT_ROUTES = [LOT_DETAIL_MAIN, LOT_IMAGE, LOT_VIDEO, LOT_INTERACTIVE_MEDIA];\r\n\r\n// Locations list for Plan Wizard MODE\r\nexport const PLAN_ROUTES = [PLAN_DETAIL_MAIN, PLAN_IMAGE, PLAN_VIDEO, PLAN_INTERACTIVE_MEDIA, PLAN_OPTIONS];\r\n\r\n// Locations list for Parent Plan Wizard MODE\r\nexport const PLAN_PARENT_ROUTES = [PLAN_PARENT_MAIN, PLAN_PARENT_IMAGES, PLAN_PARENT_VIDEOS, PLAN_PARENT_INTERACTIVE_MEDIA, PLAN_PARENT_ASSIGNED_COMMUNITIES];\r\n\r\n// Locations list for Parent Plan Wizard MODE\r\nexport const PLAN_PARENT_ROUTES_EDIT = [PLAN_PARENT_MAIN, PLAN_PARENT_IMAGES, PLAN_PARENT_VIDEOS, PLAN_PARENT_INTERACTIVE_MEDIA, PLAN_PARENT_ASSIGNED_COMMUNITIES];\r\n\r\n// Locations list for Brands Wizard MODE\r\nexport const BRAND_ROUTES = [BRAND_MAIN, BRAND_IMAGES, BRAND_VIDEOS, BRAND_TESTIMONIALS, BRAND_FAQ];\r\n\r\n// Locations list for Brands Wizard MODE\r\nexport const AGENT_ROUTES = [AGENT_MAIN, AGENT_POLICIES, AGENT_BUYER_POLICIES];\r\n","import { LOGIN } from '../../app.location';\r\n\r\n/**\r\n * Get the last location value\r\n * @param {*} state current state of the store\r\n */\r\nexport const getLastLocation = (state, lastUnique = false, excludeLogin = true) => {\r\n const lastLocation = state.app.router[lastUnique ? 'lastUniqueLocation' : 'lastLocation'] || {};\r\n let lastLocationUrl = lastLocation.pathname + (lastLocation.search || '');\r\n\r\n if (!lastLocationUrl || (excludeLogin && lastLocationUrl.includes(LOGIN.path)) || lastLocationUrl === 'undefined') {\r\n lastLocationUrl = '/';\r\n }\r\n\r\n return lastLocationUrl;\r\n};\r\n\r\n/**\r\n * Get the current location\r\n * @param {*} state current state of the store\r\n */\r\nexport const getCurrentLocation = (state) => state && state.app.router && state.app.router.route.pathname;\r\n/**\r\n * Get the current location parameter\r\n * @param {*} state current state of the store\r\n */\r\nexport const getParameters = (state) => state.app.router.route.queries;\r\n\r\nexport const getCurrentRoute = (state) => state.app.router.route;\r\n","export const SET_PARAMS = 'app/app-location/set_params';\r\nexport const SET_PARAM = 'app/app-location/set_param';\r\n","import { SET_PARAMS, SET_PARAM } from './types';\r\n\r\nexport const setParams = (params) => ({ type: SET_PARAMS, params });\r\nexport const setParam = (name, value, path) => ({ type: SET_PARAM, name, value, path });\r\n","export const GLOBAL_PARTNER_CHANGED = 'bdxlive/global/partner-changed';\r\nexport const GLOBAL_BUILDER_CHANGED = 'bdxlive/global/builder-changed';\r\nexport const GLOBAL_DIVISION_CHANGED = 'bdxlive/global/division-changed';\r\nexport const GLOBAL_COMMUNITY_CHANGED = 'bdxlive/global/community-changed';\r\n\r\nexport const SEARCH_REQUEST = 'bdxlive/global/search_request';\r\nexport const SEARCH_SUCCESS = 'bdxlive/global/search_success';\r\nexport const SEARCH_FAIL = 'bdxlive/global/search_fail';\r\n\r\n/**\r\n * Navigation open\r\n */\r\nexport const NAV_OPEN = 'bdxlive/global/nav_open';\r\nexport const NAV_FLOAT = 'bdxlive/global/nav_float';\r\nexport const NAV_FORCED = 'bdxlive/global/nav_forced';\r\nexport const NAV_COLLAPSE = 'bdxlive/global/nav_collapse';\r\n\r\n/**\r\n * Navigation Context\r\n */\r\nexport const NAV_PARTNER_CONTEXT = 'bdxlive/global/nav_partner_context';\r\nexport const NAV_BUILDER_CONTEXT = 'bdxlive/global/nav_builder_context';\r\nexport const NAV_DIVISON_CONTEXT = 'bdxlive/global/nav_division_context';\r\nexport const NAV_COMMUNITY_CONTEXT = 'bdxlive/global/nav_community_context';\r\nexport const NAV_PLAN_CONTEXT = 'bdxlive/global/nav_plan_context';\r\nexport const NAV_SPEC_CONTEXT = 'bdxlive/global/nav_spec_context';\r\nexport const NAV_FULL_CONTEXT = 'bdxlive/global/nav_full_context';\r\n\r\n/**\r\n * Parnter Search Box\r\n */\r\nexport const NAV_PARTNER_SEARCH_BOX_REQUEST = 'bdxlive/global/nav_partner_search_box_request';\r\nexport const NAV_PARTNER_SEARCH_BOX_SUCCESS = 'bdxlive/global/nav_partner_search_box_success';\r\nexport const NAV_PARTNER_SEARCH_BOX_FAIL = 'bdxlive/global/nav_partner_search_box_fail';\r\n\r\n/**\r\n * Builder Search Box\r\n */\r\nexport const NAV_BUILDER_SEARCH_BOX_REQUEST = 'bdxlive/global/nav_builder_search_box_request';\r\nexport const NAV_BUILDER_SEARCH_BOX_SUCCESS = 'bdxlive/global/nav_builder_search_box_success';\r\nexport const NAV_BUILDER_SEARCH_BOX_FAIL = 'bdxlive/global/nav_builder_search_box_fail';\r\n\r\n/**\r\n * Division Combo Box\r\n */\r\nexport const NAV_DIVISION_COMBO_BOX_REQUEST = 'bdxlive/global/nav_division_combo_box_request';\r\nexport const NAV_DIVISION_COMBO_BOX_SUCCESS = 'bdxlive/global/nav_division_combo_box_success';\r\nexport const NAV_DIVISION_COMBO_BOX_FAIL = 'bdxlive/global/nav_division_combo_box_fail';\r\n\r\n/**\r\n * Community Combo Box\r\n */\r\nexport const NAV_COMMUNITY_COMBO_BOX_REQUEST = 'bdxlive/global/nav_community_combo_box_request';\r\nexport const NAV_COMMUNITY_COMBO_BOX_SUCCESS = 'bdxlive/global/nav_community_combo_box_success';\r\nexport const NAV_COMMUNITY_COMBO_BOX_FAIL = 'bdxlive/global/nav_community_combo_box_fail';\r\n\r\n/**\r\n * Community Combo Box\r\n */\r\nexport const NAV_PLAN_COMBO_BOX_REQUEST = 'bdxlive/global/nav_plan_combo_box_request';\r\nexport const NAV_PLAN_COMBO_BOX_SUCCESS = 'bdxlive/global/nav_plan_combo_box_success';\r\nexport const NAV_PLAN_COMBO_BOX_FAIL = 'bdxlive/global/nav_plan_combo_box_fail';\r\n\r\n/**\r\n * Full Tree View\r\n */\r\nexport const NAV_FULL_TREE_VIEW_REQUEST = 'bdxlive/global/nav_full_tree_view_request';\r\nexport const NAV_FULL_TREE_VIEW_SUCCESS = 'bdxlive/global/nav_full_tree_view_success';\r\nexport const NAV_FULL_TREE_VIEW_FAIL = 'bdxlive/global/nav_full_tree_view_fail';\r\n\r\n/**\r\n * Community Tree View\r\n */\r\nexport const NAV_COMMUNITY_TREE_VIEW_FILTER = 'bdxlive/global/nav_community_tree_view_filter';\r\nexport const NAV_COMMUNITY_TREE_VIEW_REQUEST = 'bdxlive/global/nav_community_tree_view_request';\r\nexport const NAV_COMMUNITY_TREE_VIEW_SUCCESS = 'bdxlive/global/nav_community_tree_view_success';\r\nexport const NAV_COMMUNITY_TREE_VIEW_FAIL = 'bdxlive/global/nav_community_tree_view_fail';\r\n\r\n/**\r\n * Plan Tree View\r\n */\r\nexport const NAV_PLAN_TREE_VIEW_REQUEST = 'bdxlive/global/nav_plan_tree_view_request';\r\nexport const NAV_PLAN_TREE_VIEW_SUCCESS = 'bdxlive/global/nav_plan_tree_view_success';\r\nexport const NAV_PLAN_TREE_VIEW_FAIL = 'bdxlive/global/nav_plan_tree_view_fail';\r\n\r\n/**\r\n * Spec Tree View\r\n */\r\nexport const NAV_SPEC_TREE_VIEW_REQUEST = 'bdxlive/global/nav_spec_tree_view_request';\r\nexport const NAV_SPEC_TREE_VIEW_SUCCESS = 'bdxlive/global/nav_spec_tree_view_success';\r\nexport const NAV_SPEC_TREE_VIEW_FAIL = 'bdxlive/global/nav_spec_tree_view_fail';\r\n\r\n/**\r\n * Lot Tree View\r\n */\r\nexport const NAV_LOT_TREE_VIEW_REQUEST = 'bdxlive/global/nav_lot_tree_view_request';\r\nexport const NAV_LOT_TREE_VIEW_SUCCESS = 'bdxlive/global/nav_lot_tree_view_success';\r\nexport const NAV_LOT_TREE_VIEW_FAIL = 'bdxlive/global/nav_lot_tree_view_fail';\r\n\r\n/**\r\n * Views\r\n */\r\nexport const VIEW_CONTEXT_LOADING = 'bdxlive/global/view_context_loading';\r\nexport const TOGGLE_LIST_MODE = 'bdxlive/global/toggle_list_mode';\r\n","import { empty } from '@/lodash/';\r\nimport { config } from '@/redux/config/selectors';\r\nimport { qif } from '@/utils/api/graph-helpers';\r\n\r\n// Top param will be returned only if the key value is truthy\r\n// !!NaN is false\r\nconst top = (key) => qif(!!parseInt(config(key)), () => `top: ${config(key)}`);\r\n\r\n/**\r\n * Community nested object request\r\n * - Communities\r\n * - Specs\r\n * - Plans\r\n */\r\nconst NavFullTreeView = ({ builderId }) => `{\r\n builders(builderId:${builderId}) {\r\n builderId\r\n parentBuilderId\r\n communities(${top('CommsNavTop')} status: [Approved, Inactive, Submitted], sortBy: [{ order: Asc, field: Name }]){\r\n id\r\n name\r\n builderId\r\n status\r\n specs(${top('PlansNavTop')} sortBy: [{ order: Asc, field: Number }], status: [Active, Inactive]){\r\n id\r\n number\r\n status\r\n },\r\n plans(${top('SpecsNavTop')} sortBy: [{ order:Asc, field: Name }], status: [Active, Inactive]){\r\n id\r\n name\r\n status\r\n }\r\n lots(${top('LotsNavTop')} sortBy: [{ order:Asc, field: Name }], status: [Active, Inactive]){\r\n id\r\n name\r\n status\r\n }\r\n }\r\n }\r\n}\r\n`;\r\n\r\nexport const NavFullTreeViewQuery = (requestArguments) => NavFullTreeView(requestArguments);\r\n\r\n/**\r\n * Community nested object request\r\n * - Communities\r\n */\r\nconst NavCommunityTreeView = ({ builderId, listingTypes, isMpc }) => `{\r\n builders(builderId:${builderId}) {\r\n builderId\r\n parentBuilderId\r\n communities(${top('CommsNavTop')}\r\n status: [Approved, Inactive, Submitted]\r\n sortBy: [{order: Asc, field: Name}]\r\n excludeCustom: true\r\n ${!empty(listingTypes) ? `listingTypes: [${listingTypes}]` : ''}\r\n ) {\r\n id\r\n name\r\n builderId\r\n status\r\n listingType\r\n planCount(status: [Active, Inactive])\r\n specCount(status: [Active, Inactive])\r\n lotsCount(status: [Active, Inactive])\r\n parentCommunityId\r\n ${\r\n isMpc\r\n ? `\r\n childCommunities(status: [Approved, Inactive]) {\r\n id\r\n name\r\n builderId\r\n status\r\n listingType\r\n }\r\n `\r\n : `\r\n planCount(status: [Active, Inactive])\r\n specCount(status: [Active, Inactive])\r\n `\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const NavCommunityTreeViewQuery = (requestArguments) => NavCommunityTreeView(requestArguments);\r\n\r\n/**\r\n * Plan object request\\\r\n * - Plans\r\n */\r\nconst NavPlanTreeView = ({ communityId }) => `{\r\n communities(communityId: ${communityId}) {\r\n id\r\n plans(${top('PlansNavTop')} sortBy: [{order: Asc, field: Name}], status: [Active, Inactive]) {\r\n id\r\n name\r\n status\r\n }\r\n }\r\n}\r\n`;\r\n\r\nexport const NavPlanTreeViewQuery = (requestArguments) => NavPlanTreeView(requestArguments);\r\n\r\n/**\r\n * Spec object request\\\r\n * - Plans\r\n */\r\nconst NavSpecTreeView = ({ communityId }) => `{\r\n communities(communityId: ${communityId}) {\r\n id\r\n specs(${top('SpecsNavTop')} sortBy: [{ order:Asc, field: Number }], status: [Active, Inactive]){\r\n id\r\n number\r\n status\r\n }\r\n }\r\n}\r\n`;\r\n\r\nexport const NavSpecTreeViewQuery = (requestArguments) => NavSpecTreeView(requestArguments);\r\n\r\n/**\r\n * Lot object request\r\n */\r\nconst NavLotTreeView = ({ communityId }) => `{\r\n communities(communityId: ${communityId}) {\r\n id\r\n lots(${top('LotsNavTop')} sortBy: [{ order:Asc, field: Number }], status: [Active, Inactive]){\r\n id\r\n name\r\n number\r\n status\r\n }\r\n }\r\n}\r\n`;\r\n\r\nexport const NavLotTreeViewQuery = (requestArguments) => NavLotTreeView(requestArguments);\r\n\r\nconst NavPartnerSearchBox = ({ search, sortColumns }) => `{\r\n partners(${top('PartnersNavTop')} sortBy:${sortColumns}, search:\"${search}\"){\r\n partnerId\r\n partnerName\r\n statusId\r\n }\r\n}`;\r\nexport const NavPartnerSearchBoxQuery = (requestArguments) => NavPartnerSearchBox(requestArguments);\r\n\r\n/**\r\n * Query for the menu dropdownlist, added first division in the subqueries, so if it only have 1, autoassign it\r\n */\r\nconst NavBuilderSearchBox = ({ search, sortColumns, status, divisionOrgTypeCodes = [], hasOnlySoldData }) => `{\r\n builders(\r\n ${top('CorpsNavTop')}\r\n corpOnly: true\r\n sortBy:${sortColumns}\r\n search:\"${search}\"\r\n status:[${status}]\r\n orgTypeCodes: [CST, PRD, MFR, DEV]\r\n migratedOnly: true\r\n ${hasOnlySoldData ? 'services:UploadSoldData' : ''}\r\n ${!empty(divisionOrgTypeCodes) ? `divisionOrgTypeCodes: [${divisionOrgTypeCodes}]` : ''}\r\n ) {\r\n builderId\r\n builderName\r\n dateCreated\r\n dateLastChanged\r\n statusId\r\n planLibraryType\r\n divisionsCount\r\n canadianData\r\n autoFeedFlag\r\n soldDataFlag\r\n recommendedLeadsSign\r\n dataLocks {\r\n greenPrograms\r\n }\r\n displayChannelSelection {\r\n displayOnWebArch\r\n displayOnWeb\r\n }\r\n partner{\r\n partnerId\r\n partnerName\r\n }\r\n divisions(top:10) {\r\n builderId\r\n builderName\r\n orgTypeCode\r\n }\r\n }\r\n}`;\r\nexport const NavBuilderSearchBoxQuery = (requestArguments) => NavBuilderSearchBox(requestArguments);\r\n\r\nexport const NavCommunityComboBoxQuery = (requestArguments) => NavCommunityComboBox(requestArguments);\r\n\r\nconst NavDivisionComboBox = ({ builderId, sortColumns, status, hasPlanLibrary, withoutChannelDisplay, brandId, orgTypeCodes }) => `{\r\n builders(\r\n ${top('DivsNavTop')}\r\n divOnly: true\r\n sortBy:${sortColumns}\r\n parentId:${builderId}\r\n status:[${status}]\r\n ${!empty(orgTypeCodes) ? `orgTypeCodes: [${orgTypeCodes}]` : ''}\r\n ${hasPlanLibrary ? 'hasPlanLibraryOnly: true' : ''}\r\n ${brandId !== undefined ? `brandId: ${brandId}` : ''}\r\n ) {\r\n builderId\r\n builderName\r\n parentBuilderId\r\n statusId\r\n priceSuppressionFlag\r\n orgTypeCode\r\n autoFeedFlag\r\n ${\r\n !withoutChannelDisplay\r\n ? `\r\n displayChannelSelection {\r\n displayOnWebArch\r\n displayOnWeb\r\n }\r\n `\r\n : ''\r\n }\r\n }\r\n}`;\r\n\r\nconst NavCommunityComboBox = ({ builderId, sortColumns, status, listingTypes }) => `{\r\n communities(\r\n ${top('CommsNavTop')}\r\n sortBy:${sortColumns}\r\n builderId:${builderId}\r\n status:[${status}]\r\n excludeCustom: true\r\n ${!empty(listingTypes) ? `listingTypes: [${listingTypes}]` : ''}\r\n ) {\r\n id\r\n name\r\n status\r\n listingType\r\n mlsName {\r\n id\r\n name\r\n }\r\n }\r\n}`;\r\n\r\nexport const NavDivisionComboBoxQuery = (requestArguments) => NavDivisionComboBox(requestArguments);\r\n\r\nconst NavPlanComboBox = ({ communityId, sortColumns, status }) => `{\r\n plans(${top('PlansNavTop')} communityId: ${communityId}, sortBy: ${sortColumns}, status: [${status}]) {\r\n id\r\n name\r\n status\r\n }\r\n}`;\r\n\r\nexport const NavPlanComboBoxQuery = (requestArguments) => NavPlanComboBox(requestArguments);\r\n","import { NAV_COMMUNITY_COMBO_BOX_REQUEST, NAV_COMMUNITY_COMBO_BOX_SUCCESS, NAV_COMMUNITY_COMBO_BOX_FAIL, NAV_DIVISION_COMBO_BOX_REQUEST, NAV_DIVISION_COMBO_BOX_SUCCESS, NAV_DIVISION_COMBO_BOX_FAIL, NAV_PARTNER_SEARCH_BOX_REQUEST, NAV_PARTNER_SEARCH_BOX_SUCCESS, NAV_PARTNER_SEARCH_BOX_FAIL, NAV_BUILDER_SEARCH_BOX_REQUEST, NAV_BUILDER_SEARCH_BOX_SUCCESS, NAV_BUILDER_SEARCH_BOX_FAIL, NAV_PARTNER_CONTEXT, NAV_BUILDER_CONTEXT, NAV_DIVISON_CONTEXT, NAV_COMMUNITY_CONTEXT, NAV_PLAN_CONTEXT, NAV_SPEC_CONTEXT, NAV_COMMUNITY_TREE_VIEW_REQUEST, NAV_COMMUNITY_TREE_VIEW_SUCCESS, NAV_COMMUNITY_TREE_VIEW_FAIL, NAV_OPEN, NAV_FORCED, NAV_COLLAPSE, NAV_FLOAT, VIEW_CONTEXT_LOADING, TOGGLE_LIST_MODE, NAV_PLAN_TREE_VIEW_FAIL, NAV_PLAN_TREE_VIEW_SUCCESS, NAV_PLAN_TREE_VIEW_REQUEST, NAV_SPEC_TREE_VIEW_REQUEST, NAV_SPEC_TREE_VIEW_SUCCESS, NAV_SPEC_TREE_VIEW_FAIL, NAV_FULL_TREE_VIEW_REQUEST, NAV_FULL_TREE_VIEW_SUCCESS, NAV_FULL_TREE_VIEW_FAIL, NAV_FULL_CONTEXT, NAV_COMMUNITY_TREE_VIEW_FILTER, NAV_PLAN_COMBO_BOX_REQUEST, NAV_PLAN_COMBO_BOX_SUCCESS, NAV_PLAN_COMBO_BOX_FAIL, NAV_LOT_TREE_VIEW_REQUEST, NAV_LOT_TREE_VIEW_FAIL, NAV_LOT_TREE_VIEW_SUCCESS } from './types';\r\nimport { NavCommunityComboBoxQuery, NavDivisionComboBoxQuery, NavPartnerSearchBoxQuery, NavBuilderSearchBoxQuery, NavCommunityTreeViewQuery, NavPlanTreeViewQuery, NavSpecTreeViewQuery, NavFullTreeViewQuery, NavPlanComboBoxQuery, NavLotTreeViewQuery } from './api';\r\n\r\n/**\r\n * Views\r\n */\r\nexport const viewContextLoading = (contextLoading) => ({ type: VIEW_CONTEXT_LOADING, data: { contextLoading } });\r\nexport const listMode = (mode) => ({ type: TOGGLE_LIST_MODE, data: { mode } });\r\n\r\n/**\r\n * Navigation Context\r\n */\r\nexport const navPartnerContext = (partner, path) => ({ type: NAV_PARTNER_CONTEXT, data: { partner }, meta: { path } });\r\nexport const navBuilderContext = (builder, path) => ({ type: NAV_BUILDER_CONTEXT, data: { builder }, meta: { path } });\r\nexport const navDivisionContext = (division, path) => ({ type: NAV_DIVISON_CONTEXT, data: { division }, meta: { path } });\r\nexport const navCommunityContext = (community, path) => ({ type: NAV_COMMUNITY_CONTEXT, data: { community }, meta: { path } });\r\nexport const navPlanContext = (plan, path) => ({ type: NAV_PLAN_CONTEXT, data: { plan }, meta: { path } });\r\nexport const navSpecContext = (spec, path) => ({ type: NAV_SPEC_CONTEXT, data: { spec }, meta: { path } });\r\n\r\nexport const navFullContext = ({ partner, builder, division, community, plan, spec, brand }, path) => ({\r\n type: NAV_FULL_CONTEXT,\r\n data: {\r\n partner,\r\n builder,\r\n division,\r\n community,\r\n plan,\r\n spec,\r\n brand,\r\n },\r\n meta: { path },\r\n});\r\n\r\n/**\r\n * Navigation open\r\n */\r\nexport const navOpen = (opened) => ({ type: NAV_OPEN, data: { opened } });\r\nexport const navFloat = (float) => ({ type: NAV_FLOAT, data: { float } });\r\nexport const navForced = (locationForced) => ({ type: NAV_FORCED, data: { locationForced } });\r\nexport const navCollapsed = (collapsed) => ({ type: NAV_COLLAPSE, data: { collapsed } });\r\n/**\r\n * Partner Search Box\r\n */\r\n/**\r\n * Model Request Action Creator for Channel Format\r\n * @param {*} query api request\r\n * @param {*} meta schema metadata\r\n */\r\nexport const navPartnerSearchBoxRequest = (requestArguments = {}, path) => ({ type: NAV_PARTNER_SEARCH_BOX_REQUEST, query: NavPartnerSearchBoxQuery(requestArguments), meta: { schema: requestArguments.schema, path } });\r\n/**\r\n * Model success action creator for latest request format\r\n * @param {*} data data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const navPartnerSearchBoxSuccess = (entities, meta) => ({ type: NAV_PARTNER_SEARCH_BOX_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model request fail action creator to for channel format\r\n * @param {*} error cause\r\n */\r\nexport const navPartnerSearchBoxFail = (error) => ({ type: NAV_PARTNER_SEARCH_BOX_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Builder Search Box\r\n */\r\n/**\r\n * Model Request Action Creator for Channel Format\r\n * @param {*} query api request\r\n * @param {*} meta schema metadata\r\n */\r\nexport const navBuilderSearchBoxRequest = (requestArguments = {}, path) => ({ type: NAV_BUILDER_SEARCH_BOX_REQUEST, query: NavBuilderSearchBoxQuery(requestArguments), meta: { schema: requestArguments.schema, path } });\r\n/**\r\n * Model success action creator for latest request format\r\n * @param {*} data data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const navBuilderSearchBoxSuccess = (entities, meta) => ({ type: NAV_BUILDER_SEARCH_BOX_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model request fail action creator to for channel format\r\n * @param {*} error cause\r\n */\r\nexport const navBuilderSearchBoxFail = (error) => ({ type: NAV_BUILDER_SEARCH_BOX_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Division Combo Box\r\n */\r\n/**\r\n * Model Request Action Creator for Channel Format\r\n * @param {*} query api request\r\n * @param {*} meta schema metadata\r\n */\r\nexport const navDivisionComboBoxRequest = (requestArguments = {}, path) => ({ type: NAV_DIVISION_COMBO_BOX_REQUEST, query: NavDivisionComboBoxQuery(requestArguments), meta: { schema: requestArguments.schema, path } });\r\n/**\r\n * Model success action creator for latest request format\r\n * @param {*} data data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const navDivisionComboBoxSuccess = (entities, meta) => ({ type: NAV_DIVISION_COMBO_BOX_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model request fail action creator to for channel format\r\n * @param {*} error cause\r\n */\r\nexport const navDivisionComboBoxFail = (error) => ({ type: NAV_DIVISION_COMBO_BOX_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Community Combo Box\r\n */\r\nexport const communityTreeViewFilter = (filter) => ({ type: NAV_COMMUNITY_TREE_VIEW_FILTER, data: { filter } });\r\n/**\r\n * Model Request Action Creator for Channel Format\r\n * @param {*} query api request\r\n * @param {*} meta schema metadata\r\n */\r\nexport const navCommunityComboBoxRequest = (requestArguments = {}, path) => ({ type: NAV_COMMUNITY_COMBO_BOX_REQUEST, query: NavCommunityComboBoxQuery(requestArguments), meta: { schema: requestArguments.schema, path } });\r\n/**\r\n * Model success action creator for latest request format\r\n * @param {*} data data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const navCommunityComboBoxSuccess = (entities, meta) => ({ type: NAV_COMMUNITY_COMBO_BOX_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model request fail action creator to for channel format\r\n * @param {*} error cause\r\n */\r\nexport const navCommunityComboBoxFail = (error) => ({ type: NAV_COMMUNITY_COMBO_BOX_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Model Request Action Creator for Channel Format\r\n * @param {*} query api request\r\n * @param {*} meta schema metadata\r\n */\r\nexport const navPlanComboBoxRequest = (requestArguments = {}, path) => ({ type: NAV_PLAN_COMBO_BOX_REQUEST, query: NavPlanComboBoxQuery(requestArguments), meta: { schema: requestArguments.schema, path } });\r\n/**\r\n * Model success action creator for latest request format\r\n * @param {*} data data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const navPlanComboBoxSuccess = (entities, meta) => ({ type: NAV_PLAN_COMBO_BOX_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model request fail action creator to for channel format\r\n * @param {*} error cause\r\n */\r\nexport const navPlanComboBoxFail = (error) => ({ type: NAV_PLAN_COMBO_BOX_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Full Tree View\r\n */\r\n/**\r\n * Model Request Action Creator for Channel Format\r\n * @param {*} query api request\r\n * @param {*} meta schema metadata\r\n */\r\nexport const navFullTreeViewRequest = (requestArguments = {}, path) => ({ type: NAV_FULL_TREE_VIEW_REQUEST, query: NavFullTreeViewQuery(requestArguments), meta: { schema: requestArguments.schema, path } });\r\n/**\r\n * Model success action creator for latest request format\r\n * @param {*} data data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const navFullTreeViewSuccess = (entities, meta) => ({ type: NAV_FULL_TREE_VIEW_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model request fail action creator to for channel format\r\n * @param {*} error cause\r\n */\r\nexport const navFullTreeViewFail = (error) => ({ type: NAV_FULL_TREE_VIEW_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Community Tree View\r\n */\r\n/**\r\n * Model Request Action Creator for Channel Format\r\n * @param {*} query api request\r\n * @param {*} meta schema metadata\r\n */\r\nexport const navCommunityTreeViewRequest = (requestArguments = {}, path) => ({ type: NAV_COMMUNITY_TREE_VIEW_REQUEST, query: NavCommunityTreeViewQuery(requestArguments), meta: { schema: requestArguments.schema, path } });\r\n/**\r\n * Model success action creator for latest request format\r\n * @param {*} data data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const navCommunityTreeViewSuccess = (entities, meta) => ({ type: NAV_COMMUNITY_TREE_VIEW_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model request fail action creator to for channel format\r\n * @param {*} error cause\r\n */\r\nexport const navCommunityTreeViewFail = (error) => ({ type: NAV_COMMUNITY_TREE_VIEW_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Model Request Action Creator for Channel Format\r\n * @param {*} query api request\r\n * @param {*} meta schema metadata\r\n */\r\nexport const navPlanTreeViewRequest = (requestArguments = {}, path) => ({ type: NAV_PLAN_TREE_VIEW_REQUEST, query: NavPlanTreeViewQuery(requestArguments), meta: { schema: requestArguments.schema, path } });\r\n/**\r\n * Model success action creator for latest request format\r\n * @param {*} data data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const navPlanTreeViewSuccess = (entities, meta) => ({ type: NAV_PLAN_TREE_VIEW_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model request fail action creator to for channel format\r\n * @param {*} error cause\r\n */\r\nexport const navPlanTreeViewFail = (error) => ({ type: NAV_PLAN_TREE_VIEW_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Model Request Action Creator for Channel Format\r\n * @param {*} query api request\r\n * @param {*} meta schema metadata\r\n */\r\nexport const navSpecTreeViewRequest = (requestArguments = {}, plan) => ({ type: NAV_SPEC_TREE_VIEW_REQUEST, query: NavSpecTreeViewQuery(requestArguments), meta: { schema: requestArguments.schema, plan } });\r\n/**\r\n * Model success action creator for latest request format\r\n * @param {*} data data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const navSpecTreeViewSuccess = (entities, meta) => ({ type: NAV_SPEC_TREE_VIEW_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model request fail action creator to for channel format\r\n * @param {*} error cause\r\n */\r\nexport const navSpecTreeViewFail = (error) => ({ type: NAV_SPEC_TREE_VIEW_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Model Request Action Creator for Channel Format\r\n * @param {*} query api request\r\n * @param {*} meta schema metadata\r\n */\r\nexport const navLotTreeViewRequest = (requestArguments = {}, path) => ({ type: NAV_LOT_TREE_VIEW_REQUEST, query: NavLotTreeViewQuery(requestArguments), meta: { schema: requestArguments.schema, path } });\r\n\r\n/**\r\n * Model success action creator for latest request format\r\n * @param {*} data data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const navLotTreeViewSuccess = (entities, meta) => ({ type: NAV_LOT_TREE_VIEW_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model request fail action creator to for channel format\r\n * @param {*} error cause\r\n */\r\nexport const navLotTreeViewFail = (error) => ({ type: NAV_LOT_TREE_VIEW_FAIL, error: true, data: error });\r\n","import { debounce } from '@/lodash/debounce';\r\n\r\nlet afterActions = [];\r\n\r\n/**\r\n * Actione Effect Redux Middleware\r\n *\r\n * @param {Object} store Application Store\r\n */\r\nexport const actionEffectMiddleware = (store) => (next) => (action) => {\r\n const result = next(action);\r\n const afterActionToRun = afterActions.filter((afterAction) => {\r\n try {\r\n return afterAction.trigger(action, store.getState());\r\n } catch {\r\n return false;\r\n }\r\n });\r\n afterActionToRun.forEach((afterAction) => afterAction.handler(store, afterAction.unsubscribe));\r\n return result;\r\n};\r\n\r\n/**\r\n * Action effect\r\n *\r\n * @param {String | Function} trigger String having the name of the action that should trigger the action effect handler, you can use a function too this function will receive the action as first paramenter to evaluate in a more custom way if the action effect handler should be executed or not\r\n * @param {Function} handler Action Effect handler this will be executed as soon as all the reducers has been executed\r\n * @param {Number} time Debounce time for the action effect, this is useful if the handler is executed a lot of times in a row\r\n * @returns {Function} Execute the returned function to unsubscribe the action effect\r\n */\r\nexport const useActionEffect = (trigger, handler, time = 0) => {\r\n if (!(trigger instanceof Function)) {\r\n const _trigger = trigger;\r\n trigger = ({ type }) => type === _trigger;\r\n }\r\n const afterAction = { trigger, handler: debounce(handler, time) };\r\n afterActions = [...afterActions, afterAction];\r\n afterAction.unsubscribe = () => {\r\n afterActions = afterActions.filter((_afterAction) => _afterAction !== afterAction);\r\n };\r\n return afterAction.unsubscribe;\r\n};\r\n","import { getRouter } from '@/utils/routing/router-helpers';\r\n\r\nexport const pageLocationSelector = (state, path) => {\r\n const { location } = getRouter();\r\n const route = location.route || {};\r\n path = path || route.name || route.title || location.pathname;\r\n return state && state.app && state.app.pageLocation[path];\r\n};\r\nexport const getParam = (state, param, path) => {\r\n const { location } = getRouter();\r\n const route = location.route || {};\r\n path = path || route.name || route.title || location.pathname;\r\n return state && state.app && state.app.pageLocation[path] && state.app.pageLocation[path][param];\r\n};\r\n","import { Ability } from '@casl/ability';\r\nimport { getUserPermissions } from '../../modules/auth/@redux/selectors';\r\nimport { store } from '../../app.store';\r\n\r\nconst caslPermissions = () => new Ability(getUserPermissions(store.getState()));\r\n// Export the abilities collection for authorization using CASL library\r\nexport const ability = () => caslPermissions();\r\n\r\n// BDXLive Permission Types\r\nexport const PermissionType = {\r\n READ: 'read',\r\n WRITE: 'write',\r\n LOCK: 'lock',\r\n NOTHING: 'nothing',\r\n};\r\n\r\n// BDXLive Official Permissions, Any new permission should be added Here\r\nexport const BDXLivePermission = {\r\n USERADDBDXINTERNALUSERS: 'AddBDXInternalUsers',\r\n USERADDBDXEXTERNALUSERS: 'AddBDXExternalUsers',\r\n USERADDUSERSSAMEORLOWERPERMISSIONS: 'AddUsersWithSameOrLowerPermissionss',\r\n LEFTMENU: 'LeftMenu',\r\n MENUPARTNERDROPDOWN: 'PartnerDropdown',\r\n MENUCORPORATIONDROPDOWM: 'CorporationDropdown',\r\n MENUALLOTHERELEMENTS: 'AllOtherElementsOnTheMenu',\r\n COMMUNITIES: 'Communities',\r\n COMMADDNEWCOMMUNITIES: 'AddNewCommunities',\r\n COMMUPDATENUMBER: 'UpdateCommunityNumber',\r\n COMMACTIVEINACTIVEARCHIVECOMMUNTIES: 'ActiveInactiveArchiveCommunity',\r\n COMMSALESCONTACTS: 'SalesContactsCommunity',\r\n COMMSCHOOLSTAB: 'SchoolsTabCommunity',\r\n COMMMAINTABGEOCODES: 'MainTabGeoCodesCommunity',\r\n COMMMAINTABDISPLAYON: 'MainTabDisplayOnCommunity',\r\n COMMIMAGESTAB: 'ImagesTabCommunity',\r\n COMMALLOTHERFIELDSCOMMUNITYDETAILSPAGE: 'AllOtherFieldsOnCommunityDetailsPage',\r\n COMMMAINDETAILSTAB: 'MainDetailsTabCommunity',\r\n COMMVIDEOTAB: 'VideoTabCommunity',\r\n COMMINTERACTIVEMEDIATAB: 'InteractiveMediaTabCommunity',\r\n COMMAMENITIESUTILITIESTAB: 'AmenitiesUtilitiesTabCommunity',\r\n COMMMARKETINGTAB: 'MarketingTabCommunity',\r\n COMMPROMOTIONSLIBRARY: 'PromotionsLibraryCommunity',\r\n COMMEVENTSLIBRARY: 'EventsLibraryCommunity',\r\n COMMGREENPROGRAMS: 'GreenProgramsCommunity',\r\n COMMDIVISIONTESTIMONIALS: 'DivisionTestimonialsCommunity',\r\n COMMMANAGEHOMESTAB: 'ManageHomesTabCommunity',\r\n COMMLEFTSUBMENU: 'LeftSubMenuCommunity',\r\n COMMSUMMARYSECTIONATTHETOP: 'SummarySectionAtTheTopCommunity',\r\n COMMCHANGEHISTORY: 'ChangeHistoryCommunity',\r\n COMMLANDINGPAGE: 'LandingPageCommunity',\r\n COMMREPROVISIONCALLTRACKINGNUMBER: 'ReprovisionCallTrackingNumberCommunity',\r\n PLANS: 'Plans',\r\n PLLIBRARYPLANS: 'LibraryPlans',\r\n PLCOMMUNITYPLANS: 'CommunityPlans',\r\n PLADDNEWPLANS: 'AddNewPlans',\r\n PLANUPDATENUMBER: 'UpdatePlanNumber',\r\n PLACTIVEINACTIVEARCHIVESTATUS: 'ActiveInactiveArchivePlan',\r\n PLPRICE: 'PricePlan',\r\n PLIMAGES: 'ImagesPlan',\r\n PLALLOTHERFIELDS: 'AllOtherFieldsOnCommunityPlanPage',\r\n PLMAINDETAILSTAB: 'MainDetailsTabPlan',\r\n PLVIDEOSTAB: 'VideosTabPlan',\r\n PLINTERACTIVEMEDIATAB: 'InteractiveMediaTabPlan',\r\n PLPLANOPTIONSTAB: 'PlanOptionsTabPlan',\r\n PLLEFTSUBMENU: 'LeftSubMenuPlan',\r\n PLSUMMARYSECTION: 'SummarySectionPlan',\r\n PLCHANGEHISTORYTAB: 'ChangeHistoryTabPlan',\r\n SPECS: 'Specs',\r\n SPADDNEWSPECS: 'AddNewSpecs',\r\n SPUPDATENUMBER: 'UpdateSpecNumber',\r\n SPACTIVEINACTIVEARCHIVE: 'ActiveInactiveArchiveSpec',\r\n SPPRICE: 'PriceSpec',\r\n SPIMAGESTAB: 'ImagesTabSpec',\r\n SPALLOTHERFIELDS: 'AllOtherSpecFields',\r\n SPVIDEOSTAB: 'VideosTabSpec',\r\n SPINTERACTIVEMEDIATAB: 'InteractiveMediaTabSpec',\r\n SPMAINDETAILS: 'MainDetailsSpec',\r\n SPLEFTSUBMENU: 'LeftSubMenuSpec',\r\n SPSUMMARYSECTION: 'SummarySectionSpec',\r\n SPCHANGEHISTORYTAB: 'ChangeHistoryTabSpec',\r\n SPLANDINGPAGE: 'LandingPageSpec',\r\n ADMINLISTINGS: 'AdminListing',\r\n ALBUILDERSHOWCASE: 'BuilderShowcase',\r\n ALAGENTPOLICIES: 'AgentPolicies',\r\n ALDATAFEEDOVERRIDES: 'DatafeedOverrides',\r\n ALAGENTCOOPCONFIRMATIONREPORT: 'AgentCoOpConfirmationReport',\r\n ALCORPORATELEADRECIPIENTS: 'CorporateLeadRecipients',\r\n ALIMAGEERRORREPORT: 'ImageErrorReport',\r\n ALVIDEOERRORREPORT: 'VideoErrorReport',\r\n ALLDATAGRID: 'Datagrid',\r\n BDXSERVICES: 'BDxServices',\r\n BSEFLYERS: 'eFlyers',\r\n BSBUILDERREVIEWSPORTAL: 'BuilderReviewsPortal',\r\n BSCONSUMEROPTIXAUGMENTEDLEADCONTRACTSIGNEE: 'ConsumerOptixAugmentedLeadContractSignee',\r\n BSSHOPPERPROFILECONSUMEROPTIXAUGMENTEDLEADDATA: 'ShopperProfileConsumerOptixAugmentedLeadData',\r\n BSUPLOADSOLDDATA: 'SoldDataUpload',\r\n BSGRAPHICSSIGNINTOBASECAMP: 'GraphicsSignIntoBasecamp',\r\n REPORTING: 'Reporting',\r\n REPEXECUTIVEDASHBOARD: 'ExecutiveDashboard',\r\n REPBDXLISTINGSDASHBOARD: 'BDXListingsDashboard',\r\n REPADVERTISINGDASHBOARD: 'AdvertisingDashboard',\r\n REPBDXCALLTRACKINGDASHBOARD: 'BDXCallTrackingDashboard',\r\n REPLISTINGSPERFORMANCEDETAILS: 'ListingsPerformanceDetails',\r\n REPDIGITALDASHBOARD: 'DigitalDashboard',\r\n REPBDXLEADCONTACTDETAILS: 'BDXLeadContactDetails',\r\n REPBDXLEADPERFORMANCE: 'BDXLeadPerformance',\r\n REPCALLTRACKINGDETAILS: 'CallTrackingDetails',\r\n REPMPCLISTINGPERFORMANCE: 'MPCListingPerformance',\r\n REPMPCLEADPERFORMANCE: 'MPCLeadPerformancee',\r\n REPMPCLEADCONTACTDETAILS: 'MPCLeadContactDetails',\r\n REPCOMMUNITYDATACOMPLETENESS: 'CommunityDataCompleteness',\r\n REPPLANSPECDATACOMPLETENESS: 'PlanSpecDataCompletenes',\r\n REPCOMMUNITYSCOREGUIDE: 'CommunityScoreGuide',\r\n REPPLANSPECSCOREGUIDE: 'PlanSpecScoreGuid',\r\n SETUP: 'Setup',\r\n CORPORATESETUP: 'CorporateSetup',\r\n MANAGEDIVISIONS: 'ManageDivisions',\r\n BILLINGINVOICES: 'Billing&Invoices',\r\n DATALOCKMARKETINGHEADLINE: 'MarketingHeadline',\r\n 'DATALOCKADDRESS&GEOCOORDINATES': 'Address&GeoCoordinates',\r\n DATALOCKIMAGES: 'Images',\r\n DATALOCKVIDEOS: 'Videos',\r\n DATALOCKSCHOOLS: 'Schools',\r\n 'DATALOCKINTERACTIVEMEDIATOURS&RICHMEDIA': 'InteractiveMediaTours&RichMedia',\r\n 'DATALOCKAMENITIES&UTILITIES': 'Amenities&Utilities',\r\n DATALOCKPROMOTIONS: 'Promotions',\r\n DATALOCKEVENTS: 'Events',\r\n DATALOCKTESTIMONIALS: 'Testimonials',\r\n DATALOCKBROCHURES: 'Brochures',\r\n DATALOCKHOTHOMES: 'HotHomes',\r\n DATALOCKGUIDEDTOURS: 'GuidedTours',\r\n DATALOCKSCHEDULER: 'Scheduler',\r\n DATALOCKENVISION: 'EnvisionUrl',\r\n TRUSTBUILDERMODAL: 'TrustBuilderModal',\r\n MPCS: 'MPCs',\r\n MPCVIEWPARTBANNER: 'MPCViewPartMPCBanner',\r\n MPCLANDINGPAGE: 'MPCLandingPage',\r\n MPCDETAILSCHANGEHISTORY: 'MPCDetailsChangeHistory',\r\n MPCDETAILSSUMMARYSECTIONTOP: 'MPCDetailsSummarySectionTop',\r\n MPCDETAILSLEFTSUBMENU: 'MPCDetailsLeftSubMenu',\r\n MPCLINKEDCOMMUNITIESTAB: 'MPCDetailsLinkedCommunitiesTab',\r\n MPCMARKETINGTAB: 'MPCMarketingTab',\r\n MPCAMENITIESUTILITIESTAB: 'MPCAmenitiesUtilitiesTab',\r\n MPCINTERACTIVEMEDIATAB: 'MPCInteractiveMediaTab',\r\n MPCVIDEOSTAB: 'MPCVideosTab',\r\n MPCALLOTHERFIELDSDETAILSPAGE: 'MPCAllOtherfieldsDetailsPage',\r\n MPCDETAILSIMAGESTAB: 'MPCDetailsImagesTab',\r\n MPCMAINDETAILSTAB: 'MPCMainDetailsTab',\r\n MPCDETAILSMAINTABREPROVISIONCALLTRACKINGNUMBER: 'MPCDetailsMainTabReprovisionCallTrackingNumber',\r\n MPCDETAILSMAINTABGEOCODES: 'MPCDetailsMainTabGeoCodes',\r\n MPCDETAILSMAINTABDISPLAYONS: 'MPCDetailsMainTabDisplayOns',\r\n MPCDETAILSSCHOOLSTAB: 'MPCDetailsSchoolsTab',\r\n MPCDETAILSSALESCONTACTS: 'MPCDetailsSalesContacts',\r\n MPCUPDATENUMBER: 'MPCUpdateNumber',\r\n MPCACTIVEINACTIVEARCHIVE: 'MPCsActiveInactiveArchive',\r\n MPCADDNEW: 'MPCAddNew',\r\n ADVANCEDSETTINGSTAB: 'AdvancedSettingsTab',\r\n LOTS: 'Lots',\r\n LOTSADDNEW: 'LotsAddNew',\r\n LOTSMAINDETAILS: 'LotsMainDetails',\r\n LOTSUPDATENUMBER: 'LotsUpdateLotNumber',\r\n LOTSPRICE: 'LotsPrice',\r\n LOTSSTATUS: 'LotsActiveInactiveArchive',\r\n LOADERDATA: 'LoaderData',\r\n ACCESSLOADERDATAREPORT: 'AccessLoaderDataReport',\r\n PLDELETEBUTTON: 'PLDeletePlan',\r\n COMMARCHIVEDSTATUS: 'CommArchiveStatus',\r\n MLSNAMEPAGE: 'MlsNamePage',\r\n PREVIEWLINK: 'ReviewLink',\r\n PRICEOVERRIDE: 'DatafeedPriceOverride',\r\n LISTHUBCONFIGURATOR: 'ListHubConfiguration',\r\n RECOMMENDEDLEADS: 'RecommendedLeads',\r\n CORPSPOTLIGHTMENU: 'CorpSpotlightMenu',\r\n SPOTLIGHT: 'Spotlight',\r\n SPOTLIGHTCALENDAR: 'SpotlightCalendar',\r\n SPOTLIGHTORDERS: 'SpotlightOrders',\r\n SPOTLIGHTDELETESPOTS: 'SpotlightDeleteSpots',\r\n SPOTLIGHTACCESSNEWPERIOD: 'SpotlightAccessNewPeriod',\r\n};\r\n","/* eslint-disable babel/camelcase */\r\nexport const recordPageView = (path, title) => {\r\n if (window.gtag instanceof Function) {\r\n window.gtag('config', 'UA-40843711-12', {\r\n page_title: title,\r\n page_path: path,\r\n });\r\n }\r\n};\r\n","import { Router } from '@vaadin/router';\r\nimport { getParameters } from '@/redux/routes/selectors';\r\nimport { setParams } from '@/redux/page-location/actions';\r\nimport { store } from '@/app/app.store';\r\nimport { PARTNER, BUILDER, DIVISION, COMMUNITY, PLAN, SPEC } from '@/app/constants/params';\r\nimport { navPartnerContext, navBuilderContext, navDivisionContext, navCommunityContext, navPlanContext, navSpecContext } from '@/modules/global/@redux/actions';\r\nimport { navPlanContextSelector, navSpecIdContextSelector, navBuilderContextSelector, navPartnerContextSelector, navDivisionContextSelector, navCommunityContextSelector } from '@/modules/global/@redux/selectors';\r\nimport { userContextPartnerSelector, userContextBuilderSelector, userContextDivisionSelector, userContextCommunitiesSelector, isCorpLevel } from '@/modules/auth/@redux/selectors';\r\nimport { useActionEffect } from '@/redux/actionEffect';\r\nimport { CHANGE_LOCATION } from '@/redux/routes/types';\r\nimport { SET_PARAM, SET_PARAMS } from '@/redux/page-location/types';\r\nimport { NAV_PARTNER_CONTEXT, NAV_BUILDER_CONTEXT, NAV_DIVISON_CONTEXT, NAV_COMMUNITY_CONTEXT, NAV_PLAN_CONTEXT, NAV_SPEC_CONTEXT } from '@/modules/global/@redux/types';\r\nimport { pageLocationSelector } from '@/redux/page-location/selectors';\r\nimport { ability, BDXLivePermission, PermissionType } from '../security/authorization';\r\nimport { empty } from '../bdx-lodash-lite';\r\nimport { changeLocation } from '../../@redux/routes/actions';\r\nimport { createQueryParam } from './queryParams';\r\nimport { recordPageView } from '../analytics/pageView';\r\n/**\r\n * @type {import('@vaadin/router').Router}\r\n */\r\nlet router;\r\n\r\n/**\r\n * Initializes the router outlet taking as param a DOM node\r\n * @param {Node} outlet\r\n */\r\nexport function init(outlet) {\r\n router = new Router(outlet);\r\n\r\n if (import.meta.env.DEV) {\r\n window.router = router;\r\n }\r\n}\r\n\r\nexport function findRouteByPath(path) {\r\n const routes = getRoutes();\r\n return exploreRoutes(routes, 'path', path);\r\n}\r\n\r\nexport function exploreRoutes(routes, key, value) {\r\n let found;\r\n routes.some((route) => {\r\n if (!empty(route[key]) && route[key] === value) {\r\n found = route;\r\n return true;\r\n }\r\n if (!empty(route.children)) {\r\n const exploreChildren = exploreRoutes(route.children, key, value);\r\n if (!empty(exploreChildren)) {\r\n found = exploreChildren;\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n return found;\r\n}\r\n\r\n/**\r\n * Exposed method to include routes from any sector of the application\r\n * @param {Object[]} routes\r\n */\r\nexport function addRoutes(routes) {\r\n router.setRoutes(routes);\r\n\r\n // const sync = once(syncLocation);\r\n router.ready.then(syncLocation);\r\n}\r\n/**\r\n * Exposed method that allows getting all the registered routes\r\n */\r\nexport function getRoutes() {\r\n return router.getRoutes();\r\n}\r\n\r\n/**\r\n * Expose the original vaadin router instance\r\n * @returns {Router}\r\n */\r\nexport function getRouter() {\r\n return router;\r\n}\r\n\r\n/**\r\n * Method that allows triggerin the popstate event on window, to force the vaadin re-render\r\n */\r\nexport function popState() {\r\n window.dispatchEvent(new PopStateEvent('popstate'));\r\n}\r\n\r\n/**\r\n * Dispatch a change in the Current Route\r\n * @param {Object} storep Redux Store\r\n * @param {Object} Object with info for the Route (with the form of the document.location, with these parts: pathname, search and hash)\r\n */\r\nfunction dispatchChange(storep, { pathname, search, hash }) {\r\n // const location = convertFriendlyRoute(pathname, search, hash);\r\n // storep.dispatch(changeLocation(location));\r\n\r\n storep.dispatch(changeLocation({ pathname, search, hash }));\r\n}\r\n\r\n/**\r\n * If the url is in the friendly url form, convert it to a location object\r\n * @param {String} pathName part name part from an url (path name from the document.location)\r\n * @param {String} search query strings part from an url\r\n * @param {String} hash hash part if any from an url\r\n */\r\n// eslint-disable-next-line no-unused-vars\r\nfunction convertFriendlyRoute(pathName, search, hash) {\r\n if (isAFriendlyUrl(pathName)) {\r\n const friendlyParameters = fromUrlToObject(pathName);\r\n search = convertObjectToQueryStrings(friendlyParameters) + search;\r\n }\r\n\r\n return { pathname: getPageNameFromFriendlyUrl(pathName), search, hash };\r\n}\r\n\r\n/**\r\n * Converts an Object properties to a query string form\r\n * @param {Object} object to be converted to query strings (based in the object properties)\r\n */\r\nexport function convertObjectToQueryStrings(object) {\r\n return Object.keys(object)\r\n .map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\r\n .join('&');\r\n}\r\n/**\r\n * Convert a friendly Url to a object with the parameters '\r\n * Example: '/community-detail/community-123123/readonly-1' => { community : \"123123\", readonly : \"1\"}\r\n * @param {String} pathName part name part from an url (path name from the document.location)\r\n */\r\nfunction fromUrlToObject(pathName) {\r\n pathName = pathName[0] !== '/' ? `/${pathName}` : pathName; // in case the path name doesnt come in the form '/page'\r\n // from the pathName part exclude the first segment bc it is the page name and return the rest as an object only if they are in the form \"key-value\"\r\n return Object.assign(\r\n {},\r\n ...pathName\r\n .split('/')\r\n .filter((item) => item !== '' && item.includes('-'))\r\n .map((item) => ({ [item.split('-')[0]]: item.split('-')[1] }))\r\n );\r\n}\r\n\r\n/**\r\n * Check if the url has almost one parameter with form key-value (first segment is excluded, it is the page name)\r\n * @param {string} url path name part from the url\r\n */\r\n\r\nfunction isAFriendlyUrl(url) {\r\n if (!url || url === '/') return false;\r\n const params = fromUrlToObject(url);\r\n return Object.keys(params).some((key) => params[key]); // if the url have at least one parameter with a value\r\n}\r\n\r\n/**\r\n * Returns the page name's section from the path name part for a Url\r\n * (url without domain (path name property from the document.location)\r\n * @param {pathName} path name part from the url (pathname property from document.location)\r\n * */\r\nexport function getPageNameFromFriendlyUrl(pathName) {\r\n pathName = pathName[0] !== '/' ? `/${pathName}` : pathName;\r\n const page = pathName\r\n .split('/')\r\n .filter((segment) => !segment.includes('-') && !segment.includes('='))\r\n .join('/');\r\n return page; // return the pase name section\r\n}\r\n\r\n/**\r\n * Start History Listener\r\n * @param {import('history').History} history\r\n * @param {*} store\r\n */\r\nexport function startRouterListener(history, storep) {\r\n useActionEffect(\r\n ({ type }) => [CHANGE_LOCATION].includes(type),\r\n () => {\r\n getRouter().ready.then(() => {\r\n syncLocation();\r\n });\r\n }\r\n );\r\n\r\n useActionEffect(\r\n ({ type }) => [SET_PARAM, SET_PARAMS, NAV_PARTNER_CONTEXT, NAV_BUILDER_CONTEXT, NAV_DIVISON_CONTEXT, NAV_COMMUNITY_CONTEXT, NAV_PLAN_CONTEXT, NAV_SPEC_CONTEXT].includes(type),\r\n (_store) => {\r\n const { location: { route: { params = {} } = {} } = {} } = getRouter() || {};\r\n const pageLocation = pageLocationSelector(_store.getState());\r\n\r\n Object.entries(params).forEach(([name, { type, visible = true }]) => {\r\n const param = createQueryParam(name);\r\n const parsedValue = [Object, Array].includes(type) && pageLocation[name] !== null ? JSON.stringify(pageLocation[name]) : String(pageLocation[name]);\r\n if (visible && !empty(pageLocation[name]) && !empty(parsedValue) && ![String(null), String(undefined)].includes(parsedValue)) {\r\n param.set(parsedValue);\r\n } else {\r\n param.remove();\r\n }\r\n });\r\n }\r\n );\r\n\r\n dispatchChange(storep, history.location);\r\n /**\r\n * Place at initial page load\r\n * We await for the animation frame so the route change is queued\r\n */\r\n requestAnimationFrame(() => {\r\n /**\r\n * Then we wait for the router to complete it's logical transition\r\n */\r\n router.ready.then(() => {\r\n recordPageView(window?.location?.pathname, document.title);\r\n });\r\n });\r\n\r\n history.listen((location) => {\r\n if (location.key) {\r\n dispatchChange(storep, location);\r\n /**\r\n * Place a new page load\r\n * We await for the animation frame so the route change is queued\r\n */\r\n requestAnimationFrame(() => {\r\n /**\r\n * Then we wait for the router to complete it's logical transition\r\n */\r\n router.ready.then(() => {\r\n recordPageView(location?.pathname, document.title);\r\n });\r\n });\r\n }\r\n });\r\n}\r\n\r\nexport const getParentRoutes = (route) => {\r\n const routes = [route];\r\n let currentRoute = route.parent;\r\n while (!empty(currentRoute && currentRoute.parent)) {\r\n routes.push(currentRoute);\r\n currentRoute = currentRoute.parent;\r\n }\r\n return routes;\r\n};\r\n\r\nexport const getFullPath = (route) => {\r\n return getParentRoutes(route).reduceRight((path, next) => {\r\n path += next ? next.path || '' : '';\r\n return path;\r\n }, '');\r\n};\r\n\r\n/** Gets the current page url without the id and the page section,\r\n * example: /listings/details/spec/2166517/main will return /listings/details/spec */\r\nexport const getSitePage = () => {\r\n // exclude # and Page Tab sections from the url\r\n return document.location.pathname.split('/').slice(0, -2).join('/');\r\n};\r\n\r\nexport const syncLocation = () => {\r\n const state = store.getState();\r\n const { location: { route } = {} } = router || {};\r\n const routeParams = route.params || {};\r\n if (!route || empty(routeParams)) return;\r\n\r\n const parse = (val) => {\r\n if (val === 'true') return true;\r\n if (val === 'false') return false;\r\n try {\r\n return JSON.parse(val);\r\n } catch {\r\n return null;\r\n }\r\n };\r\n\r\n const params = getParameters(state) || {};\r\n const parsedParams =\r\n Object.fromEntries(\r\n Object.entries(routeParams).map(([paramName, settings]) => {\r\n if ([Object, Array, Boolean].includes(routeParams[paramName].type)) {\r\n return [paramName, parse(params[paramName]) || settings.default];\r\n }\r\n return [paramName, params[paramName] === undefined ? settings.default : routeParams[paramName].type(params[paramName])];\r\n })\r\n ) || {};\r\n\r\n const auth = ability();\r\n\r\n const navigationPartner = navPartnerContextSelector(state) || {};\r\n if (empty(navigationPartner) || !navigationPartner.partnerId) {\r\n const userPartner = userContextPartnerSelector(state) || {};\r\n const can = auth.can(PermissionType.READ, BDXLivePermission.MENUPARTNERDROPDOWN);\r\n\r\n if (!can) {\r\n parsedParams[PARTNER] = undefined;\r\n }\r\n if (parsedParams[PARTNER]) {\r\n store.dispatch(navPartnerContext(parsedParams[PARTNER]));\r\n } else if (navigationPartner || userPartner) {\r\n parsedParams[PARTNER] = navigationPartner?.partnerId || userPartner?.partnerId;\r\n }\r\n }\r\n\r\n if (routeParams[BUILDER]) {\r\n const userBuilder = userContextBuilderSelector(state) || {};\r\n const navigationBuilder = navBuilderContextSelector(state) || {};\r\n const can = auth.can(PermissionType.READ, BDXLivePermission.MENUCORPORATIONDROPDOWM);\r\n\r\n if (!can) {\r\n parsedParams[BUILDER] = undefined;\r\n }\r\n if (parsedParams[BUILDER]) {\r\n store.dispatch(navBuilderContext(parsedParams[BUILDER]));\r\n } else if (navigationBuilder || userBuilder) {\r\n parsedParams[BUILDER] = navigationBuilder?.builderId || userBuilder?.builderId;\r\n }\r\n }\r\n\r\n if (routeParams[DIVISION]) {\r\n const isUserCorpLevel = isCorpLevel(state);\r\n let userDivisions = [];\r\n\r\n if (!isUserCorpLevel) {\r\n userDivisions = userContextDivisionSelector(state);\r\n }\r\n\r\n const navigationDivision = navDivisionContextSelector(state) || (userDivisions.length === 1 && userDivisions[0]) || {};\r\n const can = auth.can(PermissionType.READ, BDXLivePermission.MENUALLOTHERELEMENTS);\r\n\r\n if (!can) {\r\n parsedParams[DIVISION] = undefined;\r\n }\r\n if (parsedParams[DIVISION]) {\r\n store.dispatch(navDivisionContext(parsedParams[DIVISION]));\r\n } else if (navigationDivision) {\r\n parsedParams[DIVISION] = navigationDivision?.builderId;\r\n }\r\n }\r\n\r\n if (routeParams[COMMUNITY]) {\r\n const userCommunity = (userContextCommunitiesSelector(state) || [])[0] || {};\r\n const navigationCommunity = navCommunityContextSelector(state) || {};\r\n const can = auth.can(PermissionType.READ, BDXLivePermission.COMMUNITIES);\r\n\r\n if (!can) {\r\n parsedParams[COMMUNITY] = undefined;\r\n }\r\n\r\n if (parsedParams[COMMUNITY]) {\r\n store.dispatch(navCommunityContext(parsedParams[COMMUNITY]));\r\n } else if (navigationCommunity || userCommunity) {\r\n parsedParams[COMMUNITY] = navigationCommunity?.id || userCommunity?.communityId;\r\n }\r\n }\r\n\r\n if (routeParams[PLAN]) {\r\n const navigationPlan = navPlanContextSelector(state) || {};\r\n parsedParams[PLAN] = parsedParams[PLAN] || navigationPlan.id;\r\n if (parsedParams[PLAN]) {\r\n store.dispatch(navPlanContext(parsedParams[PLAN]));\r\n }\r\n }\r\n\r\n if (routeParams[SPEC]) {\r\n parsedParams[SPEC] = parsedParams[SPEC] || navSpecIdContextSelector(state);\r\n if (parsedParams[PLAN]) {\r\n store.dispatch(navSpecContext(parsedParams[SPEC]));\r\n }\r\n }\r\n\r\n store.dispatch(setParams(parsedParams));\r\n};\r\n","import { normalize } from 'normalizr';\r\nimport { empty, mapObject } from '@/lodash/';\r\n\r\n/**\r\n * Normalizr Middleware\r\n * This is incharged to capture action that have data and meta.schema on them to then normalize them\r\n */\r\nexport const normalizrMiddleware =\r\n () =>\r\n () =>\r\n (next) =>\r\n (action = {}) => {\r\n const { data: { entities } = {}, meta: { schema } = {} } = action;\r\n\r\n if (schema && entities) {\r\n const normalizedData = normalize(entities, schema);\r\n action = {\r\n ...action,\r\n data: {\r\n ...action.data,\r\n ...normalizedData,\r\n },\r\n meta: { ...action.meta, normalized: true },\r\n };\r\n }\r\n\r\n return next(action);\r\n };\r\n\r\nexport const flagsMiddleware =\r\n () =>\r\n () =>\r\n (next) =>\r\n (action = {}) => {\r\n const { data: { entities } = {}, meta: { $flags } = {} } = action;\r\n\r\n if (!empty($flags) && !empty(entities)) {\r\n const values = mapObject(entities, (model) => mapObject(model, (entity) => Object.assign(entity, { $flags: { ...entity.$flags, ...$flags } })));\r\n if (!empty(values)) {\r\n action.data.entities = values;\r\n }\r\n }\r\n return next(action);\r\n };\r\n","import { logError } from '../utils/error-handling/logging';\r\n\r\nconst actions = [];\r\n/**\r\n * Error Tracking Middleware\r\n * This is incharged to capture error actions and log them to the Js Tracking third party site.\r\n */\r\nexport const errorLoggingMiddleware =\r\n () =>\r\n () =>\r\n (next) =>\r\n (action = {}) => {\r\n const { type, data: error } = action;\r\n const matches = /(.*)_(fail)/.exec(type);\r\n\r\n const actionsList = actionList(action);\r\n\r\n // Track errors\r\n if (matches && error) {\r\n logError(error, actionsList);\r\n }\r\n return next(action);\r\n };\r\n\r\n/**\r\n * Control the storage in the list of only the last 10 actions.\r\n * @param {*} action\r\n */\r\nexport function actionList(action) {\r\n const actionObject = { type: action.type, data: action.data };\r\n if (actions.length === 10) {\r\n actions.shift();\r\n }\r\n actions.push(actionObject);\r\n return actions;\r\n}\r\n","import { popState } from '../../utils/routing/router-helpers';\r\nimport { store } from '../../app.store';\r\nimport { PUSH_STATE, REPLACE_STATE, GO, GO_BACK, GO_FORWARD } from './types';\r\nimport { saveLastLocation } from './actions';\r\n\r\nimport { globalEditStateSelector } from '../forms/selectors';\r\nimport { getCurrentLocation } from './selectors';\r\nimport { deepCompare } from '../../utils/bdx-lodash-lite';\r\n\r\nexport const routerMiddleware =\r\n (history) =>\r\n ({ getState }) =>\r\n (next) =>\r\n (action) => {\r\n const { type, data: { href, force, ctrl } = {} } = action;\r\n const __unsaved = globalEditStateSelector(getState());\r\n const currentLocation = getCurrentLocation(getState());\r\n\r\n switch (type) {\r\n case PUSH_STATE:\r\n if ((!deepCompare(currentLocation, href) || force) && !ctrl) {\r\n store.dispatch(saveLastLocation(window.location, href));\r\n if (__unsaved) history.replace(href);\r\n else history.push(href);\r\n popState();\r\n } else if (ctrl) {\r\n window.open(href, '_blank');\r\n }\r\n break;\r\n case REPLACE_STATE:\r\n history.replace(href);\r\n popState();\r\n break;\r\n case GO:\r\n history.go(href);\r\n break;\r\n case GO_BACK:\r\n history.goBack();\r\n break;\r\n case GO_FORWARD:\r\n history.goForward();\r\n break;\r\n }\r\n return next(action);\r\n };\r\n","/* eslint-disable no-case-declarations */\r\nimport produce from 'immer';\r\nimport { deepCompare } from '@/utils/bdx-lodash-lite';\r\nimport { CHANGE_LOCATION, NEXT_LOCATION, LAST_LOCATION } from './types';\r\n\r\nconst initialState = {\r\n lastLocation: { pathname: '/' },\r\n route: {\r\n pathname: '/',\r\n search: '',\r\n queries: {},\r\n hash: '',\r\n },\r\n};\r\n\r\nexport const routerReducer = (state = initialState, { type, data = {} }) =>\r\n produce(state, (draft) => {\r\n const initialPath = { pathname: '/' };\r\n switch (type) {\r\n case CHANGE_LOCATION:\r\n draft.route = data || draft.lastLocation;\r\n draft.nextLocation = null; // reset next location when route chante (this is temporal for left side menu)\r\n break;\r\n case LAST_LOCATION:\r\n draft.lastLocation = data.last || initialPath;\r\n\r\n if (!draft.lastUniqueLocation) draft.lastUniqueLocation = initialPath;\r\n\r\n // Keep track of the last unique page (this mean that if the user navigate between detail tabs, the lastUniqueLocation will be the location before come to the detail page)\r\n // this is helpfull to return to the original path when edinting an entity\r\n const currentUrlparts = ((data.current || '').split('?')[0] || '').split('/').slice(1, 4); // extract first 2 parts of the next url\r\n const lastUrlparts = ((data.last && data.last.pathname) || '').split('/').slice(1, 4); // extract first 2 parts of the last url\r\n\r\n // if first 2 parts doesnt match, save the last url as last unique\r\n if (!deepCompare(lastUrlparts, currentUrlparts) && (!deepCompare(draft.route.pathname, draft.lastUniqueLocation.pathname) || !deepCompare(data.last.query, draft.lastUniqueLocation.query)) && !draft.lastLocation.pathname.includes('/new')) {\r\n draft.lastUniqueLocation = data.last;\r\n }\r\n\r\n break;\r\n case NEXT_LOCATION:\r\n draft.nextLocation = data || null;\r\n }\r\n });\r\n","/*\r\nThis file contains string literals for your action types.\r\nThis provides an easy reference for the actions available.\r\nThese strings are exported as an object literal which can then be imported\r\ninto your reducers and action creators instead of hard-coding them.\r\nAlthough maintaining a separate file containing just your action\r\ntypes is optional, it is highly recommended.\r\n*/\r\n\r\n// ACTION TYPES\r\nexport const APP_LOADING = 'bdxlive/app/loading';\r\nexport const APP_ERROR = 'bdxlive/app/error';\r\nexport const CLEAR_ERRORS = 'bdxlive/app/clear_errors';\r\nexport const APP_NOTIFICATION = 'bdxlive/auth/notification';\r\nexport const APP_RESET = 'bdxlive/app/reset';\r\nexport const LEFT_NAV_VISIBILITY_CHANGED = 'bdxlive/global/left-nav-visibility-changed';\r\n\r\nexport const RUN_ASYNC_REQUEST = 'bdxlive/app/run_async_request';\r\nexport const RUN_ASYNC_SUCCESS = 'bdxlive/app/run_async_success';\r\nexport const RUN_ASYNC_FAIL = 'bdxlive/app/run_async_fail';\r\n","/*\r\nThe reducer deals with updating the state. We define one reducer for\r\neach action in the form of a switch case.\r\n*/\r\nimport produce from 'immer';\r\nimport { deepMerge, empty } from '@/utils/bdx-lodash-lite';\r\nimport { APP_NOTIFICATION, LEFT_NAV_VISIBILITY_CHANGED, CLEAR_ERRORS } from './types';\r\n\r\n// import { createReducer } from '../utils/redux/reducers';\r\n\r\n/* Handle all the loading indicators in a single reducer and in a root\r\nproperty, so we dont have lots of loading properties in the store tree\r\nReference: https://medium.com/stashaway-engineering/react-redux-tips-better-way-to-handle-loading-flags-in-your-reducers-afda42a804c6\r\n*/\r\nexport const loadingReducer = (state = {}, action) =>\r\n produce(state, (draft) => {\r\n const { type, data: { id, entityId } = {}, meta: { model, loadingByEntity = true } = {} } = action;\r\n const matches = /(.*)_(request|success|fail)/.exec(type);\r\n const objId = id || entityId;\r\n\r\n // not a *_REQUEST / *_SUCCESS / *_FAILURE actions, so we ignore them\r\n if (!matches) return state;\r\n\r\n const [, requestName, requestState] = matches;\r\n\r\n if (model && loadingByEntity) {\r\n if (empty(draft[model.name])) {\r\n draft[model.name] = {};\r\n }\r\n draft[model.name] = deepMerge(draft[model.name] || { [objId]: {} }, { [objId]: { [requestName.toUpperCase()]: requestState === 'request' } });\r\n } else {\r\n draft[requestName.toUpperCase()] = requestState === 'request';\r\n }\r\n });\r\n\r\n/* Handle all the success indicators in a single reducer and in a root\r\nproperty, so we dont have lots of success properties in the store tree\r\n*/\r\nexport const successReducer = (state = {}, action) =>\r\n produce(state, (draft) => {\r\n const { type } = action;\r\n const matches = /(.*)_(success)/.exec(type);\r\n\r\n // not a *_SUCCESS actions, so we ignore them\r\n if (!matches) return state;\r\n\r\n const [, requestName, requestState] = matches;\r\n draft[requestName.toUpperCase()] = requestState === 'success';\r\n });\r\n\r\n// Handle all the error messages in a single reducer and in a root property, so we\r\n// dont have lots of error message properties in the store tree\r\n// Reference: https://medium.com/stashaway-engineering/react-redux-tips-better-way-to-handle-loading-flags-in-your-reducers-afda42a804c6\r\nexport const errorReducer = (state = {}, action) =>\r\n produce(state, (draft) => {\r\n if (action.type === CLEAR_ERRORS) {\r\n const { actions, modelName, id } = action;\r\n if (!empty(actions)) {\r\n if (modelName && id && draft?.[modelName]?.[id]) {\r\n actions.forEach((_action) => {\r\n const holder = draft?.[modelName]?.[id];\r\n delete holder?.[_action.replace(/_request|_fail|_success/g, '')?.toUpperCase()];\r\n });\r\n } else {\r\n actions.forEach((_action) => {\r\n delete draft?.[_action.replace(/_request|_fail|_success/g, '')?.toUpperCase()];\r\n });\r\n }\r\n }\r\n } else {\r\n const { type, data: { id, entityId, appMessage, errorMessage, handled } = {}, meta: { model, loadingByEntity = true } = {} } = action;\r\n\r\n const matches = /(.*)_(request|fail)/.exec(type);\r\n const objId = id || entityId;\r\n\r\n // not a *_REQUEST / *_FAILURE actions, so we ignore them\r\n if (!matches) return state;\r\n\r\n const [, requestName, requestState] = matches;\r\n\r\n // if model specified register the error in that groud (Model Name), and if Id specified, under that Id (if no Id, it means inserting a new entity, so 0 is assigned)\r\n if (model && loadingByEntity) {\r\n if (empty(draft[model.name])) {\r\n draft[model.name] = {};\r\n }\r\n draft[model.name] = deepMerge(draft[model.name] || { [objId || 0]: {} }, { [objId || 0]: { [requestName.toUpperCase()]: requestState === 'fail' ? { appMessage, errorMessage, handled } : null } });\r\n } else {\r\n draft[requestName.toUpperCase()] = requestState === 'fail' ? { appMessage, errorMessage, handled } : '';\r\n }\r\n }\r\n });\r\n\r\n// Defaul App Recucer, user the czreate Reducer function to reduce the switching boilerplate\r\n// const appReducer = createReducer(state = {}, {\r\n// APP_NOTIFICATION: (state, action) => state.set('notification', action.message)\r\n// });\r\nexport const globalReducer = (state = {}, action) =>\r\n produce(state, (draft) => {\r\n switch (action.type) {\r\n case APP_NOTIFICATION:\r\n draft.notification = action.message;\r\n return;\r\n case LEFT_NAV_VISIBILITY_CHANGED:\r\n draft.leftMenuVisible = action.visible;\r\n }\r\n });\r\n","/**\r\n * Helper Importings\r\n */\r\nimport { produce } from 'immer';\r\nimport { deepCompare, empty, uniqBy, objectPath } from '@/utils/bdx-lodash-lite';\r\nimport { Model } from '@/utils/models';\r\nimport { EDIT_ENTITY, UPDATE_ENTITY, SAVE_ENTITY, FORM_CHANGE, CANCEL_EDIT, DISCARD_ALL, CREATE_ENTITY, DELETE_ENTITY } from './types';\r\nimport clone from '@/utils/external/clone';\r\n\r\nconst initialState = {\r\n entities: [],\r\n __unsaved: false,\r\n};\r\n\r\n/**\r\n * Form Reducer\r\n * This reducer is inchaged of storing the editing entityes and recalculate the __unsaved state\r\n * @param {*} state current state\r\n * @param { String } action.type action type\r\n * @param { Object } action.data.entity entity Object\r\n * @param { String | Number } action.data.id entity ID\r\n */\r\nexport const formReducer = (state = initialState, { type, data = {}, meta = {} } = {}) =>\r\n produce(state, (draft) => {\r\n switch (type) {\r\n case CREATE_ENTITY:\r\n create(draft, data);\r\n break;\r\n case EDIT_ENTITY:\r\n edit(draft, data);\r\n break;\r\n case DELETE_ENTITY:\r\n deleteEntity(draft, data, meta);\r\n break;\r\n case UPDATE_ENTITY:\r\n update(draft, data, meta);\r\n break;\r\n case SAVE_ENTITY:\r\n save(draft, data, meta);\r\n break;\r\n case FORM_CHANGE:\r\n formChange(draft, data);\r\n break;\r\n case CANCEL_EDIT:\r\n cancelEdit(draft, data, meta);\r\n break;\r\n case DISCARD_ALL:\r\n return {\r\n entities: [],\r\n __lastChanged: {},\r\n __unsaved: false,\r\n };\r\n }\r\n });\r\n\r\nconst create = (draft, { id, entity, model, modelObject }) => {\r\n const newEntity = {\r\n entity,\r\n id,\r\n model,\r\n modelObject,\r\n __unsaved: true,\r\n __commited: false,\r\n __created: true,\r\n };\r\n draft.entities.push(newEntity);\r\n draft.__unsaved = draft.entities.some((_item) => _item.__unsaved);\r\n};\r\n\r\nconst edit = (draft, { id, time, entity, model, modelObject, changes } = {}) => {\r\n // Make edit entity\r\n const editEntity = {\r\n id,\r\n time: time || Date.now(),\r\n model,\r\n modelObject,\r\n entity: clone(entity),\r\n __unsaved: !empty(changes),\r\n __commited: false,\r\n __edited: true,\r\n };\r\n if (!empty(changes)) {\r\n const formEntity = clone(editEntity?.entity);\r\n Object.keys(changes).forEach((key) => objectPath(formEntity).set(key, changes[key]));\r\n editEntity.entity = formEntity;\r\n }\r\n // Add new item to entities\r\n draft.entities.push(editEntity);\r\n // Keep the latest edit state\r\n draft.entities = uniqBy(draft.entities, (_item, array) =>\r\n array.every((_entity) => {\r\n let valid = false;\r\n if (!deepCompare(_entity.id, _item.id) || !deepCompare(_entity.model, _item.model)) valid = true;\r\n if (!valid && _entity.time < _item.time && !_entity.__unsaved) Object.assign(_entity, _item);\r\n return valid;\r\n })\r\n );\r\n // Recalculate unsaved state\r\n draft.__unsaved = draft.entities.some((_item) => _item.__unsaved);\r\n};\r\n\r\nconst deleteEntity = (draft, { id, time, entity, model, modelObject, changes } = {}) => {\r\n // Make edit entity\r\n const deletedEntity = {\r\n id,\r\n time: time || Date.now(),\r\n model,\r\n modelObject,\r\n entity: clone(entity),\r\n __unsaved: true,\r\n __commited: false,\r\n __deleted: true,\r\n };\r\n\r\n if (!empty(changes)) {\r\n const formEntity = clone(deletedEntity?.entity);\r\n Object.keys(changes).forEach((key) => objectPath(formEntity).set(key, changes[key]));\r\n deletedEntity.entity = formEntity;\r\n }\r\n // Add new item to entities\r\n draft.entities.push(deletedEntity);\r\n // Keep the latest edit state\r\n draft.entities = uniqBy(draft.entities, (_item, array) =>\r\n array.every((_entity) => {\r\n let valid = false;\r\n if (!deepCompare(_entity.id, _item.id) || !deepCompare(_entity.model, _item.model)) valid = true;\r\n if (!valid && _entity.time < _item.time && !_entity.__unsaved) Object.assign(_entity, _item);\r\n return valid;\r\n })\r\n );\r\n // Recalculate unsaved state\r\n draft.__unsaved = draft.entities.some((_item) => _item.__unsaved);\r\n};\r\n\r\nconst update = (draft, { id, entity } = {}, { model } = {}) => {\r\n // Make edit entity\r\n const changeEntity = draft.entities.find((_item) => (!Number.isNaN(Number(_item.id)) ? Number(_item.id) : _item.id) === (!Number.isNaN(Number(id)) ? Number(id) : id) && _item.model === model.name);\r\n if (!empty(changeEntity)) {\r\n changeEntity.entity = Object.assign(changeEntity.entity, entity);\r\n if (!deepCompare(changeEntity.entity[model.describerFields.id], id)) {\r\n changeEntity.id = changeEntity.entity[model.describerFields.id];\r\n }\r\n }\r\n};\r\n\r\nconst save = (draft, { id }, { model }) => {\r\n const changeEntity = draft.entities.find((_item) => (!Number.isNaN(Number(_item.id)) ? Number(_item.id) : _item.id) === (!Number.isNaN(Number(id)) ? Number(id) : id) && _item.model === model);\r\n changeEntity.__commited = true;\r\n changeEntity.__unsaved = false;\r\n changeEntity.__created = false;\r\n draft.__unsaved = draft.entities.some((_item) => _item.__unsaved);\r\n};\r\n\r\nconst formChange = (draft, { id, changes, model, entity }) => {\r\n // Find the respective entity\r\n const changeEntity = draft.entities.find((_item) => {\r\n const itemId = !Number.isNaN(Number(_item.id)) ? Number(_item.id) : _item.id;\r\n const givenId = !Number.isNaN(Number(id)) ? Number(id) : id;\r\n return itemId === givenId && _item.model === model;\r\n });\r\n if (changeEntity && !changeEntity.__deleted) {\r\n // Assign the changes into the current property and set the unsaved as true\r\n const formEntity = clone(changeEntity?.entity);\r\n Object.keys(changes).forEach((key) => objectPath(formEntity).set(key, changes[key]));\r\n changeEntity.entity = formEntity;\r\n\r\n // this is to debug problems using another function to detect changes\r\n // const chgs = diff(entity, changeEntity.entity).filter(change => change.type !== 'same' && !deepCompare(change.prev, change.value));\r\n // console.log(chgs);\r\n\r\n changeEntity.__unsaved = !deepCompare({ ...(changeEntity?.entity || {}), ...entity }, changeEntity.entity, true) || changeEntity.__created;\r\n changeEntity.__commited = false;\r\n draft.__unsaved = draft.entities.some((_item) => _item.__unsaved);\r\n }\r\n};\r\n\r\nconst cancelEdit = (draft, { id }, { model }) => {\r\n // Find the respective entity\r\n const cancelEntity = draft.entities.find((_item) => (id === null ? _item.__created : _item.id === id) && _item.model === (model instanceof Model ? model.name : model));\r\n if (cancelEntity) {\r\n // Remove the entity\r\n const index = draft.entities.indexOf(cancelEntity);\r\n draft.entities.splice(index, 1);\r\n }\r\n\r\n // Recalculate unsaved state\r\n draft.__unsaved = draft.entities.some((_item) => _item.__unsaved);\r\n};\r\n","/*\r\nThe reducer deals with updating the state. We define one\r\nreducer for each action in the form of a switch case.\r\n*/\r\n\r\nimport produce from 'immer';\r\n\r\nimport { LOGIN_SUCCESS } from './types';\r\nimport { APP_RESET } from '../../../@redux/types';\r\nimport { UPDATE_USER_SERVICE_SUCCESS } from '@/modules/user-management/redux/types';\r\n\r\nconst authInitial = { user: null };\r\n\r\nexport const authReducer = (state = authInitial, { type, data }) =>\r\n produce(state, (draft) => {\r\n switch (type) {\r\n case LOGIN_SUCCESS:\r\n [draft.user] = data.result.users;\r\n draft.userPermissions = data.result.userPermissions;\r\n draft.services = data.result.services;\r\n return;\r\n case UPDATE_USER_SERVICE_SUCCESS:\r\n draft.services = [...new Set([...draft.services, ...(data.result?.services || [])])];\r\n return;\r\n case APP_RESET:\r\n draft.user = null;\r\n draft.userPermissions = null;\r\n draft.services = null;\r\n }\r\n });\r\n","/**\r\n * Configuration request reducers for storing the data in the store\r\n * @author Gary Valverde Hampton \r\n */\r\nimport { produce } from 'immer';\r\nimport { CONFIG_REQUEST_SUCCESS } from './types';\r\n\r\nexport const configReducer = (state = window.AppSettings || {}, { type, data: { config } = {} }) =>\r\n produce(state, (draft) => {\r\n switch (type) {\r\n case CONFIG_REQUEST_SUCCESS:\r\n return {\r\n ...draft,\r\n ...config,\r\n };\r\n }\r\n });\r\n","export const CONTENT_REQUEST_SUCCESS = 'bdxlive/content/content_success';\r\nexport const CONTENT_REQUEST_FAIL = 'bdxlive/content/content_fail';\r\nexport const CONTENT_REQUEST = 'bdxlive/content/content_request';\r\n","/**\r\n * Configuration request reducers for storing the data in the store\r\n * @author Gary Valverde Hampton \r\n */\r\nimport { produce } from 'immer';\r\nimport { addHours } from '@/utils/bdx-lodash-lite';\r\nimport { CONTENT_REQUEST_SUCCESS } from './types';\r\n\r\n/* eslint-disable-next-line */\r\nconst defaultState = {expiration : addHours(new Date(), 2)};\r\n\r\nexport const contentReducer = (state = defaultState, { type, data: { sectionName, content } = {} }) =>\r\n produce(state, (draft) => {\r\n switch (type) {\r\n case CONTENT_REQUEST_SUCCESS:\r\n draft[sectionName] = content;\r\n }\r\n });\r\n","/**\r\n * Helper Importings\r\n */\r\nimport { produce } from 'immer';\r\n// import { MODEL_APPLY_CHANGES } from './types';\r\nimport { empty } from '@/lodash/';\r\nimport { deepMerge } from '../../utils/bdx-lodash-lite/deepMerge';\r\nimport { MODEL_ENTITY_FLUSH, CLEAR_FLAG } from './types';\r\n\r\n/**\r\n * Models reducer\r\n * This is incharged of storing the models information based on the entity on the global\r\n * entities state\r\n * @param { object } state current entities state\r\n * @param { string } action.type action type\r\n * @param { modelRequestSchema | schema | object } action.data data normalized based on a schema\r\n */\r\nexport const modelsReducer = (state = {}, { type, data: { entities, entityId, keys, property } = {}, meta: { model, normalized, name, describerFields } = {} } = {}) =>\r\n produce(state, (draft) => {\r\n if (type === MODEL_ENTITY_FLUSH) {\r\n if (!keys) {\r\n delete draft[name];\r\n } else {\r\n keys.forEach((key) => {\r\n if (!property) {\r\n delete draft[name][key];\r\n } else if (draft[name]?.[key]?.[property]) {\r\n delete draft[name][key][property];\r\n }\r\n });\r\n }\r\n } else if (type === CLEAR_FLAG && keys && draft?.[name]) {\r\n const draftEntities = Object.values(draft?.[name]);\r\n if (draftEntities) {\r\n draftEntities.forEach((item) => keys?.forEach((key) => delete draft?.[name]?.[item?.[describerFields.id]]?.$flags?.[key]));\r\n }\r\n } else if (normalized && !empty(entities)) {\r\n const KINDS = Object.keys(entities);\r\n\r\n // For each key perform a override operation\r\n KINDS.forEach((kind) => {\r\n // Merge store entity store with arriving entity, if both entities have same property it is replaced by the new one;\r\n Object.keys(entities[kind]).map((key) => {\r\n if (draft[kind] && key in draft[kind]) {\r\n entities[kind][key] = deepMerge({ ...draft[kind][key] }, entities[kind][key], { keepExistent: false });\r\n }\r\n return null;\r\n });\r\n\r\n if (entityId && kind === model?.name) {\r\n Object.values(entities[kind]).forEach((entity) => {\r\n entity.formId = entityId;\r\n });\r\n }\r\n\r\n draft[kind] = {\r\n ...draft[kind],\r\n ...entities[kind],\r\n };\r\n });\r\n }\r\n });\r\n","export const GET_BUILDER_DIVISIONS_REQUEST = 'bdxlive/entities/builder/get_builder_divisions_request';\r\nexport const GET_BUILDER_DIVISIONS_SUCCESS = 'bdxlive/entities/builder/get_builder_divisions_success';\r\nexport const GET_BUILDER_DIVISIONS_FAIL = 'bdxlive/entities/builder/get_builder_divisions_fail';\r\n\r\nexport const GET_BUILDER_DISPLAY_CHANNEL_REQUEST = 'bdxlive/entities/builder/get_builder_channel_request';\r\nexport const GET_BUILDER_DISPLAY_CHANNEL_SUCCESS = 'bdxlive/entities/builder/get_builder_channel_success';\r\nexport const GET_BUILDER_DISPLAY_CHANNEL_FAIL = 'bdxlive/entities/builder/get_builder_channel_fail';\r\n\r\nexport const GET_PARENT_DIVISIONS_REQUEST = 'bdxlive/entities/builder/get_parent_divisions_request';\r\nexport const GET_PARENT_DIVISIONS_SUCCESS = 'bdxlive/entities/builder/get_parent_divisions_success';\r\nexport const GET_PARENT_DIVISIONS_FAIL = 'bdxlive/entities/builder/get_parent_divisions_fail';\r\n\r\nexport const GET_BUILDER_COUNT_REQUEST = 'bdxlive/entities/builder/get_builder_count_request';\r\nexport const GET_BUILDER_COUNT_SUCCESS = 'bdxlive/entities/builder/get_builder_count_success';\r\nexport const GET_BUILDER_COUNT_FAIL = 'bdxlive/entities/builder/get_builder_count_fail';\r\n\r\nexport const UPDATE_BUILDER_SERVICE_REQUEST = 'bdxlive/entities/builder/update_builder_service_request';\r\nexport const UPDATE_BUILDER_SERVICE_SUCCESS = 'bdxlive/entities/builder/update_builder_service_success';\r\nexport const UPDATE_BUILDER_SERVICE_FAIL = 'bdxlive/entities/builder/update_builder_service_fail';\r\n\r\nexport const GET_BUILDER_PRODUCTS_REQUEST = 'bdxlive/entities/builder/get_builder_products_request';\r\nexport const GET_BUILDER_PRODUCTS_SUCCESS = 'bdxlive/entities/builder/get_builder_products_success';\r\nexport const GET_BUILDER_PRODUCTS_FAIL = 'bdxlive/entities/builder/get_builder_products_fail';\r\n\r\nexport const GET_BUILDER_SPOTLIHGT_INFO_REQUEST = 'bdxlive/entities/builder/get_builder_spotlight_info_request';\r\nexport const GET_BUILDER_SPOTLIHGT_INFO_SUCCESS = 'bdxlive/entities/builder/get_builder_spotlight_info_success';\r\nexport const GET_BUILDER_SPOTLIHGT_INFO_FAIL = 'bdxlive/entities/builder/get_builder_spotlight_info_fail';\r\n\r\nexport const GET_BUILDER_MISSED_RECLEADS_REQUEST = 'bdxlive/entities/builder/get_builder_missed_recleads_request';\r\nexport const GET_BUILDER_MISSED_RECLEADS_SUCCESS = 'bdxlive/entities/builder/get_builder_missed_recleads_success';\r\nexport const GET_BUILDER_MISSED_RECLEADS_FAIL = 'bdxlive/entities/builder/get_builder_missed_recleads_fail';\r\n","import { produce } from 'immer';\r\nimport { CHANGE_LOCATION } from '@/redux/routes/types';\r\nimport { statusIds, statusText } from '@/constants/bdx-lookups';\r\nimport { empty } from '@/lodash/';\r\nimport { NAV_COMMUNITY_COMBO_BOX_SUCCESS, NAV_DIVISION_COMBO_BOX_SUCCESS, NAV_PARTNER_SEARCH_BOX_SUCCESS, NAV_BUILDER_SEARCH_BOX_SUCCESS, NAV_PARTNER_CONTEXT, NAV_BUILDER_CONTEXT, NAV_DIVISON_CONTEXT, NAV_COMMUNITY_CONTEXT, NAV_PLAN_CONTEXT, NAV_SPEC_CONTEXT, NAV_COMMUNITY_TREE_VIEW_SUCCESS, NAV_OPEN, NAV_FORCED, NAV_COLLAPSE, NAV_FLOAT, VIEW_CONTEXT_LOADING, TOGGLE_LIST_MODE, NAV_FULL_CONTEXT, NAV_COMMUNITY_TREE_VIEW_FILTER, NAV_PLAN_COMBO_BOX_SUCCESS } from './types';\r\nimport { GET_BUILDER_DIVISIONS_SUCCESS } from '@/redux/entities/builder/types';\r\n\r\nconst initialState = {\r\n // Global initial state\r\n global: {\r\n float: true,\r\n nestedComboBox: {},\r\n communityTreeViewFilter: statusText[statusIds.Approved],\r\n builderDivisions: [],\r\n },\r\n};\r\nexport const navigationReducer = (state = initialState, { type, data: { mode, partner, builder, division, community, plan, spec, brand, agent, result, opened, float, locationForced, collapsed, contextLoading, filter } = {} }) =>\r\n produce(state, (draft) => {\r\n if (empty(draft.global)) {\r\n draft.global = {\r\n float: true,\r\n nestedComboBox: {},\r\n communityTreeViewFilter: statusText[statusIds.Approved],\r\n builderDivisions: [],\r\n };\r\n }\r\n\r\n switch (type) {\r\n /**\r\n * Navigation opened\r\n */\r\n case NAV_OPEN:\r\n draft.global.opened = opened;\r\n break;\r\n case NAV_FORCED:\r\n draft.global.locationForced = locationForced;\r\n break;\r\n case NAV_COLLAPSE:\r\n draft.global.collapsed = collapsed;\r\n break;\r\n case CHANGE_LOCATION:\r\n draft.global.locationForced = null;\r\n break;\r\n case NAV_FLOAT:\r\n draft.global.float = float;\r\n break;\r\n /**\r\n * Navigation Context\r\n */\r\n case NAV_PARTNER_CONTEXT:\r\n draft.global.partner = partner;\r\n break;\r\n case NAV_BUILDER_CONTEXT:\r\n draft.global.builder = builder;\r\n draft.global.division = null;\r\n draft.global.community = null;\r\n draft.global.brand = null;\r\n draft.global.agent = null;\r\n break;\r\n case NAV_DIVISON_CONTEXT:\r\n draft.global.division = division;\r\n draft.global.community = null;\r\n draft.global.communityTreeViewFilter = statusText[statusIds.Approved];\r\n draft.global.brand = null;\r\n draft.global.agent = null;\r\n break;\r\n case NAV_COMMUNITY_CONTEXT:\r\n draft.global.community = community;\r\n draft.global.brand = null;\r\n draft.global.agent = null;\r\n break;\r\n case NAV_PLAN_CONTEXT:\r\n draft.global.plan = plan;\r\n draft.global.brand = null;\r\n draft.global.agent = null;\r\n break;\r\n case NAV_SPEC_CONTEXT:\r\n draft.global.spec = spec;\r\n draft.global.brand = null;\r\n draft.global.agent = null;\r\n break;\r\n case NAV_FULL_CONTEXT:\r\n draft.global.partner = partner;\r\n draft.global.builder = builder;\r\n draft.global.division = division;\r\n draft.global.community = community;\r\n draft.global.plan = plan;\r\n draft.global.spec = spec;\r\n draft.global.brand = brand;\r\n draft.global.agent = agent;\r\n draft.global.nestedComboBox = {};\r\n break;\r\n /**\r\n * Search / Combo Values\r\n */\r\n case NAV_PARTNER_SEARCH_BOX_SUCCESS:\r\n draft.global.nestedComboBox.partnerSearchBox = result;\r\n break;\r\n case NAV_BUILDER_SEARCH_BOX_SUCCESS:\r\n draft.global.nestedComboBox.builderSearchBox = result;\r\n break;\r\n case NAV_COMMUNITY_COMBO_BOX_SUCCESS:\r\n draft.global.nestedComboBox.communityComboBox = result;\r\n break;\r\n case NAV_DIVISION_COMBO_BOX_SUCCESS:\r\n draft.global.nestedComboBox.divisionComboBox = result;\r\n break;\r\n case NAV_PLAN_COMBO_BOX_SUCCESS:\r\n draft.global.nestedComboBox.planComboBox = result;\r\n break;\r\n /**\r\n * Tree Views\r\n */\r\n case NAV_COMMUNITY_TREE_VIEW_SUCCESS:\r\n draft.global.nestedComboBox.communityTreeView = result;\r\n break;\r\n case NAV_COMMUNITY_TREE_VIEW_FILTER:\r\n draft.global.communityTreeViewFilter = filter;\r\n break;\r\n /**\r\n * View Context\r\n */\r\n case VIEW_CONTEXT_LOADING:\r\n draft.global.contextLoading = contextLoading;\r\n break;\r\n case TOGGLE_LIST_MODE:\r\n draft.global.listMode = mode;\r\n break;\r\n case GET_BUILDER_DIVISIONS_SUCCESS: {\r\n const builderId = result?.builders?.[0]?.id;\r\n if (empty(draft.global.builderDivisions)) {\r\n draft.global.builderDivisions = [builderId];\r\n } else if (!draft.global.builderDivisions.includes(builderId)) {\r\n draft.global.builderDivisions.push(builderId);\r\n }\r\n break;\r\n }\r\n default:\r\n if (!type) {\r\n Object.keys(draft).forEach((key) => {\r\n delete draft[key].locationForced;\r\n });\r\n }\r\n return draft;\r\n }\r\n });\r\n","export const MANAGE_COMMUNITIES_GRID_REQUEST = 'bdxlive/manage_communities/grid_request';\r\nexport const MANAGE_COMMUNITIES_GRID_SUCCESS = 'bdxlive/manage_communities/grid_success';\r\nexport const MANAGE_COMMUNITIES_GRID_ERROR = 'bdxlive/manage_communities/grid_fail';\r\n\r\nexport const MANAGE_COMMUNITIES_STATUS_FACETS_REQUEST = 'bdxlive/manage_communities/status_facets_request';\r\nexport const MANAGE_COMMUNITIES_STATUS_FACETS_SUCCESS = 'bdxlive/manage_communities/status_facets_success';\r\nexport const MANAGE_COMMUNITIES_STATUS_FACETS_ERROR = 'bdxlive/manage_communities/status_facets_fail';\r\n\r\nexport const MANAGE_COMMUNITIES_STATES_FACETS_REQUEST = 'bdxlive/manage_communities/states_facets_request';\r\nexport const MANAGE_COMMUNITIES_STATES_FACETS_SUCCESS = 'bdxlive/manage_communities/states_facets_success';\r\nexport const MANAGE_COMMUNITIES_STATES_FACETS_ERROR = 'bdxlive/manage_communities/states_facets_fail';\r\n\r\nexport const MANAGE_COMMUNITIES_BRANDS_FACETS_REQUEST = 'bdxlive/manage_communities/brands_facets_request';\r\nexport const MANAGE_COMMUNITIES_BRANDS_FACETS_SUCCESS = 'bdxlive/manage_communities/brands_facets_success';\r\nexport const MANAGE_COMMUNITIES_BRANDS_FACETS_ERROR = 'bdxlive/manage_communities/brands_facets_fail';\r\n\r\nexport const MANAGE_COMMUNITIES_MARKETS_FACETS_REQUEST = 'bdxlive/manage_communities/markets_facets_request';\r\nexport const MANAGE_COMMUNITIES_MARKETS_FACETS_SUCCESS = 'bdxlive/manage_communities/markets_facets_success';\r\nexport const MANAGE_COMMUNITIES_MARKETS_FACETS_ERROR = 'bdxlive/manage_communities/markets_facets_fail';\r\n\r\nexport const MANAGE_COMMUNITIES_CLEAN_FACETS = 'bdxlive/manage_communities/clean_facets';\r\n","export const PLAN_LIBRARY_QUERY_REQUEST = 'bdxlive/plan_library/plan_library_query_request';\r\nexport const PLAN_LIBRARY_QUERY_SUCCESS = 'bdxlive/plan_library/plan_library_query_success';\r\nexport const PLAN_LIBRARY_QUERY_FAIL = 'bdxlive/plan_library/plan_library_query_fail';\r\n\r\nexport const PLAN_LIBRARY_SEARCH_REQUEST = 'bdxlive/plan_library/plan_library_search_request';\r\nexport const PLAN_LIBRARY_SEARCH_SUCCESS = 'bdxlive/plan_library/plan_library_search_success';\r\nexport const PLAN_LIBRARY_SEARCH_FAIL = 'bdxlive/plan_library/plan_library_search_fail';\r\n\r\nexport const PLAN_LIBRARY_INSERT_REQUEST = 'bdxlive/plan_library/plan_library_insert_request';\r\nexport const PLAN_LIBRARY_INSERT_SUCCESS = 'bdxlive/plan_library/plan_library_insert_success';\r\nexport const PLAN_LIBRARY_INSERT_FAIL = 'bdxlive/plan_library/plan_library_insert_fail';\r\n\r\nexport const PLAN_LIBRARY_DELETE_REQUEST = 'bdxlive/plan_library/plan_library_delete_request';\r\nexport const PLAN_LIBRARY_DELETE_SUCCESS = 'bdxlive/plan_library/plan_library_delete_success';\r\nexport const PLAN_LIBRARY_DELETE_FAIL = 'bdxlive/plan_library/plan_library_delete_fail';\r\n\r\nexport const PLAN_LIBRARY_UPDATE_REQUEST = 'bdxlive/plan_library/plan_library_update_request';\r\nexport const PLAN_LIBRARY_UPDATE_SUCCESS = 'bdxlive/plan_library/plan_library_update_success';\r\nexport const PLAN_LIBRARY_UPDATE_FAIL = 'bdxlive/plan_library/plan_library_update_fail';\r\n","export const CHANGE_HISTORY_REQUEST = 'bdxlive/change-history/history_request';\r\nexport const CHANGE_HISTORY_SUCCESS = 'bdxlive/change-history/history_success';\r\nexport const CHANGE_HISTORY_FAIL = 'bdxlive/change-history/history_fail';\r\n","export const MANAGE_SPECS_GRID_REQUEST = 'bdxlive/manage_specs/grid_request';\r\nexport const MANAGE_SPECS_GRID_SUCCESS = 'bdxlive/manage_specs/grid_success';\r\nexport const MANAGE_SPECS_GRID_ERROR = 'bdxlive/manage_specs/grid_fail';\r\n\r\nexport const MANAGE_SPECS_STATUS_FACETS_REQUEST = 'bdxlive/manage_specs/status_facets_request';\r\nexport const MANAGE_SPECS_STATUS_FACETS_SUCCESS = 'bdxlive/manage_specs/status_facets_success';\r\nexport const MANAGE_SPECS_STATUS_FACETS_ERROR = 'bdxlive/manage_specs/status_facets_fail';\r\n\r\nexport const MANAGE_SPECS_MARKETS_FACETS_REQUEST = 'bdxlive/manage_specs/markets_facets_request';\r\nexport const MANAGE_SPECS_MARKETS_FACETS_SUCCESS = 'bdxlive/manage_specs/markets_facets_success';\r\nexport const MANAGE_SPECS_MARKETS_FACETS_ERROR = 'bdxlive/manage_specs/markets_facets_fail';\r\n\r\nexport const MANAGE_SPECS_CLEAN_FACETS = 'bdxlive/manage_specs/clean_facets';\r\n","/**\r\n * Get the available plan library items for a community\r\n * This should get the list of plans assignable to a community, this list is composed by:\r\n * - All standlone plans in the community\r\n * - Any corportate or division plan library (based on the library used flag) that is not assigned to the community already\r\n */\r\nexport const COMMUNITY_AVAILABLE_LIBRARY_PLANS_REQUEST = 'bdxlive/community_detail/manage_homes/community_available_library_plans_request';\r\nexport const COMMUNITY_AVAILABLE_LIBRARY_PLANS_SUCCESS = 'bdxlive/community_detail/manage_homes/community_available_library_plans_success';\r\nexport const COMMUNITY_AVAILABLE_LIBRARY_PLANS_FAIL = 'bdxlive/community_detail/manage_homes/community_available_library_plans_fail';\r\n","/* **** COMMUNITIES **** */\r\n\r\nexport const COMMUNIIES_QUICK_EDIT_REQUEST = 'bdxlive/quick_edit/communities_quick_edit_request';\r\nexport const COMMUNIIES_QUICK_EDIT_SUCCESS = 'bdxlive/quick_edit/communities_quick_edit_success';\r\nexport const COMMUNIIES_QUICK_EDIT_FAIL = 'bdxlive/quick_edit/communities_quick_edit_fail';\r\n\r\nexport const COMMUNIIES_QUICK_EDIT_DELETE_REQUEST = 'bdxlive/quick_edit/communities_quick_edit_delete_request';\r\nexport const COMMUNIIES_QUICK_EDIT_DELETE_SUCCESS = 'bdxlive/quick_edit/communities_quick_edit_delete_success';\r\nexport const COMMUNIIES_QUICK_EDIT_DELETE_FAIL = 'bdxlive/quick_edit/communities_quick_edit_delete_fail';\r\n\r\n/* **** PLANS **** */\r\n\r\nexport const PLANS_QUICK_EDIT_REQUEST = 'bdxlive/quick_edit/plans_quick_edit_request';\r\nexport const PLANS_QUICK_EDIT_SUCCESS = 'bdxlive/quick_edit/plans_quick_edit_success';\r\nexport const PLANS_QUICK_EDIT_FAIL = 'bdxlive/quick_edit/plans_quick_edit_fail';\r\n\r\nexport const PLANS_QUICK_EDIT_DELETE_REQUEST = 'bdxlive/quick_edit/plans_quick_edit_delete_request';\r\nexport const PLANS_QUICK_EDIT_DELETE_SUCCESS = 'bdxlive/quick_edit/plans_quick_edit_delete_success';\r\nexport const PLANS_QUICK_EDIT_DELETE_FAIL = 'bdxlive/quick_edit/plans_quick_edit_delete_fail';\r\n\r\n/**\r\n * Bulk Update Communities\r\n */\r\nexport const COMMUNITIES_QUICK_EDIT_UPDATE_REQUEST = 'bdxlive/quick_edit/communities_quick_edit_update_request';\r\nexport const COMMUNITIES_QUICK_EDIT_UPDATE_SUCCESS = 'bdxlive/quick_edit/communities_quick_edit_update_success';\r\nexport const COMMUNITIES_QUICK_EDIT_UPDATE_FAIL = 'bdxlive/quick_edit/communities_quick_edit_update_fail';\r\n\r\n/**\r\n * Bulk Update Plans\r\n */\r\nexport const PLANS_QUICK_EDIT_UPDATE_REQUEST = 'bdxlive/quick_edit/plans_quick_edit_update_request';\r\nexport const PLANS_QUICK_EDIT_UPDATE_SUCCESS = 'bdxlive/quick_edit/plans_quick_edit_update_success';\r\nexport const PLANS_QUICK_EDIT_UPDATE_FAIL = 'bdxlive/quick_edit/plans_quick_edit_update_fail';\r\n\r\n/**\r\n * Bulk Update Specs\r\n */\r\nexport const SPECS_QUICK_EDIT_UPDATE_REQUEST = 'bdxlive/quick_edit/specs_quick_edit_update_request';\r\nexport const SPECS_QUICK_EDIT_UPDATE_SUCCESS = 'bdxlive/quick_edit/specs_quick_edit_update_success';\r\nexport const SPECS_QUICK_EDIT_UPDATE_FAIL = 'bdxlive/quick_edit/specs_quick_edit_update_fail';\r\n/* **** SPECS **** */\r\n\r\nexport const SPECS_QUICK_EDIT_REQUEST = 'bdxlive/quick_edit/specs_quick_edit_request';\r\nexport const SPECS_QUICK_EDIT_SUCCESS = 'bdxlive/quick_edit/specs_quick_edit_success';\r\nexport const SPECS_QUICK_EDIT_FAIL = 'bdxlive/quick_edit/specs_quick_edit_fail';\r\n\r\nexport const SPECS_QUICK_EDIT_DELETE_REQUEST = 'bdxlive/quick_edit/specs_quick_edit_delete_request';\r\nexport const SPECS_QUICK_EDIT_DELETE_SUCCESS = 'bdxlive/quick_edit/specs_quick_edit_delete_success';\r\nexport const SPECS_QUICK_EDIT_DELETE_FAIL = 'bdxlive/quick_edit/specs_quick_edit_delete_fail';\r\n","/**\r\n * Community Testimonials Requests & Mutations\r\n */\r\nexport const COMMUNITY_TESTIMONIALS_REQUEST = 'bdxlive/community_detail/marketing/testimonials_request';\r\nexport const COMMUNITY_TESTIMONIALS_SUCCESS = 'bdxlive/community_detail/marketing/testimonials_success';\r\nexport const COMMUNITY_TESTIMONIALS_FAIL = 'bdxlive/community_detail/marketing/testimonials_fail';\r\n\r\nexport const COMMUNITY_TESTIMONIALS_INSERT_MUTATION_REQUEST = 'bdxlive/community_detail/marketing/community_testimonials_insert_mutation_request';\r\nexport const COMMUNITY_TESTIMONIALS_INSERT_MUTATION_SUCCESS = 'bdxlive/community_detail/marketing/community_testimonials_insert_mutation_success';\r\nexport const COMMUNITY_TESTIMONIALS_INSERT_MUTATION_FAIL = 'bdxlive/community_detail/marketing/community_testimonials_insert_mutation_fail';\r\n\r\nexport const COMMUNITY_TESTIMONIALS_UPDATE_MUTATION_REQUEST = 'bdxlive/community_detail/marketing/community_testimonials_update_mutation_request';\r\nexport const COMMUNITY_TESTIMONIALS_UPDATE_MUTATION_SUCCESS = 'bdxlive/community_detail/marketing/community_testimonials_update_mutation_success';\r\nexport const COMMUNITY_TESTIMONIALS_UPDATE_MUTATION_FAIL = 'bdxlive/community_detail/marketing/community_testimonials_update_mutation_fail';\r\n\r\nexport const COMMUNITY_TESTIMONIALS_DELETE_MUTATION_REQUEST = 'bdxlive/community_detail/marketing/community_testimonials_delete_mutation_request';\r\nexport const COMMUNITY_TESTIMONIALS_DELETE_MUTATION_SUCCESS = 'bdxlive/community_detail/marketing/community_testimonials_delete_mutation_success';\r\nexport const COMMUNITY_TESTIMONIALS_DELETE_MUTATION_FAIL = 'bdxlive/community_detail/marketing/community_testimonials_delete_mutation_fail';\r\n\r\n/**\r\n * Builder Testimonials Requests (testimonials inherited from the division level)\r\n */\r\nexport const BUILDER_TESTIMONIALS_REQUEST = 'bdxlive/community_detail/marketing/builder_testimonials_request';\r\nexport const BUILDER_TESTIMONIALS_SUCCESS = 'bdxlive/community_detail/marketing/builder_testimonials_success';\r\nexport const BUILDER_TESTIMONIALS_FAIL = 'bdxlive/community_detail/marketing/builder_testimonials_fail';\r\n\r\n/**\r\n * Community Brochures Requests & Mutations\r\n */\r\nexport const COMMUNITY_BROCHURES_REQUEST = 'bdxlive/community_detail/marketing/brochures_request';\r\nexport const COMMUNITY_BROCHURES_SUCCESS = 'bdxlive/community_detail/marketing/brochures_success';\r\nexport const COMMUNITY_BROCHURES_FAIL = 'bdxlive/community_detail/marketing/brochures_fail';\r\n\r\nexport const COMMUNITY_BROCHURES_INSERT_MUTATION_REQUEST = 'bdxlive/community_detail/marketing/community_brochures_insert_mutation_request';\r\nexport const COMMUNITY_BROCHURES_INSERT_MUTATION_SUCCESS = 'bdxlive/community_detail/marketing/community_brochures_insert_mutation_success';\r\nexport const COMMUNITY_BROCHURES_INSERT_MUTATION_FAIL = 'bdxlive/community_detail/marketing/community_brochures_insert_mutation_fail';\r\n\r\nexport const COMMUNITY_BROCHURES_UPDATE_MUTATION_REQUEST = 'bdxlive/community_detail/marketing/community_brochures_update_mutation_request';\r\nexport const COMMUNITY_BROCHURES_UPDATE_MUTATION_SUCCESS = 'bdxlive/community_detail/marketing/community_brochures_update_mutation_success';\r\nexport const COMMUNITY_BROCHURES_UPDATE_MUTATION_FAIL = 'bdxlive/community_detail/marketing/community_brochures_update_mutation_fail';\r\n\r\nexport const COMMUNITY_BROCHURES_DELETE_MUTATION_REQUEST = 'bdxlive/community_detail/marketing/community_brochures_delete_mutation_request';\r\nexport const COMMUNITY_BROCHURES_DELETE_MUTATION_SUCCESS = 'bdxlive/community_detail/marketing/community_brochures_delete_mutation_success';\r\nexport const COMMUNITY_BROCHURES_DELETE_MUTATION_FAIL = 'bdxlive/community_detail/marketing/community_brochures_delete_mutation_fail';\r\n\r\nexport const COMMUNITY_INCLUDE_BROCHURE_UPDATE_MUTATION_REQUEST = 'bdxlive/community_detail/marketing/community_include_brochures_update_mutation_request';\r\nexport const COMMUNITY_INCLUDE_BROCHURE_UPDATE_MUTATION_SUCCESS = 'bdxlive/community_detail/marketing/community_include_brochures_update_mutation_success';\r\nexport const COMMUNITY_INCLUDE_BROCHURE_UPDATE_MUTATION_FAIL = 'bdxlive/community_detail/marketing/community_include_brochures_update_mutation_fail';\r\n\r\n/**\r\n * Community Promotions Requests & Mutations\r\n */\r\nexport const COMMUNITY_PROMOTIONS_REQUEST = 'bdxlive/community_detail/marketing/promotions_request';\r\nexport const COMMUNITY_PROMOTIONS_SUCCESS = 'bdxlive/community_detail/marketing/promotions_success';\r\nexport const COMMUNITY_PROMOTIONS_FAIL = 'bdxlive/community_detail/marketing/promotions_fail';\r\n\r\nexport const COMMUNITY_PROMOTIONS_INSERT_MUTATION_REQUEST = 'bdxlive/community_detail/marketing/community_promotions_insert_mutation_request';\r\nexport const COMMUNITY_PROMOTIONS_INSERT_MUTATION_SUCCESS = 'bdxlive/community_detail/marketing/community_promotions_insert_mutation_success';\r\nexport const COMMUNITY_PROMOTIONS_INSERT_MUTATION_FAIL = 'bdxlive/community_detail/marketing/community_promotions_insert_mutation_fail';\r\n\r\nexport const COMMUNITY_PROMOTIONS_UPDATE_MUTATION_REQUEST = 'bdxlive/community_detail/marketing/community_promotions_update_mutation_request';\r\nexport const COMMUNITY_PROMOTIONS_UPDATE_MUTATION_SUCCESS = 'bdxlive/community_detail/marketing/community_promotions_update_mutation_success';\r\nexport const COMMUNITY_PROMOTIONS_UPDATE_MUTATION_FAIL = 'bdxlive/community_detail/marketing/community_promotions_update_mutation_fail';\r\n\r\nexport const COMMUNITY_PROMOTIONS_DELETE_MUTATION_REQUEST = 'bdxlive/community_detail/marketing/community_promotions_delete_mutation_request';\r\nexport const COMMUNITY_PROMOTIONS_DELETE_MUTATION_SUCCESS = 'bdxlive/community_detail/marketing/community_promotions_delete_mutation_success';\r\nexport const COMMUNITY_PROMOTIONS_DELETE_MUTATION_FAIL = 'bdxlive/community_detail/marketing/community_promotions_delete_mutation_fail';\r\n\r\n/**\r\n * Community Events Requests & Mutations\r\n */\r\nexport const COMMUNITY_EVENTS_REQUEST = 'bdxlive/community_detail/marketing/events_request';\r\nexport const COMMUNITY_EVENTS_SUCCESS = 'bdxlive/community_detail/marketing/events_success';\r\nexport const COMMUNITY_EVENTS_FAIL = 'bdxlive/community_detail/marketing/events_fail';\r\n\r\nexport const COMMUNITY_EVENTS_INSERT_MUTATION_REQUEST = 'bdxlive/community_detail/marketing/community_events_insert_mutation_request';\r\nexport const COMMUNITY_EVENTS_INSERT_MUTATION_SUCCESS = 'bdxlive/community_detail/marketing/community_events_insert_mutation_success';\r\nexport const COMMUNITY_EVENTS_INSERT_MUTATION_FAIL = 'bdxlive/community_detail/marketing/community_events_insert_mutation_fail';\r\n\r\nexport const COMMUNITY_EVENTS_UPDATE_MUTATION_REQUEST = 'bdxlive/community_detail/marketing/community_events_update_mutation_request';\r\nexport const COMMUNITY_EVENTS_UPDATE_MUTATION_SUCCESS = 'bdxlive/community_detail/marketing/community_events_update_mutation_success';\r\nexport const COMMUNITY_EVENTS_UPDATE_MUTATION_FAIL = 'bdxlive/community_detail/marketing/community_events_update_mutation_fail';\r\n\r\nexport const COMMUNITY_EVENTS_DELETE_MUTATION_REQUEST = 'bdxlive/community_detail/marketing/community_events_delete_mutation_request';\r\nexport const COMMUNITY_EVENTS_DELETE_MUTATION_SUCCESS = 'bdxlive/community_detail/marketing/community_events_delete_mutation_success';\r\nexport const COMMUNITY_EVENTS_DELETE_MUTATION_FAIL = 'bdxlive/community_detail/marketing/community_events_delete_mutation_fail';\r\n\r\n/**\r\n * Community Greens Requests & Mutations\r\n */\r\nexport const COMMUNITY_GREEN_PROGRAMS_REQUEST = 'bdxlive/community_detail/marketing/green_programs_request';\r\nexport const COMMUNITY_GREEN_PROGRAMS_SUCCESS = 'bdxlive/community_detail/marketing/green_programs_success';\r\nexport const COMMUNITY_GREEN_PROGRAMS_FAIL = 'bdxlive/community_detail/marketing/green_programs_fail';\r\n\r\nexport const BUILDER_GREEN_PROGRAMS_REQUEST = 'bdxlive/community_detail/marketing/builder_green_programs_request';\r\nexport const BUILDER_GREEN_PROGRAMS_SUCCESS = 'bdxlive/community_detail/marketing/builder_green_programs_success';\r\nexport const BUILDER_GREEN_PROGRAMS_FAIL = 'bdxlive/community_detail/marketing/builder_green_programs_fail';\r\n\r\nexport const GREEN_PROGRAM_UPDATE_MUTATION_REQUEST = 'bdxlive/community_detail/marketing/green_program_update_mutation_request';\r\nexport const GREEN_PROGRAM_UPDATE_MUTATION_SUCCESS = 'bdxlive/community_detail/marketing/green_program_update_mutation_success';\r\nexport const GREEN_PROGRAM_UPDATE_MUTATION_FAIL = 'bdxlive/community_detail/marketing /green_program_update_mutation_fail';\r\n","/**\r\n * Request.\r\n */\r\nexport const LIBRARY_EVENTS_REQUEST = 'bdxlive/events/events_request';\r\nexport const LIBRARY_EVENTS_SUCCESS = 'bdxlive/events/events_success';\r\nexport const LIBRARY_EVENTS_FAIL = 'bdxlive/events/events_fail';\r\n\r\n/**\r\n * Divisional Request.\r\n */\r\nexport const LIBRARY_DIVISIONAL_EVENTS_REQUEST = 'bdxlive/events/divisional_events_request';\r\nexport const LIBRARY_DIVISIONAL_EVENTS_SUCCESS = 'bdxlive/events/divisional_events_success';\r\nexport const LIBRARY_DIVISIONAL_EVENTS_FAIL = 'bdxlive/events/divisional_events_fail';\r\n\r\n/**\r\n * Event Communities.\r\n */\r\nexport const LIBRARY_EVENTS_SLIDE_COMMS_REQUEST = 'bdxlive/events/events_get_comms_request';\r\nexport const LIBRARY_EVENTS_COMMUNITIES_SUCCESS = 'bdxlive/events/events_get_comms_success';\r\nexport const LIBRARY_EVENTS_GET_COMMS_FAIL = 'bdxlive/events/events_get_comms_fail';\r\n\r\n/**\r\n * Bulk Update.\r\n */\r\nexport const LIBRARY_EVENTS_MULTIPLE_UPDATE_REQUEST = 'bdxlive/events/events_multiple_update_request';\r\nexport const LIBRARY_EVENTS_MULTIPLE_UPDATE_SUCCESS = 'bdxlive/events/events_multiple_update_success';\r\nexport const LIBRARY_EVENTS_MULTIPLE_UPDATE_FAIL = 'bdxlive/events/events_multiple_update_fail';\r\n\r\n/**\r\n * Delete.\r\n */\r\nexport const LIBRARY_EVENTS_DELETE_REQUEST = 'bdxlive/events/events_delete_request';\r\nexport const LIBRARY_EVENTS_DELETE_SUCCESS = 'bdxlive/events/events_delete_success';\r\nexport const LIBRARY_EVENTS_DELETE_FAIL = 'bdxlive/events/events_delete_fail';\r\n\r\n/**\r\n * Update.\r\n */\r\nexport const LIBRARY_EVENTS_UPDATE_REQUEST = 'bdxlive/events/events_update_request';\r\nexport const LIBRARY_EVENTS_UPDATE_SUCCESS = 'bdxlive/events/events_update_success';\r\nexport const LIBRARY_EVENTS_UPDATE_FAIL = 'bdxlive/events/events_update_fail';\r\n\r\n/**\r\n * Insert.\r\n */\r\nexport const LIBRARY_EVENTS_INSERT_REQUEST = 'bdxlive/events/events_insert_request';\r\nexport const LIBRARY_EVENTS_INSERT_SUCCESS = 'bdxlive/events/events_insert_success';\r\nexport const LIBRARY_EVENTS_INSERT_FAIL = 'bdxlive/events/events_insert_fail';\r\n","/**\r\n * Request.\r\n */\r\nexport const LIBRARY_PROMOS_REQUEST = 'bdxlive/promotions/promos_request';\r\nexport const LIBRARY_PROMOS_SUCCESS = 'bdxlive/promotions/promos_success';\r\nexport const LIBRARY_PROMOS_FAIL = 'bdxlive/promotions/promos_fail';\r\n\r\n/**\r\n * Divisional Request.\r\n */\r\nexport const LIBRARY_DIVISIONAL_PROMOS_REQUEST = 'bdxlive/promotions/divisional_promos_request';\r\nexport const LIBRARY_DIVISIONAL_PROMOS_SUCCESS = 'bdxlive/promotions/divisional_promos_success';\r\nexport const LIBRARY_DIVISIONAL_PROMOS_FAIL = 'bdxlive/promotions/divisional_promos_fail';\r\n\r\n/**\r\n * Promotion Communities.\r\n */\r\nexport const LIBRARY_PROMOS_SLIDE_COMMS_REQUEST = 'bdxlive/promotions/promos_get_comms_request';\r\nexport const LIBRARY_PROMOS_COMMUNITIES_SUCCESS = 'bdxlive/promotions/promos_get_comms_success';\r\nexport const LIBRARY_PROMOS_GET_COMMS_FAIL = 'bdxlive/promotions/promos_get_comms_fail';\r\n\r\n/**\r\n * Bulk Update.\r\n */\r\nexport const LIBRARY_PROMOS_MULTIPLE_UPDATE_REQUEST = 'bdxlive/promotions/promos_multiple_update_request';\r\nexport const LIBRARY_PROMOS_MULTIPLE_UPDATE_SUCCESS = 'bdxlive/promotions/promos_multiple_update_success';\r\nexport const LIBRARY_PROMOS_MULTIPLE_UPDATE_FAIL = 'bdxlive/promotions/promos_multiple_update_fail';\r\n\r\n/**\r\n * Delete.\r\n */\r\nexport const LIBRARY_PROMOS_DELETE_REQUEST = 'bdxlive/promotions/promos_delete_request';\r\nexport const LIBRARY_PROMOS_DELETE_SUCCESS = 'bdxlive/promotions/promos_delete_success';\r\nexport const LIBRARY_PROMOS_DELETE_FAIL = 'bdxlive/promotions/promos_delete_fail';\r\n\r\n/**\r\n * Update.\r\n */\r\nexport const LIBRARY_PROMOS_UPDATE_REQUEST = 'bdxlive/promotions/promos_update_request';\r\nexport const LIBRARY_PROMOS_UPDATE_SUCCESS = 'bdxlive/promotions/promos_update_success';\r\nexport const LIBRARY_PROMOS_UPDATE_FAIL = 'bdxlive/promotions/promos_update_fail';\r\n\r\n/**\r\n * Insert.\r\n */\r\nexport const LIBRARY_PROMOS_INSERT_REQUEST = 'bdxlive/promotions/promos_insert_request';\r\nexport const LIBRARY_PROMOS_INSERT_SUCCESS = 'bdxlive/promotions/promos_insert_success';\r\nexport const LIBRARY_PROMOS_INSERT_FAIL = 'bdxlive/promotions/promos_insert_fail';\r\n","export const SEARCH_REQUEST = 'bdxlive/global/search_request';\r\nexport const SEARCH_SUCCESS = 'bdxlive/global/search_success';\r\nexport const SEARCH_FAIL = 'bdxlive/global/search_fail';\r\n","export const LEAD_RECIPIENTS_STATUS_FACETS_REQUEST = 'bdxlive/lead_recipients/status_facets_request';\r\nexport const LEAD_RECIPIENTS_STATUS_FACETS_SUCCESS = 'bdxlive/lead_recipients/status_facets_success';\r\nexport const LEAD_RECIPIENTS_STATUS_FACETS_FAIL = 'bdxlive/lead_recipients/status_facets_fail';\r\n\r\nexport const LEAD_RECIPIENTS_STATES_FACETS_REQUEST = 'bdxlive/lead_recipients/states_facets_request';\r\nexport const LEAD_RECIPIENTS_STATES_FACETS_SUCCESS = 'bdxlive/lead_recipients/states_facets_success';\r\nexport const LEAD_RECIPIENTS_STATES_FACETS_FAIL = 'bdxlive/lead_recipients/states_facets_fail';\r\n\r\nexport const MANAGE_LEAD_RECIPIENTS_REQUEST = 'lead_recipients/manage_lead_recipients_request';\r\nexport const MANAGE_LEAD_RECIPIENTS_SUCCESS = 'lead_recipients/manage_lead_recipients_success';\r\nexport const MANAGE_LEAD_RECIPIENTS_FAIL = 'lead_recipients/manage_lead_recipients_fail';\r\n\r\nexport const LEAD_RECIPIENTS_REQUEST = 'bdxlive/lead_recipients/lead_recipients_request';\r\nexport const LEAD_RECIPIENTS_SUCCESS = 'bdxlive/lead_recipients/lead_recipients_success';\r\nexport const LEAD_RECIPIENTS_FAIL = 'bdxlive/lead_recipients/lead_recipients_fail';\r\n\r\nexport const ASSIGN_LEAD_RECIPIENTS_REQUEST = 'bdxlive/lead_recipients/assign_lead_recipients_request';\r\nexport const ASSIGN_LEAD_RECIPIENTS_SUCCESS = 'bdxlive/lead_recipients/assign_lead_recipients_success';\r\nexport const ASSIGN_LEAD_RECIPIENTS_FAIL = 'bdxlive/lead_recipients/assign_lead_recipients_fail';\r\n\r\nexport const LEAD_RECIPIENTS_CORPORATE_REQUEST = 'lead_recipients/lead_recipients_corporate_request';\r\nexport const LEAD_RECIPIENTS_CORPORATE_SUCCESS = 'lead_recipients/lead_recipients_corporate_success';\r\nexport const LEAD_RECIPIENTS_CORPORATE_FAIL = 'lead_recipients/lead_recipients_corporate_fail';\r\n\r\nexport const LEAD_RECIPIENTS_CORPORATE_UPDATE_REQUEST = 'lead_recipients/lead_recipients_corporate_update_request';\r\nexport const LEAD_RECIPIENTS_CORPORATE_UPDATE_SUCCESS = 'lead_recipients/lead_recipients_corporate_update_success';\r\nexport const LEAD_RECIPIENTS_CORPORATE_UPDATE_FAIL = 'lead_recipients/lead_recipients_corporate_update_fail';\r\n\r\nexport const LEAD_RECIPIENTS_ADVANCED_SETTINGS_REQUEST = 'lead_recipients/lead_recipients_advanced_settings_request';\r\nexport const LEAD_RECIPIENTS_ADVANCED_SETTINGS_SUCCESS = 'lead_recipients/lead_recipients_advanced_settings_success';\r\nexport const LEAD_RECIPIENTS_ADVANCED_SETTINGS_FAIL = 'lead_recipients/lead_recipients_advanced_settings_fail';\r\n\r\nexport const LEAD_RECIPIENTS_USE_DIVISION_RECIPIENT_REQUEST = 'lead_recipients/lead_recipients_use_division_recipient_request';\r\nexport const LEAD_RECIPIENTS_USE_DIVISION_RECIPIENT_SUCCESS = 'lead_recipients/lead_recipients_use_division_recipient_success';\r\nexport const LEAD_RECIPIENTS_USE_DIVISION_RECIPIENT_FAIL = 'lead_recipients/lead_recipients_use_division_recipient_fail';\r\n","export const MANAGE_MPCS_STATUS_FACETS_REQUEST = 'bdxlive/manage_mpcs/status_facets_request';\r\nexport const MANAGE_MPCS_STATUS_FACETS_SUCCESS = 'bdxlive/manage_mpcs/status_facets_success';\r\nexport const MANAGE_MPCS_STATUS_FACETS_ERROR = 'bdxlive/manage_mpcs/status_facets_fail';\r\n\r\nexport const MANAGE_MPCS_STATES_FACETS_REQUEST = 'bdxlive/manage_mpcs/states_facets_request';\r\nexport const MANAGE_MPCS_STATES_FACETS_SUCCESS = 'bdxlive/manage_mpcs/states_facets_success';\r\nexport const MANAGE_MPCS_STATES_FACETS_ERROR = 'bdxlive/manage_mpcs/states_facets_fail';\r\n\r\nexport const MANAGE_MPCS_BRANDS_FACETS_REQUEST = 'bdxlive/manage_mpcs/brands_facets_request';\r\nexport const MANAGE_MPCS_BRANDS_FACETS_SUCCESS = 'bdxlive/manage_mpcs/brands_facets_success';\r\nexport const MANAGE_MPCS_BRANDS_FACETS_ERROR = 'bdxlive/manage_mpcs/brands_facets_fail';\r\n\r\nexport const MANAGE_MPCS_MARKETS_FACETS_REQUEST = 'bdxlive/manage_mpcs/markets_facets_request';\r\nexport const MANAGE_MPCS_MARKETS_FACETS_SUCCESS = 'bdxlive/manage_mpcs/markets_facets_success';\r\nexport const MANAGE_MPCS_MARKETS_FACETS_ERROR = 'bdxlive/manage_mpcs/markets_facets_fail';\r\n\r\nexport const MANAGE_MPCS_GRID_REQUEST = 'bdxlive/manage_mpcs/grid_request';\r\nexport const MANAGE_MPCS_GRID_SUCCESS = 'bdxlive/manage_mpcs/grid_success';\r\nexport const MANAGE_MPCS_GRID_ERROR = 'bdxlive/manage_mpcs/grid_fail';\r\n\r\nexport const MANAGE_MPCS_CLEAN_FACETS = 'bdxlive/manage_mpcs/clean_facets';\r\n","/**\r\n * Products.\r\n */\r\nexport const BILLING_PRODUCTS_FACETS_REQUEST = 'bdxlive/billing/products_facets_request';\r\nexport const BILLING_PRODUCTS_FACETS_SUCCESS = 'bdxlive/billing/products_facets_success';\r\nexport const BILLING_PRODUCTS_FACETS_ERROR = 'bdxlive/billing/products_facets_fail';\r\n\r\n/**\r\n * Customer IDs.\r\n */\r\nexport const BILLING_CUSTOMERS_FACETS_REQUEST = 'bdxlive/billing/customers_facets_request';\r\nexport const BILLING_CUSTOMERS_FACETS_SUCCESS = 'bdxlive/billing/customers_facets_success';\r\nexport const BILLING_CUSTOMERS_FACETS_ERROR = 'bdxlive/billing/customers_facets_fail';\r\n\r\n/**\r\n * Billing Cycles.\r\n */\r\nexport const BILLING_CYCLES_FACETS_REQUEST = 'bdxlive/billing/cycles_facets_request';\r\nexport const BILLING_CYCLES_FACETS_SUCCESS = 'bdxlive/billing/cycles_facets_success';\r\nexport const BILLING_CYCLES_FACETS_ERROR = 'bdxlive/billing/cycles_facets_fail';\r\n\r\n/**\r\n * Grid.\r\n */\r\nexport const BILLING_GRID_REQUEST = 'bdxlive/billing/grid_request';\r\nexport const BILLING_GRID_SUCCESS = 'bdxlive/billing/grid_success';\r\nexport const BILLING_GRID_FAIL = 'bdxlive/billing/grid_fail';\r\n\r\n/**\r\n * Counts.\r\n */\r\nexport const BILLING_COUNTS_REQUEST = 'bdxlive/billing/counts_request';\r\nexport const BILLING_COUNTS_SUCCESS = 'bdxlive/billing/counts_success';\r\nexport const BILLING_COUNTS_FAIL = 'bdxlive/billing/counts_fail';\r\n","export const AGENT_DETAIL_REQUEST = 'bdxlive/agent/info_request';\r\nexport const AGENT_DETAIL_SUCCESS = 'bdxlive/agent/info_success';\r\nexport const AGENT_DETAIL_FAIL = 'bdxlive/agent/info_fail';\r\n\r\nexport const AGENT_DETAIL_SAVE_REQUEST = 'bdxlive/agent/save_request';\r\nexport const AGENT_DETAIL_SAVE_SUCCESS = 'bdxlive/agent/save_success';\r\nexport const AGENT_DETAIL_SAVE_FAIL = 'bdxlive/agent/save_fail';\r\n","export const GREEN_PROGRAMS_REQUEST = 'bdxlive/green_program/green_programs_request';\r\nexport const GREEN_PROGRAMS_SUCCESS = 'bdxlive/green_program/green_programs_success';\r\nexport const GREEN_PROGRAMS_FAIL = 'bdxlive/green_program/green_programs_fail';\r\n","/* eslint-disable no-case-declarations */\r\n\r\nimport { produce } from 'immer';\r\n\r\nimport { MANAGE_COMMUNITIES_GRID_SUCCESS, MANAGE_COMMUNITIES_STATUS_FACETS_SUCCESS, MANAGE_COMMUNITIES_STATES_FACETS_SUCCESS, MANAGE_COMMUNITIES_BRANDS_FACETS_SUCCESS, MANAGE_COMMUNITIES_MARKETS_FACETS_SUCCESS, MANAGE_COMMUNITIES_CLEAN_FACETS } from '@/modules/landing-pages/community/@redux/types';\r\nimport { PLAN_LIBRARY_QUERY_SUCCESS } from '@/modules/content-libraries/plans/@redux/types';\r\nimport { CHANGE_HISTORY_SUCCESS } from '@/modules/global/components/bdx-change-history/@redux/types';\r\nimport { MANAGE_SPECS_CLEAN_FACETS, MANAGE_SPECS_GRID_SUCCESS, MANAGE_SPECS_MARKETS_FACETS_SUCCESS, MANAGE_SPECS_STATUS_FACETS_SUCCESS } from '@/modules/landing-pages/spec/@redux/types';\r\nimport { COMMUNITY_AVAILABLE_LIBRARY_PLANS_SUCCESS } from '@/modules/listings-detail/community-detail/@redux/planLibrary/types';\r\nimport { COMMUNIIES_QUICK_EDIT_SUCCESS, PLANS_QUICK_EDIT_SUCCESS, SPECS_QUICK_EDIT_SUCCESS } from '@/modules/quick-edit-table/redux/types';\r\nimport { BUILDER_GREEN_PROGRAMS_SUCCESS } from '@/modules/listings-detail/community-detail/@redux/marketing/types';\r\nimport { LIBRARY_EVENTS_SUCCESS, LIBRARY_EVENTS_COMMUNITIES_SUCCESS, LIBRARY_DIVISIONAL_EVENTS_SUCCESS } from '../../modules/content-libraries/events/@redux/types';\r\nimport { LIBRARY_PROMOS_SUCCESS, LIBRARY_PROMOS_COMMUNITIES_SUCCESS, LIBRARY_DIVISIONAL_PROMOS_SUCCESS } from '../../modules/content-libraries/promotions/@redux/types';\r\nimport { SEARCH_SUCCESS } from './types';\r\nimport { MANAGE_LEAD_RECIPIENTS_SUCCESS, LEAD_RECIPIENTS_STATES_FACETS_SUCCESS, LEAD_RECIPIENTS_STATUS_FACETS_SUCCESS } from '@/modules/lead-recipients/redux/types';\r\nimport { capitalize } from '@/lodash/';\r\nimport { MANAGE_MPCS_BRANDS_FACETS_SUCCESS, MANAGE_MPCS_CLEAN_FACETS, MANAGE_MPCS_GRID_SUCCESS, MANAGE_MPCS_MARKETS_FACETS_SUCCESS, MANAGE_MPCS_STATES_FACETS_SUCCESS, MANAGE_MPCS_STATUS_FACETS_SUCCESS } from '@/modules/landing-pages/mpc/@redux/types';\r\nimport { BILLING_COUNTS_SUCCESS, BILLING_CUSTOMERS_FACETS_SUCCESS, BILLING_CYCLES_FACETS_SUCCESS, BILLING_GRID_SUCCESS, BILLING_PRODUCTS_FACETS_SUCCESS } from '@/modules/billing/@redux/types';\r\nimport { AGENT_DETAIL_SUCCESS } from '@/modules/agent/@redux/types';\r\nimport { GREEN_PROGRAMS_SUCCESS } from '@/modules/content-libraries/green-program/@redux/types';\r\n\r\nconst handleMultipleEntities = (entities) => (entities instanceof Array ? entities.map(({ model }) => capitalize(model)).join('') : entities);\r\n\r\nexport const searchReducer = (state = {}, { type, data: { modelName: page, entity, total, result } = {} }) =>\r\n produce(state, (draft) => {\r\n switch (type) {\r\n case SEARCH_SUCCESS:\r\n draft[entity] = { result, total };\r\n break;\r\n case CHANGE_HISTORY_SUCCESS:\r\n draft.changeHistory = { ...draft.changeHistory, [handleMultipleEntities(entity)]: { result, total } };\r\n break;\r\n case LIBRARY_PROMOS_SUCCESS:\r\n case LIBRARY_EVENTS_SUCCESS:\r\n draft[page] = { ...draft[page] };\r\n\r\n const { results, count } = result[page];\r\n draft[page].results = { result: results, total: count };\r\n break;\r\n case LIBRARY_DIVISIONAL_PROMOS_SUCCESS:\r\n case LIBRARY_DIVISIONAL_EVENTS_SUCCESS:\r\n draft[page] = { ...draft[page] };\r\n draft[page].marketing = {};\r\n\r\n const { results: divisionals, count: divisionalsCount } = result[page];\r\n draft[page].marketing.divisionals = { result: divisionals, total: divisionalsCount };\r\n break;\r\n case LIBRARY_PROMOS_COMMUNITIES_SUCCESS:\r\n case LIBRARY_EVENTS_COMMUNITIES_SUCCESS:\r\n draft[page] = { ...(draft[page] ?? {}) };\r\n draft[page].slideOut = { ...(draft[page]?.slideOut ?? {}) };\r\n draft[page].slideOut.communities = result.communities;\r\n break;\r\n case PLAN_LIBRARY_QUERY_SUCCESS: {\r\n const { plans, planCount } = result;\r\n draft.planLibrary = { result: { plans }, total: planCount };\r\n break;\r\n }\r\n case COMMUNIIES_QUICK_EDIT_SUCCESS: {\r\n const { communities, communityCount } = result;\r\n draft.quickEditCommunities = { result: { communities }, total: communityCount };\r\n break;\r\n }\r\n case SPECS_QUICK_EDIT_SUCCESS: {\r\n const { specs, specCount } = result;\r\n draft.quickEditSpecs = { result: { specs }, total: specCount };\r\n break;\r\n }\r\n case PLANS_QUICK_EDIT_SUCCESS: {\r\n const { plans, planCount } = result;\r\n draft.quickEditPlans = { result: { plans }, total: planCount };\r\n break;\r\n }\r\n case COMMUNITY_AVAILABLE_LIBRARY_PLANS_SUCCESS: {\r\n const { plans, planCount } = result;\r\n draft.assignablePlanLibrary = { result: { plans }, total: planCount };\r\n break;\r\n }\r\n case MANAGE_LEAD_RECIPIENTS_SUCCESS: {\r\n const { communities, communityCount } = result;\r\n draft.leadRecipients = { ...draft.leadRecipients, result: { communities }, total: communityCount };\r\n break;\r\n }\r\n case MANAGE_COMMUNITIES_GRID_SUCCESS:\r\n draft.manageCommunities = { ...draft.manageCommunities, result: result.communities, total };\r\n break;\r\n case MANAGE_COMMUNITIES_STATUS_FACETS_SUCCESS:\r\n draft.manageCommunities = { ...draft.manageCommunities };\r\n draft.manageCommunities.facets = { ...draft.manageCommunities.facets };\r\n draft.manageCommunities.facets[entity] = result.communityCounts;\r\n break;\r\n case MANAGE_COMMUNITIES_STATES_FACETS_SUCCESS:\r\n case MANAGE_COMMUNITIES_BRANDS_FACETS_SUCCESS:\r\n case MANAGE_COMMUNITIES_MARKETS_FACETS_SUCCESS:\r\n draft.manageCommunities = { ...draft.manageCommunities };\r\n draft.manageCommunities.facets = { ...draft.manageCommunities.facets };\r\n draft.manageCommunities.facets[entity] = result[entity];\r\n break;\r\n case MANAGE_COMMUNITIES_CLEAN_FACETS:\r\n if (draft.manageCommunities) draft.manageCommunities.facets = {};\r\n break;\r\n case MANAGE_SPECS_CLEAN_FACETS:\r\n if (draft.manageSpecs) draft.manageSpecs.facets = {};\r\n break;\r\n case MANAGE_SPECS_GRID_SUCCESS:\r\n draft.manageSpecs = { ...draft.manageSpecs, result: result.specs, total };\r\n break;\r\n case MANAGE_SPECS_STATUS_FACETS_SUCCESS:\r\n draft.manageSpecs = { ...draft.manageSpecs };\r\n draft.manageSpecs.facets = { ...draft.manageSpecs.facets };\r\n draft.manageSpecs.facets[entity] = result.specCounts;\r\n break;\r\n case MANAGE_SPECS_MARKETS_FACETS_SUCCESS:\r\n draft.manageSpecs = { ...draft.manageSpecs };\r\n draft.manageSpecs.facets = { ...draft.manageSpecs.facets };\r\n draft.manageSpecs.facets[entity] = result.specMarkets;\r\n break;\r\n case BUILDER_GREEN_PROGRAMS_SUCCESS:\r\n const { greenPrograms } = result;\r\n draft.greenPrograms = { ...greenPrograms };\r\n break;\r\n case LEAD_RECIPIENTS_STATUS_FACETS_SUCCESS:\r\n case LEAD_RECIPIENTS_STATES_FACETS_SUCCESS:\r\n draft.leadRecipients = { ...draft.leadRecipients };\r\n draft.leadRecipients.facets = { ...draft.leadRecipients?.facets };\r\n draft.leadRecipients.facets[result.entity] = result[result.path];\r\n break;\r\n case MANAGE_MPCS_GRID_SUCCESS:\r\n draft.manageMpcs = { ...draft.manageMpcs, result: result.communities, total };\r\n break;\r\n case MANAGE_MPCS_STATUS_FACETS_SUCCESS:\r\n draft.manageMpcs = { ...draft.manageMpcs };\r\n draft.manageMpcs.facets = { ...draft.manageMpcs.facets };\r\n draft.manageMpcs.facets[entity] = result.communityCounts;\r\n break;\r\n case MANAGE_MPCS_STATES_FACETS_SUCCESS:\r\n case MANAGE_MPCS_BRANDS_FACETS_SUCCESS:\r\n case MANAGE_MPCS_MARKETS_FACETS_SUCCESS:\r\n draft.manageMpcs = { ...draft.manageMpcs };\r\n draft.manageMpcs.facets = { ...draft.manageMpcs.facets };\r\n draft.manageMpcs.facets[entity] = result[entity];\r\n break;\r\n case MANAGE_MPCS_CLEAN_FACETS:\r\n if (draft.manageMpcs) draft.manageMpcs.facets = {};\r\n break;\r\n case BILLING_GRID_SUCCESS:\r\n const { invoices, invoicesCounts } = result;\r\n draft.billing = { ...draft.billing, result: invoices, total: invoicesCounts };\r\n break;\r\n case BILLING_PRODUCTS_FACETS_SUCCESS:\r\n case BILLING_CUSTOMERS_FACETS_SUCCESS:\r\n case BILLING_CYCLES_FACETS_SUCCESS:\r\n draft.billing = { ...draft.billing };\r\n draft.billing.facets = { ...draft.billing.facets };\r\n draft.billing.facets[result.entity] = result[result.entity];\r\n break;\r\n case BILLING_COUNTS_SUCCESS:\r\n draft.billing = { ...draft.billing };\r\n draft.billing.counts = { ...draft.billing.counts };\r\n draft.billing.counts = result?.invoicesCounts?.types;\r\n break;\r\n case AGENT_DETAIL_SUCCESS:\r\n const { builderAgents } = result;\r\n draft.builderAgents = { ...draft.builderAgents, result: builderAgents };\r\n break;\r\n case GREEN_PROGRAMS_SUCCESS: {\r\n const { greenPrograms, greenProgramsCount } = result;\r\n draft.greenPrograms = { ...draft.greenPrograms, result: greenPrograms, total: greenProgramsCount };\r\n break;\r\n }\r\n }\r\n });\r\n","export const LOCATION_ZIP_REQUEST = 'bdxlive/location/zip_request';\r\nexport const LOCATION_ZIP_SUCCESS = 'bdxlive/location/zip_success';\r\nexport const LOCATION_ZIP_FAIL = 'bdxlive/location/zip_fail';\r\n","import { produce } from 'immer';\r\nimport { LOCATION_ZIP_SUCCESS } from './types';\r\n\r\nexport const locationsReducer = (state = {}, { type, data: { partnerId, zipLocations } = {} }) =>\r\n produce(state, (draft) => {\r\n let currentGeoIds = [];\r\n switch (type) {\r\n case LOCATION_ZIP_SUCCESS:\r\n if (!draft[partnerId]) draft[partnerId] = [];\r\n currentGeoIds = draft[partnerId].map((loc) => loc.geoLocationId);\r\n zipLocations = zipLocations.filter((loc) => !currentGeoIds.includes(loc.geoLocationId));\r\n draft[partnerId] = [...draft[partnerId], ...zipLocations];\r\n }\r\n });\r\n","import { gql, qif } from '@/utils/api/graph-helpers';\r\nimport { empty, JSONText, capitalize } from '@/utils/bdx-lodash-lite';\r\n\r\nexport const PlanLibraryQuery = ({ sort = {}, pageNumber = 0, pageSize = 50, builderId, divisionIds, communityId, status, search, baths, beds, garages }) => `\r\n{\r\n plans(\r\n top: ${pageSize || 50},\r\n page: ${pageNumber - 1 || 0},\r\n excludeListHub: true,\r\n libraryStatus: ${status},\r\n ${qif(builderId && empty(divisionIds), () => `builderId: ${builderId},`)}\r\n ${qif(!empty(divisionIds), () => `builderIds: [${divisionIds.join()}],`)}\r\n ${qif(communityId, () => `communityId: ${communityId},`)}\r\n ${qif(!empty(search), () => `search: ${JSONText(search)},`)}\r\n ${qif(!empty(baths), () => `baths: {in: ${JSON.stringify(baths)}},`)}\r\n ${qif(!empty(beds), () => `beds: {in: ${JSON.stringify(beds)}},`)}\r\n ${qif(!empty(garages), () => `garages: {in: ${JSON.stringify(garages.map((number) => [number, number + 0.5]).flat(Infinity))}},`)}\r\n ${qif(\r\n !empty(sort),\r\n () =>\r\n `\r\n sortBy:[${Object.entries(sort).map(\r\n ([path, direction]) => `\r\n ${\r\n path !== 'baths'\r\n ? `\r\n {\r\n field: ${capitalize(apiFieldToSortField(path))},\r\n order: ${direction === -1 ? 'Desc' : 'Asc'}\r\n }\r\n `\r\n : `\r\n {\r\n field: Baths,\r\n order: ${direction === -1 ? 'Desc' : 'Asc'}\r\n },\r\n {\r\n field: HalfBaths,\r\n order: ${direction === -1 ? 'Desc' : 'Asc'}\r\n }\r\n `\r\n }\r\n ,\r\n `\r\n )}]\r\n `\r\n )}\r\n\r\n ) {\r\n ${PlanLibraryFields(divisionIds)}\r\n }\r\n planCount(\r\n libraryStatus: ${status},\r\n ${qif(builderId && empty(divisionIds), () => `builderId: ${builderId},`)}\r\n ${qif(!empty(divisionIds), () => `builderIds: [${divisionIds.join()}],`)}\r\n ${qif(communityId, () => `communityId: ${communityId},`)}\r\n ${qif(!empty(search), () => `search: ${JSONText(search)},`)}\r\n ${qif(!empty(baths), () => `baths: {in: ${JSON.stringify(baths)}},`)}\r\n ${qif(!empty(beds), () => `beds: {in: ${JSON.stringify(beds)}},`)}\r\n ${qif(!empty(garages), () => `garages: {in: ${JSON.stringify(garages.map((number) => [number, number + 0.5]).flat(Infinity))}},`)}\r\n )\r\n}\r\n`;\r\n\r\nexport const PlanLibraryDelete = (plans) => `\r\nmutation{\r\n deletePlanLibrary(ids:[${plans.map((plan) => plan)}]){\r\n id\r\n deleted\r\n }\r\n}\r\n`;\r\n\r\nconst PlanLibraryFields = (divisionIds) => gql`\r\n id\r\n name\r\n number\r\n builder{\r\n builderId\r\n builderName\r\n parentBuilderId\r\n orgTypeCode\r\n parentBuilder{\r\n builderId\r\n builderName\r\n }\r\n }\r\n baths\r\n halfBaths\r\n beds\r\n garages\r\n squareFeet\r\n basePrice\r\n stories\r\n parentFlag\r\n ${!empty(divisionIds) ? `childPlansCount(builderIds: [${divisionIds}])` : 'childPlansCount'}\r\n`;\r\n\r\nconst apiFieldToSortField = (field) => {\r\n switch (field) {\r\n case 'id':\r\n return 'Id';\r\n case 'name':\r\n return 'Name';\r\n case 'number':\r\n return 'Number';\r\n case 'beds':\r\n return 'Beds';\r\n case 'garages':\r\n return 'Garages';\r\n case 'squareFeet':\r\n return 'SquareFeet';\r\n case 'basePrice':\r\n return 'BasePrice';\r\n case 'childPlansCount':\r\n return 'ChildCount';\r\n case 'builderName':\r\n return 'BuilderName';\r\n case 'stories':\r\n return 'Stories';\r\n }\r\n};\r\n","import { SET_PARAM, SET_PARAMS } from '@/redux/page-location/types';\r\nimport { STATUS, BATHS, BEDS, GARAGES, SEARCH, PAGE_NUMBER, PAGE_SIZE, SORT } from '@/app/constants/params';\r\nimport { PLAN_LIBRARY } from '@/app/app.location';\r\nimport { PlanLibraryQuery, PlanLibraryDelete } from './api';\r\nimport { PLAN_LIBRARY_QUERY_REQUEST, PLAN_LIBRARY_QUERY_SUCCESS, PLAN_LIBRARY_QUERY_FAIL, PLAN_LIBRARY_INSERT_REQUEST, PLAN_LIBRARY_INSERT_SUCCESS, PLAN_LIBRARY_INSERT_FAIL, PLAN_LIBRARY_DELETE_REQUEST, PLAN_LIBRARY_DELETE_SUCCESS, PLAN_LIBRARY_DELETE_FAIL, PLAN_LIBRARY_UPDATE_REQUEST, PLAN_LIBRARY_UPDATE_SUCCESS, PLAN_LIBRARY_UPDATE_FAIL } from './types';\r\nimport { modelRequestSchema } from '@/app/app.entities';\r\nimport { setParam, setParams } from '@/redux/page-location/actions';\r\nimport { Plan } from '@/app/models/Plan';\r\n\r\nexport const setPlanLibraryStatus = (status) => ({ type: SET_PARAM, name: STATUS, value: status, path: PLAN_LIBRARY.name });\r\nexport const setPlanLibraryBaths = (beds) => setParams({ [BATHS]: beds, [PAGE_NUMBER]: 1 });\r\nexport const setPlanLibraryBeds = (beds) => setParams({ [BEDS]: beds, [PAGE_NUMBER]: 1 });\r\nexport const setPlanLibraryGarages = (beds) => setParams({ [GARAGES]: beds, [PAGE_NUMBER]: 1 });\r\nexport const setPlanLibrarySearch = (search) => setParams({ [SEARCH]: search, [PAGE_NUMBER]: 1 });\r\nexport const setPlanLibraryPagination = (pageSize) => setParams({ [PAGE_SIZE]: pageSize, [PAGE_NUMBER]: 1 });\r\nexport const setPlanLibraryPageNumber = (pageNumber) => setParam(PAGE_NUMBER, pageNumber);\r\nexport const clearPlanLibraryFilters = () => ({ type: SET_PARAMS, params: { [BATHS]: [], [BEDS]: [], [GARAGES]: [] }, path: PLAN_LIBRARY.name });\r\nexport const setPlanLibrarySort = (sort) => setParams({ [SORT]: { ...sort } });\r\n\r\n/**\r\n * Redux action creators for querying plan library entities\r\n */\r\nexport const planLibraryQueryRequest = (requestArguments) => ({\r\n type: PLAN_LIBRARY_QUERY_REQUEST,\r\n entity: Plan().name,\r\n requestArguments,\r\n query: PlanLibraryQuery(requestArguments),\r\n meta: modelRequestSchema,\r\n});\r\nexport const planLibraryQuerySuccess = (entities, meta) => ({ type: PLAN_LIBRARY_QUERY_SUCCESS, data: { entities }, meta });\r\nexport const planLibraryQueryFail = (error) => ({ type: PLAN_LIBRARY_QUERY_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Redux action creators for inserting plan library entities\r\n */\r\nexport const planLibraryInsertRequest = ({ meta }) => ({ type: PLAN_LIBRARY_INSERT_REQUEST, meta });\r\nexport const planLibraryInsertSuccess = ({ meta }) => ({ type: PLAN_LIBRARY_INSERT_SUCCESS, meta });\r\nexport const planLibraryInsertFail = ({ meta }) => ({ type: PLAN_LIBRARY_INSERT_FAIL, meta });\r\n\r\n/**\r\n * Redux action creators for deleting plan library entities\r\n */\r\n\r\nexport const planLibraryDeleteRequest = (ids) => ({ type: PLAN_LIBRARY_DELETE_REQUEST, entity: Plan().name, query: PlanLibraryDelete(ids), meta: modelRequestSchema });\r\nexport const planLibraryDeleteSuccess = ({ meta }) => ({ type: PLAN_LIBRARY_DELETE_SUCCESS, meta });\r\nexport const planLibraryDeleteFail = ({ meta }) => ({ type: PLAN_LIBRARY_DELETE_FAIL, meta });\r\n\r\n/**\r\n * Redux action creators for updating plan library entities\r\n */\r\nexport const planLibraryUpdateRequest = ({ meta }) => ({ type: PLAN_LIBRARY_UPDATE_REQUEST, meta });\r\nexport const planLibraryUpdateSuccess = ({ meta }) => ({ type: PLAN_LIBRARY_UPDATE_SUCCESS, meta });\r\nexport const planLibraryUpdateFail = ({ meta }) => ({ type: PLAN_LIBRARY_UPDATE_FAIL, meta });\r\n","import { takeLatest, call, put } from 'redux-saga/effects';\r\nimport { getModels } from '@/redux/models/sagas';\r\nimport { requestModel } from '../../../../@redux/models/api';\r\nimport { PLAN_LIBRARY_QUERY_REQUEST, PLAN_LIBRARY_DELETE_REQUEST } from './types';\r\nimport { planLibraryQuerySuccess, planLibraryQueryFail, planLibraryDeleteSuccess, planLibraryDeleteFail } from './actions';\r\n\r\nexport function* getPlanLibrarySearch(success, fail, { requestArguments, query, meta }) {\r\n try {\r\n if (requestArguments.builderId) {\r\n const response = yield call(requestModel, query);\r\n yield put(success(response.data.Result, meta));\r\n } else {\r\n yield put(success({ plans: [], planCount: 0 }, meta));\r\n }\r\n } catch (error) {\r\n yield put(fail(error));\r\n }\r\n}\r\n\r\nexport const planLibrarySagas = [takeLatest(PLAN_LIBRARY_QUERY_REQUEST, getPlanLibrarySearch, planLibraryQuerySuccess, planLibraryQueryFail), takeLatest(PLAN_LIBRARY_DELETE_REQUEST, getModels, planLibraryDeleteSuccess, planLibraryDeleteFail)];\r\n","export const PLAN_LIBRARY_CHILD_PLANS_REQUEST = 'bdxlive/plan_library/plan_library_child_plans_request';\r\nexport const PLAN_LIBRARY_CHILD_PLANS_SUCCESS = 'bdxlive/plan_library/plan_library_child_plans_success';\r\nexport const PLAN_LIBRARY_CHILD_PLANS_FAIL = 'bdxlive/plan_library/plan_library_child_plans_fail';\r\n","import { empty } from '@/lodash/empty';\r\n\r\nconst communityFields = `\r\n id\r\n name\r\n salesOffice {\r\n state\r\n city\r\n }\r\n location {\r\n state\r\n city\r\n }\r\n`;\r\n\r\nconst basePlanFields = `\r\n id\r\n name\r\n parentFlag\r\n parentPlanId\r\n description\r\n community {\r\n ${communityFields}\r\n }\r\n builder {\r\n builderId\r\n builderName\r\n planLibraryType\r\n parentBuilder {\r\n builderId\r\n builderName\r\n planLibraryType\r\n }\r\n }\r\n inheritingInteriors\r\n inheritingElevations\r\n inheritingFloorPlans\r\n status\r\n baths\r\n beds\r\n garages\r\n basePrice\r\n stories\r\n squareFeet\r\n`;\r\n/**\r\n * Plan library child\r\n * @param { Object } requestArguments\r\n */\r\nexport const planLibraryChildPlans = ({ planId, divisionIds }) => `\r\nquery {\r\n plans(planId: ${planId}) {\r\n ${basePlanFields}\r\n childPlans(\r\n top: 500,\r\n status: [Active, Inactive],\r\n ${!empty(divisionIds) ? `builderIds: [${divisionIds}],` : ''}\r\n ) {\r\n ${basePlanFields}\r\n }\r\n }\r\n}\r\n`;\r\n","import { QueryRequestAction, QuerySuccessAction, QueryFailAction } from '@/redux/models/actions';\r\nimport { PLAN_LIBRARY_CHILD_PLANS_REQUEST, PLAN_LIBRARY_CHILD_PLANS_FAIL, PLAN_LIBRARY_CHILD_PLANS_SUCCESS } from './types';\r\nimport { planLibraryChildPlans } from './api';\r\n\r\n/**\r\n * Community Standard Amenities Requests\r\n */\r\nexport const planLibraryChildPlanRequest = QueryRequestAction(PLAN_LIBRARY_CHILD_PLANS_REQUEST, planLibraryChildPlans);\r\nexport const planLibraryChildPlanSuccess = QuerySuccessAction(PLAN_LIBRARY_CHILD_PLANS_SUCCESS);\r\nexport const planLibraryChildPlanFail = QueryFailAction(PLAN_LIBRARY_CHILD_PLANS_FAIL);\r\n","import { getModelsChannel } from '@/redux/models/sagas';\r\nimport { PLAN_LIBRARY_CHILD_PLANS_REQUEST } from './types';\r\nimport { planLibraryChildPlanSuccess, planLibraryChildPlanFail } from './actions';\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const assignedCommunitiesSagas = [\r\n /**\r\n * This generator listens to AGENT_COMMISSION_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(PLAN_LIBRARY_CHILD_PLANS_REQUEST, planLibraryChildPlanSuccess, planLibraryChildPlanFail),\r\n];\r\n","export const navPlanListViewQuery = ({ builderId, communityId, status, top = 250 } = {}) => `\r\n query {\r\n plans(\r\n libraryStatus: ${status},\r\n ${builderId !== undefined ? `builderId: ${builderId}` : ``},\r\n ${communityId !== undefined ? `communityId: ${communityId}` : ``},\r\n top: ${top}\r\n ) {\r\n ...Plan\r\n }\r\n }\r\n ${planTreeFragment}\r\n`;\r\n\r\nconst planTreeFragment = `\r\n fragment Plan on Plan {\r\n id\r\n name\r\n status\r\n }\r\n`;\r\n","/**\r\n * Left navigation: Plans tree view requests\r\n */\r\nexport const NAV_PLAN_LIST_VIEW_FILTER = 'bdxlive/plan_library/plan_library_parent/nav_plan_list_view_filter';\r\nexport const NAV_PLAN_LIST_VIEW_REQUEST = 'bdxlive/plan_library/plan_library_parent/nav_plan_list_view_request';\r\nexport const NAV_PLAN_LIST_VIEW_SUCCESS = 'bdxlive/plan_library/plan_library_parent/nav_plan_list_view_success';\r\nexport const NAV_PLAN_LIST_VIEW_FAIL = 'bdxlive/plan_library/plan_library_parent/nav_plan_list_view_fail';\r\n\r\n/**\r\n * Set local variable for entering context\r\n */\r\nexport const PARENT_PAGE_NAVIGATING_FLAG = 'bdxlive/plan_library/plan_library_parent/navigation_flag';\r\n","import { QueryRequestAction, QuerySuccessAction, QueryFailAction } from '@/redux/models/actions';\r\nimport { navPlanListViewQuery } from './api';\r\nimport { NAV_PLAN_LIST_VIEW_REQUEST, NAV_PLAN_LIST_VIEW_SUCCESS, NAV_PLAN_LIST_VIEW_FAIL, NAV_PLAN_LIST_VIEW_FILTER, PARENT_PAGE_NAVIGATING_FLAG } from './types';\r\n\r\n/**\r\n * Left navigation: Plans tree view requests\r\n */\r\nexport const navPlanListViewFilter = (filter) => ({ type: NAV_PLAN_LIST_VIEW_FILTER, data: { filter } });\r\nexport const navPlanListViewRequest = QueryRequestAction(NAV_PLAN_LIST_VIEW_REQUEST, navPlanListViewQuery);\r\nexport const navPlanListViewSuccess = QuerySuccessAction(NAV_PLAN_LIST_VIEW_SUCCESS);\r\nexport const navPlanListViewFail = QueryFailAction(NAV_PLAN_LIST_VIEW_FAIL);\r\n\r\n/**\r\n * Set local variable for entering context\r\n */\r\nexport const parentPageNavigationFlag = () => ({ type: PARENT_PAGE_NAVIGATING_FLAG });\r\n","import { navPlanTreeViewFail } from '@/modules/global/@redux/actions';\r\nimport { navPlanListViewSuccess } from './actions';\r\nimport { NAV_PLAN_LIST_VIEW_REQUEST } from './types';\r\nimport { takeLatest } from 'redux-saga/effects';\r\nimport { getModels } from '@/redux/models/sagas';\r\n\r\nexport const planParentSagas = [\r\n /**\r\n * This effect listens to NAV_PLAN_LIST_VIEW_REQUEST\r\n * and cancels the current operation on future request\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(NAV_PLAN_LIST_VIEW_REQUEST, getModels, navPlanListViewSuccess, navPlanTreeViewFail),\r\n];\r\n","import { capitalize, empty, JSONText } from '@/lodash/';\r\nimport apiClient from '@/utils/api/api';\r\n\r\nexport const CommunitiesSearch = (criteria) => Communities(criteria);\r\nconst Communities = ({ corporateId, divisionIds, search, onlyManageLocally, status, sorts, states, brands, markets, pageSize, pageNumber }) => `query {\r\n communities(\r\n ${SearchArguments(corporateId, divisionIds, search, onlyManageLocally, status, states, brands, markets)}\r\n ${!empty(sorts) ? `,sortBy: [${Object.entries(sorts).map(([path, direction]) => `{field: ${capitalize(path)}, order: ${direction === -1 ? 'Desc' : 'Asc'}}`)}]` : ''}\r\n ,page: ${pageNumber - 1 || 0}\r\n ,top: ${pageSize || 15}) {\r\n id\r\n name\r\n number\r\n status\r\n marketName\r\n builder {\r\n builderId\r\n builderName\r\n orgTypeCode\r\n partner {\r\n partnerId\r\n partnerName\r\n } \r\n parentBuilderId\r\n parentBuilder {\r\n builderId\r\n builderName\r\n }\r\n brands {\r\n brandId\r\n brandName\r\n }\r\n }\r\n channelDisplay {\r\n displayOnKiosk\r\n displayOnNhs\r\n displayOnNhsPro\r\n displayOnRdc\r\n displayOnSales\r\n displayOnWeb\r\n }\r\n salesOffice {\r\n city\r\n state\r\n zip\r\n }\r\n planCount(status: Active)\r\n specCount(status: Active)\r\n }\r\n communityCount(${SearchArguments(corporateId, divisionIds, search, onlyManageLocally, status, states, brands, markets)})\r\n}`;\r\n\r\nconst SearchArguments = (builderId, divisionIds, search, onlyManageLocally, status, states, brands, markets) => {\r\n return `${!empty(builderId) && empty(divisionIds) ? `builderId: ${builderId}` : ''}\r\n ${!empty(divisionIds) ? `,builderIds: [${Array.isArray(divisionIds) ? divisionIds.join() : divisionIds}]` : ''}\r\n ${onlyManageLocally ? ',onlyManagedLocally: true' : ''}\r\n ${!empty(search) ? `,search: ${JSONText(search)}` : ''}\r\n ${!empty(status) ? `,status: [${status}]` : ',status: [Approved, Inactive, Submitted]'}\r\n ${!empty(states) ? `,states: [${states}]` : ''}\r\n ${!empty(brands) ? `,brandIds: [${brands}]` : ''}\r\n ${!empty(markets) ? `,marketIds: [${markets}]` : ''}\r\n ,listingTypes: [Normal, BOYL]\r\n ,excludeCustom: true\r\n `;\r\n};\r\n\r\nexport const StatusFacetsSearch = (builderId) =>\r\n apiClient.post(null, {\r\n query: `query {\r\n builders(builderId: [${builderId}]) {\r\n communityCounts(listingTypes: [Normal, BOYL]) {\r\n approved\r\n inactive\r\n submitted\r\n archived\r\n disapproved\r\n managedLocally\r\n }\r\n }\r\n }`,\r\n });\r\n\r\nexport const StatesFacetsSearch = (builderId) =>\r\n apiClient.post(null, {\r\n query: `query {\r\n builders(builderId: [${builderId}]) {\r\n states\r\n }\r\n }`,\r\n });\r\n\r\nexport const BrandsFacetsSearch = (builderId) =>\r\n apiClient.post(null, {\r\n query: `query {\r\n builders(builderId: [${builderId}]) {\r\n communityCount\r\n brands {\r\n brandId\r\n brandName\r\n }\r\n }\r\n }`,\r\n });\r\n\r\nexport const MarketsFacetsSearch = (builderId) =>\r\n apiClient.post(null, {\r\n query: `query {\r\n builders(builderId: [${builderId}]) {\r\n markets {\r\n id\r\n name\r\n }\r\n }\r\n }`,\r\n });\r\n","import { MANAGE_COMMUNITIES_GRID_ERROR, MANAGE_COMMUNITIES_GRID_SUCCESS, MANAGE_COMMUNITIES_GRID_REQUEST, MANAGE_COMMUNITIES_STATUS_FACETS_REQUEST, MANAGE_COMMUNITIES_STATUS_FACETS_SUCCESS, MANAGE_COMMUNITIES_STATUS_FACETS_ERROR, MANAGE_COMMUNITIES_STATES_FACETS_REQUEST, MANAGE_COMMUNITIES_STATES_FACETS_ERROR, MANAGE_COMMUNITIES_STATES_FACETS_SUCCESS, MANAGE_COMMUNITIES_BRANDS_FACETS_SUCCESS, MANAGE_COMMUNITIES_BRANDS_FACETS_REQUEST, MANAGE_COMMUNITIES_BRANDS_FACETS_ERROR, MANAGE_COMMUNITIES_MARKETS_FACETS_REQUEST, MANAGE_COMMUNITIES_MARKETS_FACETS_SUCCESS, MANAGE_COMMUNITIES_MARKETS_FACETS_ERROR, MANAGE_COMMUNITIES_CLEAN_FACETS } from './types';\r\nimport { CommunitiesSearch } from './api';\r\n\r\nimport { STATUS, STATES, BRANDS, MARKETS, PAGE_NUMBER, PAGE_SIZE, SEARCH, SORT } from '@/app/constants/params';\r\nimport { modelRequestSchema } from '@/app/app.entities';\r\nimport { setParam, setParams } from '@/redux/page-location/actions';\r\nimport { empty } from '@/lodash/';\r\n\r\n/**\r\n * Communities\r\n */\r\nexport const manageCommunitiesGridRequest = (entity, criteria) => ({ type: MANAGE_COMMUNITIES_GRID_REQUEST, entity, query: CommunitiesSearch(criteria), meta: modelRequestSchema });\r\nexport const manageCommunitiesGridSuccess = (entity, communities, total, meta) => ({ type: MANAGE_COMMUNITIES_GRID_SUCCESS, data: { entity, entities: communities, total }, meta });\r\nexport const manageCommunitiesGridFail = (error) => ({ type: MANAGE_COMMUNITIES_GRID_ERROR, error: true, data: empty(error) ? { appMessage: 'Possible timeout error.', errorMessage: 'Possible timeout error.' } : error });\r\n\r\n/**\r\n * Status\r\n */\r\nexport const manageCommunitiesStatusFacetsRequest = (builderId) => ({ type: MANAGE_COMMUNITIES_STATUS_FACETS_REQUEST, data: builderId });\r\nexport const manageCommunitiesStatusFacetsSuccess = (facets, meta) => ({ type: MANAGE_COMMUNITIES_STATUS_FACETS_SUCCESS, data: { entity: STATUS, result: facets }, meta });\r\nexport const manageCommunitiesStatusFacetsFail = (error) => ({ type: MANAGE_COMMUNITIES_STATUS_FACETS_ERROR, error: true, data: empty(error) ? { appMessage: 'Possible timeout error.', errorMessage: 'Possible timeout error.' } : error });\r\n\r\n/**\r\n * States\r\n */\r\nexport const manageCommunitiesStatesFacetsRequest = (builderId) => ({ type: MANAGE_COMMUNITIES_STATES_FACETS_REQUEST, data: builderId });\r\nexport const manageCommunitiesStatesFacetsSuccess = (facets, meta) => ({ type: MANAGE_COMMUNITIES_STATES_FACETS_SUCCESS, data: { entity: STATES, result: facets }, meta });\r\nexport const manageCommunitiesStatesFacetsFail = (error) => ({ type: MANAGE_COMMUNITIES_STATES_FACETS_ERROR, error: true, data: empty(error) ? { appMessage: 'Possible timeout error.', errorMessage: 'Possible timeout error.' } : error });\r\n\r\n/**\r\n * Brands\r\n */\r\nexport const manageCommunitiesBrandsFacetsRequest = (builderId) => ({ type: MANAGE_COMMUNITIES_BRANDS_FACETS_REQUEST, data: builderId });\r\nexport const manageCommunitiesBrandsFacetsSuccess = (facets, meta) => ({ type: MANAGE_COMMUNITIES_BRANDS_FACETS_SUCCESS, data: { entity: BRANDS, result: facets }, meta });\r\nexport const manageCommunitiesBrandsFacetsFail = (error) => ({ type: MANAGE_COMMUNITIES_BRANDS_FACETS_ERROR, error: true, data: empty(error) ? { appMessage: 'Possible timeout error.', errorMessage: 'Possible timeout error.' } : error });\r\n\r\n/**\r\n * Markets\r\n */\r\nexport const manageCommunitiesMarketsFacetsRequest = (builderId) => ({ type: MANAGE_COMMUNITIES_MARKETS_FACETS_REQUEST, data: builderId });\r\nexport const manageCommunitiesMarketsFacetsSuccess = (facets, meta) => ({ type: MANAGE_COMMUNITIES_MARKETS_FACETS_SUCCESS, data: { entity: MARKETS, result: facets }, meta });\r\nexport const manageCommunitiesMarketsFacetsFail = (error) => ({ type: MANAGE_COMMUNITIES_MARKETS_FACETS_ERROR, error: true, data: empty(error) ? { appMessage: 'Possible timeout error.', errorMessage: 'Possible timeout error.' } : error });\r\n\r\n/**\r\n * Facets\r\n */\r\nexport const setManageCommunitiesSort = (sort) => setParams({ [SORT]: { ...sort } });\r\nexport const setManageCommunitiesSearch = (search) => setParams({ [SEARCH]: search, [PAGE_NUMBER]: 1 });\r\nexport const setManageCommunitiesPageNumber = (pageNumber) => setParam(PAGE_NUMBER, pageNumber);\r\nexport const setManageCommunitiesFacet = (facetName, facetValue) => setParams({ [facetName]: facetValue, [PAGE_NUMBER]: 1 });\r\nexport const setManageCommunitiesPagination = (pageSize) => setParams({ [PAGE_SIZE]: pageSize, [PAGE_NUMBER]: 1 });\r\n\r\nexport const cleanManageCommunitiesFacets = () => ({ type: MANAGE_COMMUNITIES_CLEAN_FACETS });\r\n","import { takeLatest, call, put } from 'redux-saga/effects';\r\n\r\nimport { requestModel } from '@/redux/models/api';\r\n\r\nimport { modelRequestSchema } from '@/app/app.entities';\r\nimport { StatesFacetsSearch, StatusFacetsSearch, BrandsFacetsSearch, MarketsFacetsSearch } from './api';\r\n\r\nimport { MANAGE_COMMUNITIES_GRID_REQUEST, MANAGE_COMMUNITIES_MARKETS_FACETS_REQUEST, MANAGE_COMMUNITIES_BRANDS_FACETS_REQUEST, MANAGE_COMMUNITIES_STATES_FACETS_REQUEST, MANAGE_COMMUNITIES_STATUS_FACETS_REQUEST } from './types';\r\nimport { manageCommunitiesStatesFacetsFail, manageCommunitiesStatesFacetsSuccess, manageCommunitiesGridFail, manageCommunitiesGridSuccess, manageCommunitiesBrandsFacetsFail, manageCommunitiesBrandsFacetsSuccess, manageCommunitiesStatusFacetsFail, manageCommunitiesStatusFacetsSuccess, manageCommunitiesMarketsFacetsFail, manageCommunitiesMarketsFacetsSuccess } from './actions';\r\nimport { uniqPrimitive } from '@/lodash/';\r\n\r\n/**\r\n * Handles the incoming facets information related to `status`.\r\n * This goes directly to the store and doesn't need to be normalized since it's on-the-fly data.\r\n */\r\nfunction* getStatusFacetsResults({ data: builderId }) {\r\n try {\r\n const response = yield call(StatusFacetsSearch, builderId);\r\n let { status } = {};\r\n\r\n if (response.data.Result.builders.length === 1) {\r\n status = response?.data?.Result?.builders?.[0];\r\n } else {\r\n status = {\r\n communityCounts: {\r\n approved: 0,\r\n inactive: 0,\r\n submitted: 0,\r\n archived: 0,\r\n disapproved: 0,\r\n managedLocally: 0,\r\n },\r\n };\r\n response.data.Result.builders.forEach((communityCount) => {\r\n status.communityCounts.approved += communityCount.communityCounts.approved || 0;\r\n status.communityCounts.inactive += communityCount.communityCounts.inactive || 0;\r\n status.communityCounts.submitted += communityCount.communityCounts.submitted || 0;\r\n status.communityCounts.archived += communityCount.communityCounts.archived || 0;\r\n status.communityCounts.disapproved += communityCount.communityCounts.disapproved || 0;\r\n status.communityCounts.managedLocally += communityCount.communityCounts.managedLocally || 0;\r\n });\r\n }\r\n\r\n yield put(manageCommunitiesStatusFacetsSuccess({ ...status }, modelRequestSchema));\r\n } catch (error) {\r\n yield put(manageCommunitiesStatusFacetsFail(error));\r\n }\r\n}\r\n\r\n/**\r\n * Handles the incoming facets information related to `states`.\r\n * This goes directly to the store and doesn't need to be normalized since it's on-the-fly data.\r\n */\r\nfunction* getStatesFacetsResults({ data: builderId }) {\r\n try {\r\n const response = yield call(StatesFacetsSearch, builderId);\r\n let state = response?.data?.Result?.builders?.[0]?.states;\r\n\r\n if (response?.data?.Result?.builders?.length > 1) {\r\n response.data.Result.builders.forEach((s) => {\r\n state = state.concat(s.states);\r\n });\r\n }\r\n const statesTotalCount = { states: uniqPrimitive(state) };\r\n yield put(manageCommunitiesStatesFacetsSuccess({ ...statesTotalCount }, modelRequestSchema));\r\n } catch (error) {\r\n yield put(manageCommunitiesStatesFacetsFail(error));\r\n }\r\n}\r\n\r\n/**\r\n * Handles the incoming facets information related to `brands`.\r\n * This goes directly to the store and doesn't need to be normalized since it's on-the-fly data.\r\n */\r\nfunction* getBrandsFacetsResults({ data: builderId }) {\r\n try {\r\n const response = yield call(BrandsFacetsSearch, builderId);\r\n let { brands, communityCount } = response?.data?.Result?.builders?.[0] || {};\r\n\r\n let brandsTotalCount = brands;\r\n if (response?.data?.Result?.builders?.length > 1) {\r\n let brandTotal = [];\r\n response.data.Result.builders.forEach((elem) => {\r\n brandTotal = brands.concat(elem.brands);\r\n communityCount += elem.communityCounts || 0;\r\n });\r\n brands = brandTotal.map((m) => m.brandId);\r\n\r\n brandsTotalCount = uniqPrimitive(brands).map((e) => brandTotal.find((element) => element.brandId === e));\r\n }\r\n\r\n /**\r\n * Only retrieve brands if the builder has any existing communities.\r\n */\r\n yield put(manageCommunitiesBrandsFacetsSuccess({ brands: communityCount ? brandsTotalCount : [] }, modelRequestSchema));\r\n } catch (error) {\r\n yield put(manageCommunitiesBrandsFacetsFail(error));\r\n }\r\n}\r\n\r\n/**\r\n * Handles the incoming facets information related to `markets`.\r\n * This goes directly to the store and doesn't need to be normalized since it's on-the-fly data.\r\n */\r\nfunction* getMarketsFacetsResults({ data: builderId }) {\r\n try {\r\n const response = yield call(MarketsFacetsSearch, builderId);\r\n let market = response?.data?.Result?.builders?.[0]?.markets;\r\n let marketTotalCount = { markets: market };\r\n if (response?.data?.Result?.builders?.length > 1) {\r\n let marketTotal = [];\r\n response.data.Result.builders.forEach((elem) => {\r\n marketTotal = market.concat(elem.markets);\r\n });\r\n market = marketTotal.map((m) => m.id);\r\n\r\n marketTotalCount = { markets: uniqPrimitive(market).map((e) => marketTotal.find((element) => element.id === e)) };\r\n }\r\n\r\n yield put(manageCommunitiesMarketsFacetsSuccess({ ...marketTotalCount }, modelRequestSchema));\r\n } catch (error) {\r\n yield put(manageCommunitiesMarketsFacetsFail(error));\r\n }\r\n}\r\n\r\n/**\r\n * Handles the incoming facets information related to `communities`.\r\n * Information here will be captured by the normalizr middleware.\r\n */\r\nfunction* getCommunitiesSearch(success, fail, { entity, query, meta }) {\r\n try {\r\n const response = yield call(requestModel, query);\r\n\r\n yield put(success(entity, response.data.Result, response.data.Result.communityCount, meta));\r\n } catch (error) {\r\n yield put(fail(error));\r\n }\r\n}\r\n\r\nexport const manageCommunitiesSagas = [\r\n /**\r\n * This effect listens to MANAGE_COMMUNITIES_FACETS_REQUEST\r\n * and cancels the current operation on future request.\r\n * @param { string } pattern action type to be listened to.\r\n * @param { function } saga operation to be executed.\r\n * @param { Array } args arguments to be passed to the started task.\r\n */\r\n takeLatest(MANAGE_COMMUNITIES_STATUS_FACETS_REQUEST, getStatusFacetsResults),\r\n takeLatest(MANAGE_COMMUNITIES_STATES_FACETS_REQUEST, getStatesFacetsResults),\r\n takeLatest(MANAGE_COMMUNITIES_BRANDS_FACETS_REQUEST, getBrandsFacetsResults),\r\n takeLatest(MANAGE_COMMUNITIES_MARKETS_FACETS_REQUEST, getMarketsFacetsResults),\r\n takeLatest(MANAGE_COMMUNITIES_GRID_REQUEST, getCommunitiesSearch, manageCommunitiesGridSuccess, manageCommunitiesGridFail),\r\n];\r\n","import { empty, JSONText } from '@/lodash/';\r\nimport apiClient from '../../../../utils/api/api';\r\n\r\nexport const CommunitiesSearch = (criteria) => Communities(criteria);\r\nconst Communities = ({ corporateId, divisionIds, search, onlyManageLocally, status, sorts, states, brands, markets, pageSize, pageNumber }) => `query {\r\n communities(\r\n ${SearchArguments(corporateId, divisionIds, search, onlyManageLocally, status, states, brands, markets)}\r\n ${!empty(sorts) ? `,sortBy: [${Object.entries(sorts).map(([path, direction]) => `{field: ${path}, order: ${direction === -1 ? 'Desc' : 'Asc'}}`)}]` : ''}\r\n ,page: ${pageNumber - 1 || 0}\r\n ,top: ${pageSize || 15}\r\n ,excludeCustom: true) {\r\n id\r\n name\r\n number\r\n status\r\n marketName\r\n childCommunitiesCount(status: Approved)\r\n builder {\r\n builderId\r\n builderName\r\n partner {\r\n partnerId\r\n partnerName\r\n } \r\n parentBuilderId\r\n parentBuilder {\r\n builderId\r\n builderName\r\n }\r\n brands {\r\n brandId\r\n brandName\r\n }\r\n }\r\n channelDisplay {\r\n displayOnKiosk\r\n displayOnNhs\r\n displayOnNhsPro\r\n displayOnRdc\r\n displayOnSales\r\n displayOnWeb\r\n }\r\n salesOffice {\r\n city\r\n state\r\n zip\r\n }\r\n }\r\n communityCount(${SearchArguments(corporateId, divisionIds, search, onlyManageLocally, status, states, brands, markets)})\r\n}`;\r\n\r\nconst SearchArguments = (builderId, divisionIds, search, onlyManageLocally, status, states, brands, markets) => {\r\n return `${!empty(builderId) && empty(divisionIds) ? `builderId: ${builderId}` : ''}\r\n ${!empty(divisionIds) ? `,builderIds: [${Array.isArray(divisionIds) ? divisionIds.join() : divisionIds}]` : ''}\r\n ${onlyManageLocally ? ',onlyManagedLocally: true' : ''}\r\n ${!empty(search) ? `,search: ${JSONText(search)}` : ''}\r\n ${!empty(status) ? `,status: [${status}]` : ',status: [Approved, Inactive, Submitted]'}\r\n ${!empty(states) ? `,states: [${states}]` : ''}\r\n ${!empty(brands) ? `,brandIds: [${brands}]` : ''}\r\n ${!empty(markets) ? `,marketIds: [${markets}]` : ''}\r\n ,listingTypes: [MPC]\r\n ,orgTypeCodes: [DEV]\r\n `;\r\n};\r\n\r\nexport const StatusFacetsSearch = (builderId) =>\r\n apiClient.post(null, {\r\n query: `query {\r\n builders(builderId: [${builderId}]) {\r\n communityCounts(listingTypes: [MPC], orgTypeCodes: [DEV]) {\r\n approved\r\n inactive\r\n submitted\r\n archived\r\n disapproved\r\n managedLocally\r\n }\r\n }\r\n }`,\r\n });\r\n\r\nexport const StatesFacetsSearch = (builderId) =>\r\n apiClient.post(null, {\r\n query: `query {\r\n builders(builderId: [${builderId}]) {\r\n states\r\n }\r\n }`,\r\n });\r\n\r\nexport const BrandsFacetsSearch = (builderId) =>\r\n apiClient.post(null, {\r\n query: `query {\r\n builders(builderId: [${builderId}]) {\r\n communityCount\r\n brands {\r\n brandId\r\n brandName\r\n }\r\n }\r\n }`,\r\n });\r\n\r\nexport const MarketsFacetsSearch = (builderId) =>\r\n apiClient.post(null, {\r\n query: `query {\r\n builders(builderId: [${builderId}]) {\r\n markets {\r\n id\r\n name\r\n }\r\n }\r\n }`,\r\n });\r\n","import { MANAGE_MPCS_GRID_ERROR, MANAGE_MPCS_GRID_SUCCESS, MANAGE_MPCS_GRID_REQUEST, MANAGE_MPCS_STATUS_FACETS_REQUEST, MANAGE_MPCS_STATUS_FACETS_SUCCESS, MANAGE_MPCS_STATUS_FACETS_ERROR, MANAGE_MPCS_STATES_FACETS_REQUEST, MANAGE_MPCS_STATES_FACETS_ERROR, MANAGE_MPCS_STATES_FACETS_SUCCESS, MANAGE_MPCS_BRANDS_FACETS_SUCCESS, MANAGE_MPCS_BRANDS_FACETS_REQUEST, MANAGE_MPCS_BRANDS_FACETS_ERROR, MANAGE_MPCS_MARKETS_FACETS_REQUEST, MANAGE_MPCS_MARKETS_FACETS_SUCCESS, MANAGE_MPCS_MARKETS_FACETS_ERROR, MANAGE_MPCS_CLEAN_FACETS } from './types';\r\nimport { SET_PARAMS, SET_PARAM } from '@/redux/page-location/types';\r\n\r\nimport { modelRequestSchema } from '@/app/app.entities';\r\nimport { STATUS, STATES, BRANDS, MARKETS, PAGE_NUMBER, PAGE_SIZE, SEARCH, SORT } from '@/app/constants/params';\r\nimport { CommunitiesSearch } from './api';\r\nimport { empty } from '@/lodash/';\r\n\r\nexport const manageMpcsStatusFacetsRequest = (builderId) => ({ type: MANAGE_MPCS_STATUS_FACETS_REQUEST, data: builderId });\r\nexport const manageMpcsStatusFacetsSuccess = (facets, meta) => ({ type: MANAGE_MPCS_STATUS_FACETS_SUCCESS, data: { entity: STATUS, result: facets }, meta });\r\nexport const manageMpcsStatusFacetsFail = (error) => ({ type: MANAGE_MPCS_STATUS_FACETS_ERROR, error: true, data: empty(error) ? { appMessage: 'Possible timeout error.', errorMessage: 'Possible timeout error.' } : error });\r\n\r\nexport const manageMpcsStatesFacetsRequest = (builderId) => ({ type: MANAGE_MPCS_STATES_FACETS_REQUEST, data: builderId });\r\nexport const manageMpcsStatesFacetsSuccess = (facets, meta) => ({ type: MANAGE_MPCS_STATES_FACETS_SUCCESS, data: { entity: STATES, result: facets }, meta });\r\nexport const manageMpcsStatesFacetsFail = (error) => ({ type: MANAGE_MPCS_STATES_FACETS_ERROR, error: true, data: empty(error) ? { appMessage: 'Possible timeout error.', errorMessage: 'Possible timeout error.' } : error });\r\n\r\nexport const manageMpcsBrandsFacetsRequest = (builderId) => ({ type: MANAGE_MPCS_BRANDS_FACETS_REQUEST, data: builderId });\r\nexport const manageMpcsBrandsFacetsSuccess = (facets, meta) => ({ type: MANAGE_MPCS_BRANDS_FACETS_SUCCESS, data: { entity: BRANDS, result: facets }, meta });\r\nexport const manageMpcsBrandsFacetsFail = (error) => ({ type: MANAGE_MPCS_BRANDS_FACETS_ERROR, error: true, data: empty(error) ? { appMessage: 'Possible timeout error.', errorMessage: 'Possible timeout error.' } : error });\r\n\r\nexport const manageMpcsMarketsFacetsRequest = (builderId) => ({ type: MANAGE_MPCS_MARKETS_FACETS_REQUEST, data: builderId });\r\nexport const manageMpcsMarketsFacetsSuccess = (facets, meta) => ({ type: MANAGE_MPCS_MARKETS_FACETS_SUCCESS, data: { entity: MARKETS, result: facets }, meta });\r\nexport const manageMpcsMarketsFacetsFail = (error) => ({ type: MANAGE_MPCS_MARKETS_FACETS_ERROR, error: true, data: empty(error) ? { appMessage: 'Possible timeout error.', errorMessage: 'Possible timeout error.' } : error });\r\n\r\nexport const manageMpcsGridRequest = (entity, criteria) => ({ type: MANAGE_MPCS_GRID_REQUEST, entity, query: CommunitiesSearch(criteria), meta: modelRequestSchema });\r\nexport const manageMpcsGridSuccess = (entity, communities, total, meta) => ({ type: MANAGE_MPCS_GRID_SUCCESS, data: { entity, entities: communities, total }, meta });\r\nexport const manageMpcsGridFail = (error) => ({ type: MANAGE_MPCS_GRID_ERROR, error: true, data: empty(error) ? { appMessage: 'Possible timeout error.', errorMessage: 'Possible timeout error.' } : error });\r\n\r\nexport const cleanManageMpcsFacets = () => ({ type: MANAGE_MPCS_CLEAN_FACETS });\r\nexport const setManageMpcsSort = (sort) => ({ type: SET_PARAMS, params: { [SORT]: { ...sort } } });\r\nexport const setManageMpcsFacet = (facetName, facetValue) => ({ type: SET_PARAMS, params: { [facetName]: facetValue, [PAGE_NUMBER]: 1 } });\r\nexport const setManageMpcsSearch = (search) => ({ type: SET_PARAMS, params: { [SEARCH]: search, [PAGE_NUMBER]: 1 } });\r\nexport const setManageMpcsPageNumber = (pageNumber) => ({ type: SET_PARAM, name: PAGE_NUMBER, value: pageNumber });\r\nexport const setManageMpcsPagination = (pageSize) => ({ type: SET_PARAMS, params: { [PAGE_SIZE]: pageSize, [PAGE_NUMBER]: 1 } });\r\n","import { takeLatest, call, put } from 'redux-saga/effects';\r\n\r\nimport { MANAGE_MPCS_GRID_REQUEST, MANAGE_MPCS_MARKETS_FACETS_REQUEST, MANAGE_MPCS_BRANDS_FACETS_REQUEST, MANAGE_MPCS_STATES_FACETS_REQUEST, MANAGE_MPCS_STATUS_FACETS_REQUEST } from './types';\r\nimport { manageMpcsStatesFacetsFail, manageMpcsStatesFacetsSuccess, manageMpcsGridFail, manageMpcsGridSuccess, manageMpcsBrandsFacetsFail, manageMpcsBrandsFacetsSuccess, manageMpcsStatusFacetsFail, manageMpcsStatusFacetsSuccess, manageMpcsMarketsFacetsFail, manageMpcsMarketsFacetsSuccess } from './actions';\r\n\r\nimport { requestModel } from '@/redux/models/api';\r\nimport { modelRequestSchema } from '@/app/app.entities';\r\nimport { StatesFacetsSearch, StatusFacetsSearch, BrandsFacetsSearch, MarketsFacetsSearch } from './api';\r\nimport { uniqPrimitive } from '@/lodash/';\r\n\r\n/**\r\n * Handles the incoming facets information related to `status`.\r\n * This goes directly to the store and doesn't need to be normalized since it's on-the-fly data.\r\n */\r\nfunction* getStatusFacetsResults({ data: builderId }) {\r\n try {\r\n const response = yield call(StatusFacetsSearch, builderId);\r\n let { status } = {};\r\n\r\n if (response.data.Result.builders.length === 1) {\r\n status = response?.data?.Result?.builders?.[0];\r\n } else {\r\n status = {\r\n communityCounts: {\r\n approved: 0,\r\n inactive: 0,\r\n submitted: 0,\r\n archived: 0,\r\n disapproved: 0,\r\n managedLocally: 0,\r\n },\r\n };\r\n response.data.Result.builders.forEach((communityCount) => {\r\n status.communityCounts.approved += communityCount.communityCounts.approved || 0;\r\n status.communityCounts.inactive += communityCount.communityCounts.inactive || 0;\r\n status.communityCounts.submitted += communityCount.communityCounts.submitted || 0;\r\n status.communityCounts.archived += communityCount.communityCounts.archived || 0;\r\n status.communityCounts.disapproved += communityCount.communityCounts.disapproved || 0;\r\n status.communityCounts.managedLocally += communityCount.communityCounts.managedLocally || 0;\r\n });\r\n }\r\n\r\n yield put(manageMpcsStatusFacetsSuccess({ ...status }, modelRequestSchema));\r\n } catch (error) {\r\n yield put(manageMpcsStatusFacetsFail(error));\r\n }\r\n}\r\n\r\n/**\r\n * Handles the incoming facets information related to `states`.\r\n * This goes directly to the store and doesn't need to be normalized since it's on-the-fly data.\r\n */\r\nfunction* getStatesFacetsResults({ data: builderId }) {\r\n try {\r\n const response = yield call(StatesFacetsSearch, builderId);\r\n let state = response?.data?.Result?.builders?.[0]?.states;\r\n\r\n if (response?.data?.Result?.builders?.length > 1) {\r\n response.data.Result.builders.forEach((s) => {\r\n state = state.concat(s.states);\r\n });\r\n }\r\n const statesTotalCount = { states: uniqPrimitive(state) };\r\n yield put(manageMpcsStatesFacetsSuccess({ ...statesTotalCount }, modelRequestSchema));\r\n } catch (error) {\r\n yield put(manageMpcsStatesFacetsFail(error));\r\n }\r\n}\r\n\r\n/**\r\n * Handles the incoming facets information related to `brands`.\r\n * This goes directly to the store and doesn't need to be normalized since it's on-the-fly data.\r\n */\r\nfunction* getBrandsFacetsResults({ data: builderId }) {\r\n try {\r\n const response = yield call(BrandsFacetsSearch, builderId);\r\n let { brands, communityCount } = response?.data?.Result?.builders?.[0] || {};\r\n\r\n let brandsTotalCount = brands;\r\n if (response?.data?.Result?.builders?.length > 1) {\r\n let brandTotal = [];\r\n response.data.Result.builders.forEach((elem) => {\r\n brandTotal = brands.concat(elem.brands);\r\n communityCount += elem.communityCounts || 0;\r\n });\r\n brands = brandTotal.map((m) => m.brandId);\r\n\r\n brandsTotalCount = uniqPrimitive(brands).map((e) => brandTotal.find((element) => element.brandId === e));\r\n }\r\n\r\n /**\r\n * Only retrieve brands if the builder has any existing communities.\r\n */\r\n yield put(manageMpcsBrandsFacetsSuccess({ brands: communityCount ? brandsTotalCount : [] }, modelRequestSchema));\r\n } catch (error) {\r\n yield put(manageMpcsBrandsFacetsFail(error));\r\n }\r\n}\r\n\r\n/**\r\n * Handles the incoming facets information related to `markets`.\r\n * This goes directly to the store and doesn't need to be normalized since it's on-the-fly data.\r\n */\r\nfunction* getMarketsFacetsResults({ data: builderId }) {\r\n try {\r\n const response = yield call(MarketsFacetsSearch, builderId);\r\n let market = response?.data?.Result?.builders?.[0]?.markets;\r\n let marketTotalCount = { markets: market };\r\n if (response?.data?.Result?.builders?.length > 1) {\r\n let marketTotal = [];\r\n response.data.Result.builders.forEach((elem) => {\r\n marketTotal = market.concat(elem.markets);\r\n });\r\n market = marketTotal.map((m) => m.id);\r\n\r\n marketTotalCount = { markets: uniqPrimitive(market).map((e) => marketTotal.find((element) => element.id === e)) };\r\n }\r\n\r\n yield put(manageMpcsMarketsFacetsSuccess({ ...marketTotalCount }, modelRequestSchema));\r\n } catch (error) {\r\n yield put(manageMpcsMarketsFacetsFail(error));\r\n }\r\n}\r\n\r\n/**\r\n * Handles the incoming facets information related to `communities`.\r\n * Information here will be captured by the normalizr middleware.\r\n */\r\nfunction* getCommunitiesSearch(success, fail, { entity, query, meta }) {\r\n try {\r\n const response = yield call(requestModel, query);\r\n\r\n yield put(success(entity, response.data.Result, response.data.Result.communityCount, meta));\r\n } catch (error) {\r\n yield put(fail(error));\r\n }\r\n}\r\n\r\nexport const manageMpcsSagas = [\r\n /**\r\n * This effect listens to MANAGE_MPCS_FACETS_REQUEST\r\n * and cancels the current operation on future request.\r\n * @param { string } pattern action type to be listened to.\r\n * @param { function } saga operation to be executed.\r\n * @param { Array } args arguments to be passed to the started task.\r\n */\r\n takeLatest(MANAGE_MPCS_STATUS_FACETS_REQUEST, getStatusFacetsResults),\r\n takeLatest(MANAGE_MPCS_STATES_FACETS_REQUEST, getStatesFacetsResults),\r\n takeLatest(MANAGE_MPCS_BRANDS_FACETS_REQUEST, getBrandsFacetsResults),\r\n takeLatest(MANAGE_MPCS_MARKETS_FACETS_REQUEST, getMarketsFacetsResults),\r\n takeLatest(MANAGE_MPCS_GRID_REQUEST, getCommunitiesSearch, manageMpcsGridSuccess, manageMpcsGridFail),\r\n];\r\n","import { empty, JSONText, capitalize, deepCompare } from '@/lodash/';\r\nimport apiClient from '@/utils/api/api';\r\n\r\nexport const SpecsSearch = (criteria) => Specs(criteria);\r\nconst Specs = ({ corporateId, divisionIds, communityId, search, status, sorts, markets, pageSize, pageNumber, moveInDate }) => `query {\r\n specs(\r\n ${SearchArguments(corporateId, divisionIds, communityId, moveInDate, search, status, markets)}\r\n ${!empty(sorts) ? `,sortBy: [${Object.entries(sorts).map(([path, direction]) => `{field: ${capitalize(path)}, order: ${direction === -1 ? 'Desc' : 'Asc'}}`)}]` : ''}\r\n ,page: ${pageNumber - 1 || 0}\r\n ,top: ${pageSize || 15}) {\r\n id\r\n number\r\n status\r\n type\r\n price\r\n streetAddress1\r\n moveInDate\r\n plan {\r\n id\r\n name\r\n }\r\n community {\r\n id\r\n name\r\n number\r\n market {\r\n name\r\n }\r\n }\r\n builder {\r\n builderId\r\n builderName\r\n orgTypeCode\r\n }\r\n }\r\n specCount(${SearchArguments(corporateId, divisionIds, communityId, moveInDate, search, status, markets)})\r\n}`;\r\n\r\nconst SearchArguments = (builderId, divisionIds, communityId, moveInDate, search, status, markets) => {\r\n return `${!empty(builderId) && empty(divisionIds) ? `builderId: ${builderId}` : ''}\r\n ${!empty(divisionIds) ? `,builderIds: [${Array.isArray(divisionIds) ? divisionIds.join() : divisionIds}]` : ''}\r\n ${!empty(communityId) ? `,communityId: ${communityId}` : ''}\r\n ${prepareMoveInDate(moveInDate)}\r\n ${!empty(search) ? `,search: ${JSONText(search)}` : ''}\r\n ${!empty(status) ? `,status: [${status}]` : ',status: [Active, Inactive]'}\r\n ${!empty(markets) ? `,marketIds: [${markets}]` : ''}\r\n `;\r\n};\r\n\r\nexport const StatusFacetsSearch = (builderId) =>\r\n apiClient.post(null, {\r\n query: `query {\r\n builders(builderId: [${builderId}]) {\r\n specCounts {\r\n active\r\n inactive\r\n }\r\n }\r\n }`,\r\n });\r\n\r\nexport const MarketsFacetsSearch = (builderId) =>\r\n apiClient.post(null, {\r\n query: `query {\r\n builders(builderId: [${builderId}]) {\r\n specMarkets(specStatus: [Active, Inactive]) {\r\n id\r\n name\r\n }\r\n }\r\n }`,\r\n });\r\n\r\nconst prepareMoveInDate = ({ start, end } = {}) => {\r\n if (!empty(start) && !empty(end)) {\r\n if (deepCompare(start, end)) {\r\n return `,moveInDate: { eq: \"${start}\" }`;\r\n }\r\n return `,moveInDate: { gte: \"${start}\", lte: \"${end}\" }`;\r\n }\r\n return '';\r\n};\r\n","import { MANAGE_SPECS_GRID_ERROR, MANAGE_SPECS_GRID_SUCCESS, MANAGE_SPECS_GRID_REQUEST, MANAGE_SPECS_STATUS_FACETS_REQUEST, MANAGE_SPECS_STATUS_FACETS_SUCCESS, MANAGE_SPECS_STATUS_FACETS_ERROR, MANAGE_SPECS_MARKETS_FACETS_REQUEST, MANAGE_SPECS_MARKETS_FACETS_SUCCESS, MANAGE_SPECS_MARKETS_FACETS_ERROR, MANAGE_SPECS_CLEAN_FACETS } from './types';\r\nimport { SpecsSearch } from './api';\r\n\r\nimport { STATUS, MARKETS, PAGE_NUMBER, PAGE_SIZE, SEARCH, SORT, MOVEINDATE } from '@/app/constants/params';\r\nimport { setParam, setParams } from '@/redux/page-location/actions';\r\nimport { modelRequestSchema } from '@/app/app.entities';\r\nimport { empty } from '@/lodash/';\r\n\r\n/**\r\n * Specs\r\n */\r\nexport const manageSpecsGridRequest = (entity, criteria) => ({ type: MANAGE_SPECS_GRID_REQUEST, entity, query: SpecsSearch(criteria), meta: modelRequestSchema });\r\nexport const manageSpecsGridSuccess = (entity, communities, total, meta) => ({ type: MANAGE_SPECS_GRID_SUCCESS, data: { entity, entities: communities, total }, meta });\r\nexport const manageSpecsGridFail = (error) => ({ type: MANAGE_SPECS_GRID_ERROR, error: true, data: empty(error) ? { appMessage: 'Possible timeout error.', errorMessage: 'Possible timeout error.' } : error });\r\n\r\n/**\r\n * Status\r\n */\r\nexport const manageSpecsStatusFacetsRequest = (builderId) => ({ type: MANAGE_SPECS_STATUS_FACETS_REQUEST, data: builderId });\r\nexport const manageSpecsStatusFacetsSuccess = (facets, meta) => ({ type: MANAGE_SPECS_STATUS_FACETS_SUCCESS, data: { entity: STATUS, result: facets }, meta });\r\nexport const manageSpecsStatusFacetsFail = (error) => ({ type: MANAGE_SPECS_STATUS_FACETS_ERROR, error: true, data: empty(error) ? { appMessage: 'Possible timeout error.', errorMessage: 'Possible timeout error.' } : error });\r\n\r\n/**\r\n * Markets\r\n */\r\nexport const manageSpecsMarketsFacetsRequest = (builderId) => ({ type: MANAGE_SPECS_MARKETS_FACETS_REQUEST, data: builderId });\r\nexport const manageSpecsMarketsFacetsSuccess = (facets, meta) => ({ type: MANAGE_SPECS_MARKETS_FACETS_SUCCESS, data: { entity: MARKETS, result: facets }, meta });\r\nexport const manageSpecsMarketsFacetsFail = (error) => ({ type: MANAGE_SPECS_MARKETS_FACETS_ERROR, error: true, data: empty(error) ? { appMessage: 'Possible timeout error.', errorMessage: 'Possible timeout error.' } : error });\r\n\r\n/**\r\n * Facets\r\n */\r\nexport const setManageSpecsMoveIndate = (moveInDate) => setParam(MOVEINDATE, moveInDate);\r\nexport const setManageSpecsFacet = (facetName, facetValue) => setParams({ [facetName]: facetValue, [PAGE_NUMBER]: 1 });\r\nexport const setManageSpecsSearch = (search) => setParam(SEARCH, search);\r\nexport const setManageSpecsSort = (sort) => setParams({ [SORT]: { ...sort } });\r\nexport const setManageSpecsPageNumber = (pageNumber) => setParam(PAGE_NUMBER, pageNumber);\r\nexport const setManageSpecsPagination = (pageSize) => setParams({ [PAGE_SIZE]: pageSize, [PAGE_NUMBER]: 1 });\r\n\r\nexport const cleanManageSpecsFacets = () => ({ type: MANAGE_SPECS_CLEAN_FACETS });\r\n","import { takeLatest, call, put } from 'redux-saga/effects';\r\n\r\nimport { requestModel } from '@/redux/models/api';\r\n\r\nimport { modelRequestSchema } from '@/app/app.entities';\r\nimport { StatusFacetsSearch, MarketsFacetsSearch } from './api';\r\n\r\nimport { MANAGE_SPECS_GRID_REQUEST, MANAGE_SPECS_MARKETS_FACETS_REQUEST, MANAGE_SPECS_STATUS_FACETS_REQUEST } from './types';\r\nimport { manageSpecsGridFail, manageSpecsGridSuccess, manageSpecsStatusFacetsFail, manageSpecsStatusFacetsSuccess, manageSpecsMarketsFacetsFail, manageSpecsMarketsFacetsSuccess } from './actions';\r\nimport { uniqPrimitive } from '@/lodash/';\r\n\r\n/**\r\n * Handles the incoming facets information related to `status`.\r\n * This goes directly to the store and doesn't need to be normalized since it's on-the-fly data.\r\n */\r\nfunction* getStatusFacetsResults({ data: builderId }) {\r\n try {\r\n const response = yield call(StatusFacetsSearch, builderId);\r\n let { status } = {};\r\n\r\n if (response.data.Result.builders.length === 1) {\r\n status = response?.data?.Result?.builders?.[0];\r\n } else {\r\n status = {\r\n specCounts: {\r\n active: 0,\r\n inactive: 0,\r\n },\r\n };\r\n response.data.Result.builders.forEach((specCount) => {\r\n status.specCounts.active += specCount.specCounts.active || 0;\r\n status.specCounts.inactive += specCount.specCounts.inactive || 0;\r\n });\r\n }\r\n yield put(manageSpecsStatusFacetsSuccess({ ...status }, modelRequestSchema));\r\n } catch (error) {\r\n yield put(manageSpecsStatusFacetsFail(error));\r\n }\r\n}\r\n\r\n/**\r\n * Handles the incoming facets information related to `markets`.\r\n * This goes directly to the store and doesn't need to be normalized since it's on-the-fly data.\r\n */\r\nfunction* getMarketsFacetsResults({ data: builderId }) {\r\n try {\r\n const response = yield call(MarketsFacetsSearch, builderId);\r\n\r\n let market = response?.data?.Result?.builders?.[0]?.specMarkets;\r\n let marketTotalCount = { specMarkets: market };\r\n if (response?.data?.Result?.builders?.length > 1) {\r\n let marketTotal = [];\r\n response.data.Result.builders.forEach((elem) => {\r\n marketTotal = market.concat(elem.specMarkets);\r\n });\r\n market = marketTotal.map((m) => m.id);\r\n\r\n marketTotalCount = { specMarkets: uniqPrimitive(market).map((e) => marketTotal.find((element) => element.id === e)) };\r\n }\r\n\r\n yield put(manageSpecsMarketsFacetsSuccess({ ...marketTotalCount }, modelRequestSchema));\r\n } catch (error) {\r\n yield put(manageSpecsMarketsFacetsFail(error));\r\n }\r\n}\r\n\r\n/**\r\n * Handles the incoming facets information related to `specs`.\r\n * Information here will be captured by the normalizr middleware.\r\n */\r\nfunction* getSpecsSearch(success, fail, { entity, query, meta }) {\r\n try {\r\n const response = yield call(requestModel, query);\r\n\r\n yield put(success(entity, response.data.Result, response.data.Result.specCount, meta));\r\n } catch (error) {\r\n yield put(fail(error));\r\n }\r\n}\r\n\r\nexport const manageSpecsSagas = [\r\n /**\r\n * This effect listens to MANAGE_SPECS_FACETS_REQUEST\r\n * and cancels the current operation on future request.\r\n * @param { string } pattern action type to be listened to.\r\n * @param { function } saga operation to be executed.\r\n * @param { Array } args arguments to be passed to the started task.\r\n */\r\n takeLatest(MANAGE_SPECS_STATUS_FACETS_REQUEST, getStatusFacetsResults),\r\n takeLatest(MANAGE_SPECS_MARKETS_FACETS_REQUEST, getMarketsFacetsResults),\r\n takeLatest(MANAGE_SPECS_GRID_REQUEST, getSpecsSearch, manageSpecsGridSuccess, manageSpecsGridFail),\r\n];\r\n","/**\r\n * Helper importings\r\n */\r\nimport apiClient from '../../utils/api/api';\r\n\r\n/**\r\n * API request\r\n * This request is based on GraphQLQuery Model which allows to build request\r\n * programmatically and then generate the resulting request\r\n * @param {GraphQLQuery} mutation graphql query definition\r\n */\r\nexport const commitEntity = (args) => {\r\n let config = null;\r\n\r\n if (args instanceof FormData) {\r\n config = { headers: { 'Content-Type': 'multipart/form-data' } };\r\n }\r\n\r\n // when we are doing masive bulks updates, increse the timeout setting\r\n if (args.split?.('id:')?.length > 40) {\r\n if (!config) config = {};\r\n config.timeout = 120000; // 2 mins\r\n }\r\n\r\n return apiClient.post(null, args instanceof FormData ? args : { query: args }, config, true);\r\n};\r\n","/**\r\n * Helper Importings\r\n */\r\nimport { call, put, actionChannel, take, all } from 'redux-saga/effects';\r\nimport { commitEntity } from './api';\r\nimport { FormMutationFail, FormMutationSuccess, saveEntity } from './actions';\r\nimport { FORM_SAVE_REQUEST } from './types';\r\nimport { empty, plural, isArray } from '@/lodash';\r\n\r\n/**\r\n * This Saga is incharged of performing GraphQLQuery calls to the API\r\n * and handling the response\r\n *\r\n * @param { function } success success action to be executed\r\n * @param { function } fail fail action to be executed\r\n * @param { GraphQlQuery } action.query query to be executed\r\n * @param { Object } action.meta action additional data containing the schema\r\n */\r\nexport function* mutateModels(success, fail, { formData, mutation, data: { id } = {}, meta, noEntity }, continueWith, runBeforeSuccess) {\r\n try {\r\n const mutationData = formData || mutation;\r\n // Commit entity to the server\r\n if (mutationData) {\r\n const response = yield call(commitEntity, mutationData);\r\n\r\n if (runBeforeSuccess) {\r\n yield put(runBeforeSuccess(response.data.Result, meta));\r\n }\r\n\r\n yield put(success(response.data.Result, meta, id));\r\n\r\n // On success dispatch the respective action\r\n // This will be captured by normalizr middleware\r\n // Generated IDs of new entities have letters and need to avoid getting into this if\r\n if (id && meta.model && !noEntity) {\r\n yield put(saveEntity(id, meta.model));\r\n }\r\n if (continueWith) {\r\n yield put(continueWith(response.data.Result, meta));\r\n }\r\n }\r\n } catch (error) {\r\n // On fail dispatch the respective action\r\n yield put(fail(error, id, meta));\r\n }\r\n}\r\n\r\n/**\r\n * Generic saga to handle save mutations for any entity\r\n *\r\n * This Saga recibes a object with all the entities with changes to be saved in this format:\r\n * {\r\n * entityType1: {\r\n * id1: { Changes } // an object with the fields that changed\r\n * id2: { Changes }\r\n * },\r\n * entityType2: {\r\n * id1: { Changes } // an object with the fields that changed\r\n * id2: { Changes }\r\n * }\r\n *\r\n * From that and the list of models (/app/models) definition, create the mutations for Graphql (from the queries.save property (all models defines the save query construction function))\r\n * } */\r\n\r\nexport function* formMutateModels(success, fail, { entities, meta: { models, options } }, continueWith, runBeforeSuccess) {\r\n let formDataIndex = 0;\r\n const mapData = {};\r\n const variables = {};\r\n const files = [];\r\n let filesParams = '';\r\n const formData = new FormData();\r\n\r\n try {\r\n // Commit entity to the server\r\n if (!empty(entities)) {\r\n // transform the entities and models in graphql queries to execute, using each model save query (property that describes each model)\r\n const removeMutationUpperLevel = (mutation) => mutation.substring(0, mutation.lastIndexOf('}')).replace('mutation {', '');\r\n const reformatMutationString = (mutation) => mutation?.replace(/(\\r\\n|\\n|\\r)/gm, '')?.replace(/ {2}/g, '');\r\n\r\n const mutations = Object.keys(entities).map((modelName) =>\r\n Object.keys(entities[modelName]).map((id) => {\r\n // exclude entities mutation generation if dont have a save mutation property or they were added and then deleted\r\n if (models[modelName]?.mutations?.save && !(entities[modelName][id].added && entities[modelName][id].deleted)) {\r\n const returnBasicFields = Object.keys(entities[modelName]).length > 1;\r\n const isBulkUpdate = Object.keys(entities[modelName]).length > 10; // in case it is a masive update like bulk for prices, return just the price updated field for performance at the api side\r\n const mutation = reformatMutationString(models[modelName]?.mutations?.save?.(entities[modelName][id], { returnBasicFields, isBulkUpdate }));\r\n const entityHasFormData = !empty(entities[modelName][id].formData);\r\n\r\n // if the entity has a file, start constructing the formdata Object needed to send files to API\r\n if (entityHasFormData) {\r\n filesParams += `$file${id}: Upload,`;\r\n mapData[formDataIndex.toString()] = [`variables.file${id.toString()}`];\r\n variables[`file${id.toString()}`] = null;\r\n files.push(entities[modelName][id].file);\r\n }\r\n\r\n formDataIndex += entityHasFormData ? 1 : 0;\r\n\r\n return (!empty(mutation) && { [`${modelName}${id}`]: removeMutationUpperLevel(mutation) }) || null;\r\n }\r\n return null;\r\n })\r\n );\r\n\r\n // format the queries into a list of queries with a alias (we need this to send it to graphql)\r\n const mutationsQuery = mutations\r\n .flat()\r\n .filter(Boolean) // flat the array and ignore empty values (cases where there isnt a save mutation for that entity)\r\n .map((value) => {\r\n const [key] = Object.keys(value);\r\n return `${key} : ${value[key]}`;\r\n }) // extract fiest property name as alias and its value as the query to execute\r\n .join(', ');\r\n\r\n const finalMutation = `mutation ${!empty(filesParams) ? `(${filesParams})` : ''}{${mutationsQuery}}`;\r\n\r\n if (formDataIndex) {\r\n formData.append('map', JSON.stringify(mapData));\r\n files.forEach((file, index) => {\r\n formData.append(index, file);\r\n });\r\n formData.append('operations', JSON.stringify({ query: finalMutation, variables }));\r\n }\r\n\r\n // Run all mutations as a single call\r\n const response = yield call(commitEntity, formDataIndex ? formData : finalMutation);\r\n\r\n const transformedEntities = {};\r\n const getMetaName = (name) => Object.keys(models).find((modelName) => name.includes(modelName));\r\n // convert the results from mutation query so we can transform this to an array of entities to the model middleware\r\n Object.entries(response.data.Result).forEach((item) => {\r\n const [name, entity] = item;\r\n let metaName = getMetaName(name);\r\n\r\n // if it is a sub entity and have a replaceModelName change the name, to consolidate to the main entity in the store\r\n if (models[metaName]?.parentEntityName && options.forceEntityNameToParent) {\r\n metaName = models[metaName]?.parentEntityName;\r\n }\r\n\r\n if (!metaName) return;\r\n\r\n const entityName = plural(metaName);\r\n if (!transformedEntities[entityName]) transformedEntities[entityName] = [];\r\n const objToAdd = isArray(entity) ? entity : [entity];\r\n transformedEntities[entityName] = [...transformedEntities[entityName], ...objToAdd];\r\n });\r\n\r\n if (runBeforeSuccess) {\r\n yield put(runBeforeSuccess(transformedEntities));\r\n }\r\n\r\n yield put(success(transformedEntities));\r\n\r\n if (continueWith) {\r\n yield put(continueWith(response.data.Result));\r\n }\r\n }\r\n } catch (error) {\r\n // On fail dispatch the respective action\r\n yield put(fail(error, models));\r\n }\r\n}\r\n\r\nexport function* formsChannel(actionTake, success, fail, continueWith, runBeforeSuccess) {\r\n // Listen to MODEL_REQUEST_CHANNEL actions\r\n const channel = yield actionChannel(actionTake);\r\n while (true) {\r\n // On next channel capture take the action\r\n const action = yield take(channel);\r\n // Call the saga with the respective handlers and action\r\n yield mutateModels(success, fail, action, continueWith, runBeforeSuccess);\r\n }\r\n}\r\n\r\nexport function* formMutationsChannel(actionTake, success, fail, continueWith, runBeforeSuccess) {\r\n // Listen to MODEL_REQUEST_CHANNEL actions\r\n const channel = yield actionChannel(actionTake);\r\n while (true) {\r\n // On next channel capture take the action\r\n const action = yield take(channel);\r\n // Call the saga with the respective handlers and action\r\n yield formMutateModels(success, fail, action, continueWith, runBeforeSuccess);\r\n }\r\n}\r\n\r\n/**\r\n * This Saga is incharged of performing GraphQLQuery calls to the API\r\n * and handling the response\r\n *\r\n * @param { function } success success action to be executed\r\n * @param { function } fail fail action to be executed\r\n * @param { GraphQlQuery } action.query query to be executed\r\n * @param { Object } action.meta action additional data containing the schema\r\n */\r\nexport function* mutateBulkModels(success, fail, { formData, mutation, data: { ids, modelObject } = {}, noEntity }) {\r\n try {\r\n const mutationData = formData || mutation;\r\n // Commit entity to the server\r\n if (mutationData) {\r\n const response = yield call(commitEntity, mutationData);\r\n\r\n yield put(success(response.data.Result));\r\n\r\n // On success dispatch the respective action\r\n // This will be captured by normalizr middleware\r\n // Generated IDs of new entities have letters and need to avoid getting into this if\r\n if (ids && modelObject && !noEntity) {\r\n yield all(ids.map((id) => put(saveEntity(id, modelObject))));\r\n }\r\n }\r\n } catch (error) {\r\n // On fail dispatch the respective action\r\n yield put(fail(error));\r\n }\r\n}\r\n\r\nexport function* formsBulkChannel(actionTake, success, fail) {\r\n // Listen to MODEL_REQUEST_CHANNEL actions\r\n const channel = yield actionChannel(actionTake);\r\n while (true) {\r\n // On next channel capture take the action\r\n const action = yield take(channel);\r\n // Call the saga with the respective handlers and action\r\n yield mutateBulkModels(success, fail, action);\r\n }\r\n}\r\n\r\n/**\r\n * Generic Saga for Mutations\r\n */\r\nexport const genericFormSagas = [formMutationsChannel(FORM_SAVE_REQUEST, FormMutationSuccess, FormMutationFail)];\r\n","import { qif } from '@/utils/api/graph-helpers';\r\nimport { JSONText, empty } from '@/lodash/';\r\nimport { getSitePage } from '@/utils/routing/router-helpers';\r\nimport apiClient from '@/utils/api/api';\r\n\r\n/** **** Comunities **** */\r\n\r\nconst resolveApiSortForCommunity = (apiPath) => {\r\n switch (apiPath) {\r\n case 'id':\r\n return 'Id';\r\n case 'status':\r\n return 'Status';\r\n case 'name':\r\n return 'Name';\r\n case 'number':\r\n return 'Number';\r\n case 'marketingStatus':\r\n return 'MarketingStatus';\r\n case 'description':\r\n return 'Description';\r\n case 'url':\r\n return 'Url';\r\n case 'salesOffice.drivingDirections':\r\n return 'DrivingDirections';\r\n case 'salesOffice.coordinates.latitude':\r\n return 'Latitude';\r\n case 'salesOffice.coordinates.longitude':\r\n return 'Longitude';\r\n case 'salesOffice.hours':\r\n return 'SalesOfficeHours';\r\n case 'phone':\r\n return 'Phone';\r\n case 'salesAgent':\r\n return 'SalesAgent';\r\n case 'salesOffice.city':\r\n return 'City';\r\n case 'salesOffice.state':\r\n return 'State';\r\n case 'salesOffice.streetAddress1':\r\n return 'SalesOfficeStreet';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport const CommunitiesQuickEditQuery = ({ pageNumber = 1, pageSize = 15, builderId, search, sort, status }) => `\r\n{\r\n communities(\r\n builderId: ${builderId}, \r\n top: ${pageSize}, \r\n page:${pageNumber - 1},\r\n status: [${(!empty(status) ? status : ['Active', 'Inactive', 'Submitted']).map((s) => (s === 'Active' ? 'Approved' : s)).join(',')}],\r\n excludeCustom: true,\r\n listingTypes: [Normal, BOYL],\r\n ${qif(!!search, () => `, search:\"${search}\"`)} \r\n ${qif(\r\n !empty(sort),\r\n () =>\r\n `\r\n , sortBy:[${sort.map(\r\n ([field, order]) => `\r\n { \r\n field: ${resolveApiSortForCommunity(field)}, \r\n order: ${order === 'desc' ? 'Desc' : 'Asc'} \r\n }\r\n `\r\n )}]\r\n `\r\n )}\r\n ){\r\n id\r\n status\r\n name\r\n number\r\n marketingStatus\r\n dateLastChanged\r\n description\r\n url\r\n channelDisplay {\r\n displayOnWebArch\r\n }\r\n location { \r\n coordinates {\r\n latitude\r\n longitude\r\n }\r\n }\r\n builder {\r\n builderId\r\n builderName\r\n parentBuilder{\r\n builderId\r\n builderName\r\n }\r\n partner {\r\n partnerId\r\n }\r\n }\r\n salesOffice {\r\n drivingDirections\r\n coordinates{\r\n latitude,\r\n longitude\r\n }\r\n hours\r\n phones {\r\n areaCode\r\n number\r\n type\r\n }\r\n city\r\n state\r\n streetAddress1\r\n streetAddress2\r\n \t\t\r\n }\r\n salesAgents {\r\n contactId\r\n name \r\n title\r\n email\r\n phone\r\n extension\r\n }\r\n zips {\r\n postalCode\r\n }\r\n }\r\n communityCount(builderId: ${builderId}, status: [${(!empty(status) ? status : ['Active', 'Inactive', 'Submitted']).map((s) => (s === 'Active' ? 'Approved' : s)).join(',')}], ${qif(!!search, () => `, search:\"${search}\"`)}, listingTypes: [Normal, BOYL])\r\n}\r\n`;\r\n\r\nexport const CommunitiesQuickEditDelete = (ids = []) => `\r\nmutation {\r\n ${ids.map(\r\n (id) => `\r\n comm${id} : updateCommunity(id:${id}, status: Archived, sitePage: \"${getSitePage()}\"){\r\n id\r\n }\r\n `\r\n )}\r\n}\r\n`;\r\n\r\n/** **** Plans **** */\r\n\r\nexport const resolveApiSortForPlans = (apiPath) => {\r\n switch (apiPath) {\r\n case 'id':\r\n return 'Id';\r\n case 'community.name':\r\n return 'CommunityName';\r\n case 'status':\r\n return 'Status';\r\n case 'name':\r\n return 'Name';\r\n case 'number':\r\n return 'Number';\r\n case 'basePrice':\r\n return 'BasePrice';\r\n case 'baths':\r\n return 'Baths';\r\n case 'beds':\r\n return 'Beds';\r\n case 'description':\r\n return 'Description';\r\n case 'garages':\r\n return 'Garages';\r\n case 'halfBaths':\r\n return 'HalfBaths';\r\n case 'masterBedLocation':\r\n return 'MasterBedLocation';\r\n case 'type':\r\n return 'Type';\r\n case 'display':\r\n return 'Display';\r\n case 'planViewerUrl':\r\n return 'PlanViewerUrl';\r\n case 'squareFeet':\r\n return 'SquareFeet';\r\n case 'virtualTourUrl':\r\n return 'VirtualTourUrl';\r\n case 'url':\r\n return 'Url';\r\n default:\r\n return '';\r\n }\r\n};\r\nexport const PlansQuickEditQuery = ({ pageNumber = 1, pageSize = 15, builderId, communityId, search, sort, status }) => `\r\n{\r\n plans(\r\n parentFlag: false,\r\n builderId: ${builderId}, \r\n top: ${pageSize}, \r\n page:${pageNumber - 1},\r\n status: [${(!empty(status) ? status : ['Active', 'Inactive']).join(',')}],\r\n ${qif(!!communityId, () => `, communityId:${communityId}`)}\r\n ${qif(!!search, () => `, search:\"${search}\"`)} \r\n ${qif(\r\n !empty(sort),\r\n () =>\r\n `\r\n , sortBy:[${sort.map(\r\n ([field, order]) => `\r\n { \r\n field: ${resolveApiSortForPlans(field)}, \r\n order: ${order === 'desc' ? 'Desc' : 'Asc'} \r\n }\r\n `\r\n )}]\r\n `\r\n )}\r\n ){\r\n id\r\n community{\r\n id\r\n name\r\n marketingStatus\r\n }\r\n status\r\n name\r\n number\r\n basePrice\r\n baths\r\n beds\r\n description\r\n garages\r\n halfBaths\r\n stories\r\n masterBedLocation\r\n type\r\n display\r\n planViewerUrl\r\n squareFeet\r\n virtualTourUrl\r\n url\r\n builder {\r\n builderId\r\n builderName\r\n parentBuilderId\r\n parentBuilder{\r\n builderId\r\n builderName\r\n }\r\n }\r\n channelDisplay {\r\n displayOnWebArch\r\n } \r\n }\r\n planCount(parentFlag: false, builderId: ${builderId}, status: [${(!empty(status) ? status : ['Active', 'Inactive']).join(',')}] ${qif(!!communityId, () => `, communityId:${communityId}`)} ${qif(!!search, () => `, search:\"${search}\"`)})\r\n}\r\n`;\r\nexport const PlansQuickEditDelete = (ids = []) => `\r\nmutation {\r\n ${ids.map(\r\n (id) => `\r\n plan${id} : updatePlan(id:${id}, status: Archived, sitePage: \"${getSitePage()}\"){\r\n id\r\n }\r\n `\r\n )}\r\n}\r\n`;\r\n\r\nconst processCoordinate = (coordinate) => {\r\n if (coordinate === '') return 0;\r\n return coordinate;\r\n};\r\n\r\nexport const specsQuickEditUpdate = (entities) => `\r\n mutation {\r\n ${entities.map(\r\n ({ id, status, number, price, moveInDate, streetAddress1, zip, baths, beds, description, garages, latitude, longitude, halfBaths, masterBedLocation, squareFeet, virtualTourUrl, url }, index) => `\r\n spec${index}: updateSpec(\r\n id: ${id},\r\n sitePage: \"${getSitePage()}\",\r\n ${status !== undefined ? `status: ${status},` : ``}\r\n ${number !== undefined ? `number: ${JSONText(number)},` : ``}\r\n ${price !== undefined ? `price: ${price},` : ``}\r\n ${moveInDate !== undefined ? `moveInDate: \"${!empty(moveInDate) ? moveInDate : '0001-01-01T00:00:00'}\",` : ``}\r\n ${streetAddress1 !== undefined ? `streetAddress1: ${JSONText(streetAddress1)},` : ``}\r\n ${\r\n !empty(zip)\r\n ? `\r\n zip: {\r\n ${zip?.postalCode !== undefined ? `postalCode: ${JSONText(zip?.postalCode)},` : ``}\r\n ${zip?.city !== undefined ? `city: ${JSONText(zip?.city)},` : ``}\r\n ${zip?.state !== undefined ? `state: ${JSONText(zip?.state)},` : ``}\r\n },\r\n `\r\n : ``\r\n }\r\n ${baths !== undefined ? `baths: ${baths},` : ``}\r\n ${beds !== undefined ? `beds: ${beds},` : ``}\r\n ${description !== undefined ? `description: ${JSONText(description)},` : ``}\r\n ${garages !== undefined ? `garages: ${garages},` : ``}\r\n ${latitude !== undefined ? `latitude: ${processCoordinate(latitude)},` : ``}\r\n ${longitude !== undefined ? `longitude: ${processCoordinate(longitude)},` : ``}\r\n ${halfBaths !== undefined ? `halfBaths: ${halfBaths},` : ``}\r\n ${masterBedLocation !== undefined ? `masterBedLocation: ${masterBedLocation},` : ``}\r\n ${squareFeet !== undefined ? `squareFeet: ${Number(squareFeet)},` : ``}\r\n ${virtualTourUrl !== undefined ? `virtualTourUrl: ${JSONText(virtualTourUrl)},` : ``}\r\n ${url !== undefined ? `url: ${JSONText(url)},` : ``}\r\n ) {\r\n id\r\n }\r\n `\r\n )}\r\n }\r\n `;\r\n\r\nexport const plansQuickEditUpdate = (entities) => `\r\n mutation {\r\n ${entities.map(\r\n ({ id, status, name, number, basePrice, baths, beds, garages, halfBaths, description, masterBedLocation, type, display, planViewerUrl, squareFeet, virtualTourUrl, url }, index) => `\r\n plan${index}: updatePlan(\r\n id: ${id},\r\n sitePage: \"${getSitePage()}\",\r\n ${status !== undefined ? `status: ${status},` : ``}\r\n ${name !== undefined ? `name: ${JSONText(name)},` : ``}\r\n ${number !== undefined ? `number: ${JSONText(number)},` : ``}\r\n ${basePrice !== undefined ? `basePrice: ${basePrice},` : ``}\r\n ${baths !== undefined ? `baths: ${Number(baths)},` : ``}\r\n ${beds !== undefined ? `beds: ${Number(beds)},` : ``}\r\n ${description !== undefined ? `description: ${JSONText(description)},` : ``}\r\n ${garages !== undefined ? `garages: ${Number(garages)},` : ``}\r\n ${halfBaths !== undefined ? `halfBaths: ${Number(halfBaths)},` : ``}\r\n ${masterBedLocation !== undefined ? `masterBedLocation: ${masterBedLocation},` : ``}\r\n ${type !== undefined ? `type: ${type},` : ``}\r\n ${display !== undefined ? `display: ${display},` : ``}\r\n ${planViewerUrl !== undefined ? `planViewerUrl: ${JSONText(planViewerUrl)},` : ``}\r\n ${squareFeet !== undefined ? `squareFeet: ${Number(squareFeet)},` : ``}\r\n ${virtualTourUrl !== undefined ? `virtualTourUrl: ${JSONText(virtualTourUrl)},` : ``}\r\n ${url !== undefined ? `url: ${JSONText(url)},` : ``}\r\n ) {\r\n id\r\n }\r\n `\r\n )}\r\n }\r\n `;\r\n\r\nexport const communitiesQuickEditUpdate = (entities) => `\r\n mutation {\r\n ${entities.map(\r\n ({ id, status, name, number, marketingStatus, description, url, salesOffice, salesAgents }, index) => `\r\n community${index}: updateCommunity(\r\n id: ${id},\r\n sitePage: \"${getSitePage()}\",\r\n ${status !== undefined ? `status: ${status},` : ``}\r\n ${name !== undefined ? `name: ${JSONText(name)},` : ``}\r\n ${number !== undefined ? `number: ${JSONText(number)},` : ``}\r\n ${marketingStatus !== undefined ? `marketingStatus: ${marketingStatus},` : ``}\r\n ${description !== undefined ? `description: ${JSONText(description)},` : ``}\r\n ${url !== undefined ? `url: ${JSONText(url)},` : ``}\r\n ${\r\n !empty(salesOffice)\r\n ? `\r\n salesOffice: {\r\n ${salesOffice?.drivingDirections !== undefined ? `drivingDirections: ${JSONText(salesOffice?.drivingDirections)},` : ``}\r\n ${\r\n !empty(salesOffice?.coordinates)\r\n ? `\r\n coordinates: {\r\n ${salesOffice?.coordinates?.latitude !== undefined ? `latitude: ${processCoordinate(salesOffice?.coordinates?.latitude)},` : ``}\r\n ${salesOffice?.coordinates?.longitude !== undefined ? `longitude: ${processCoordinate(salesOffice?.coordinates?.longitude)}` : ``}\r\n },\r\n `\r\n : ``\r\n }\r\n ${salesOffice.hours !== undefined ? `hours: ${JSONText(salesOffice.hours)},` : ``}\r\n ${\r\n !empty(salesOffice?.phones)\r\n ? `\r\n phones: [\r\n ${salesOffice?.phones?.map(({ type, fullNumber, extension }) => {\r\n const areaCode = fullNumber && fullNumber.includes(' ') && fullNumber.split(' ')[0].replace(/(\\))|(\\()/g, ''); // remove parentesis with regular expression\r\n const phoneNumber = fullNumber && fullNumber.includes(' ') && fullNumber.split(' ')[1];\r\n return `{\r\n ${type !== undefined ? `type: ${type},` : ``}\r\n ${areaCode !== undefined ? `areaCode: ${JSONText(areaCode)},` : ``}\r\n ${phoneNumber !== undefined ? `number: ${JSONText(phoneNumber)},` : ``}\r\n ${extension !== undefined ? `extension: ${JSONText(extension)}` : ``}\r\n }\r\n `;\r\n })}\r\n ],\r\n `\r\n : ``\r\n }\r\n ${salesOffice.zip !== undefined ? `zip: ${JSONText(salesOffice.zip)},` : ``}\r\n ${salesOffice.city !== undefined ? `city: ${JSONText(salesOffice.city)},` : ``}\r\n ${salesOffice.state !== undefined ? `state: ${JSONText(salesOffice.state)},` : ``}\r\n ${salesOffice.streetAddress1 !== undefined ? `streetAddress1: ${JSONText(salesOffice.streetAddress1)}` : ``}\r\n },\r\n `\r\n : ``\r\n }\r\n ${\r\n !empty(salesAgents)\r\n ? `\r\n salesAgents: [\r\n ${salesAgents?.map(\r\n ({ contactId: agentId, name: agentName, title: agentTitle = '', email: agentEmail = '', phone: agentPhone = '', extension: agentExtension = '' }) => `\r\n {\r\n ${agentId !== 0 ? `contactId: ${agentId},` : ''} \r\n ${agentName !== undefined ? `name: ${JSONText(agentName)},` : ``}\r\n ${agentTitle !== undefined ? `title: ${JSONText(agentTitle)},` : ''} \r\n ${agentEmail !== undefined ? `email: ${JSONText(agentEmail)},` : ''} \r\n ${agentPhone !== undefined ? `phone: \"${agentPhone}\", extension: \"${agentExtension}\",` : ''} \r\n }\r\n `\r\n )}\r\n ],\r\n `\r\n : ``\r\n }\r\n ) {\r\n id\r\n }\r\n `\r\n )}\r\n }\r\n `;\r\n/** **** Plans **** */\r\n\r\nexport const resolveApiSortForSpecs = (apiPath) => {\r\n switch (apiPath) {\r\n case 'id':\r\n return 'Id';\r\n case 'community.name':\r\n return 'CommunityName';\r\n case 'status':\r\n return 'Status';\r\n case 'plan.name':\r\n return 'PlanName';\r\n case 'plan.number':\r\n return 'PlanNumber';\r\n case 'number':\r\n return 'Number';\r\n case 'price':\r\n return 'Price';\r\n case 'moveInDate':\r\n return 'MoveInDate';\r\n case 'streetAddress1':\r\n return 'StreetAddress1';\r\n case 'zip.postalCode':\r\n return 'ZipPostalCode';\r\n case 'baths':\r\n return 'Baths';\r\n case 'beds':\r\n return 'Beds';\r\n case 'description':\r\n return 'Description';\r\n case 'garages':\r\n return 'Garages';\r\n case 'latitude':\r\n return 'Latitude';\r\n case 'longitude':\r\n return 'Longitude';\r\n case 'halfBaths':\r\n return 'HalfBaths';\r\n case 'masterBedLocation':\r\n return 'MasterBedLocation';\r\n case 'plan.type':\r\n return 'PlanType';\r\n case 'plan.display':\r\n return 'PlanDisplay';\r\n case 'squareFeet':\r\n return 'SquareFeet';\r\n case 'virtualTourUrl':\r\n return 'VirtualTourUrl';\r\n case 'url':\r\n return 'Url';\r\n default:\r\n return '';\r\n }\r\n};\r\nexport const SpecsQuickEditQuery = ({ pageNumber = 1, pageSize = 15, builderId, communityId, search, sort, status }) => `\r\n{\r\n specs(\r\n builderId: ${builderId},\r\n top: ${pageSize},\r\n page:${pageNumber - 1},\r\n status: [${(!empty(status) ? status : ['Active', 'Inactive']).join(',')}],\r\n ${qif(!!communityId, () => `, communityId:${communityId}`)}\r\n ${qif(!!search, () => `, search:\"${search}\"`)}\r\n ${qif(\r\n !empty(sort),\r\n () =>\r\n `\r\n , sortBy:[${sort.map(\r\n ([field, order]) => `\r\n {\r\n field: ${resolveApiSortForSpecs(field)},\r\n order: ${order === 'desc' ? 'Desc' : 'Asc'}\r\n }\r\n `\r\n )}]\r\n `\r\n )}\r\n ){\r\n id\r\n community{\r\n id\r\n name\r\n marketingStatus\r\n }\r\n status\r\n plan{\r\n id\r\n name\r\n number\r\n type\r\n display\r\n }\r\n number\r\n price\r\n moveInDate\r\n streetAddress1\r\n zip{\r\n postalCode\r\n }\r\n builder {\r\n builderId\r\n builderName\r\n parentBuilder{\r\n builderId\r\n builderName\r\n }\r\n partner {\r\n partnerId\r\n }\r\n }\r\n baths\r\n beds\r\n description\r\n garages\r\n latitude\r\n longitude\r\n halfBaths\r\n stories\r\n masterBedLocation\r\n squareFeet\r\n virtualTourUrl\r\n url\r\n channelDisplay {\r\n displayOnWebArch\r\n }\r\n }\r\n specCount(builderId: ${builderId}, status: [${(!empty(status) ? status : ['Active', 'Inactive']).join(',')}] ${qif(!!communityId, () => `, communityId:${communityId}`)} ${qif(!!search, () => `, search:\"${search}\"`)})\r\n}\r\n`;\r\nexport const SpecsQuickEditDelete = (ids = []) => `\r\nmutation {\r\n ${ids.map(\r\n (id) => `\r\n spec${id} : updateSpec(id:${id}, status: Archived, sitePage: \"${getSitePage()}\"){\r\n id \r\n }\r\n `\r\n )}\r\n}\r\n`;\r\n\r\n// Request communities search query directly from the component to generate xlsx file\r\nexport const requestCommunitiesQuickEditQuery = async (requestArguments) => apiClient.post(null, { query: CommunitiesQuickEditQuery(requestArguments) });\r\n\r\n// Request plans search query directly from the component to generate xlsx file\r\nexport const requestPlansQuickEditQuery = async (requestArguments) => apiClient.post(null, { query: PlansQuickEditQuery(requestArguments) });\r\n\r\n// Request specs search query directly from the component to generate xlsx file\r\nexport const requestSpecsQuickEditQuery = async (requestArguments) => apiClient.post(null, { query: SpecsQuickEditQuery(requestArguments) });\r\n","import { empty } from '@/lodash/';\r\nimport { SET_PARAM, SET_PARAMS } from '@/redux/page-location/types';\r\nimport { PAGE_NUMBER, PAGE_SIZE, SEARCH, SORT, STATUS } from '@/constants/params';\r\nimport { COMMUNITY_QUICK_EDIT_TABLE, PLAN_QUICK_EDIT_TABLE, SPEC_QUICK_EDIT_TABLE } from '@/app/app.location';\r\nimport { MutationModelRequestAction, MutationModelSuccessAction, MutationModelFailAction } from '@/redux/forms/actions';\r\nimport { CommunitiesQuickEditQuery, CommunitiesQuickEditDelete, PlansQuickEditQuery, PlansQuickEditDelete, SpecsQuickEditQuery, SpecsQuickEditDelete, communitiesQuickEditUpdate, plansQuickEditUpdate, specsQuickEditUpdate } from './api';\r\nimport { COMMUNIIES_QUICK_EDIT_REQUEST, COMMUNIIES_QUICK_EDIT_SUCCESS, COMMUNIIES_QUICK_EDIT_FAIL, COMMUNIIES_QUICK_EDIT_DELETE_REQUEST, COMMUNIIES_QUICK_EDIT_DELETE_SUCCESS, COMMUNIIES_QUICK_EDIT_DELETE_FAIL, PLANS_QUICK_EDIT_REQUEST, PLANS_QUICK_EDIT_SUCCESS, PLANS_QUICK_EDIT_FAIL, PLANS_QUICK_EDIT_DELETE_REQUEST, PLANS_QUICK_EDIT_DELETE_SUCCESS, PLANS_QUICK_EDIT_DELETE_FAIL, SPECS_QUICK_EDIT_REQUEST, SPECS_QUICK_EDIT_SUCCESS, SPECS_QUICK_EDIT_DELETE_REQUEST, SPECS_QUICK_EDIT_DELETE_SUCCESS, SPECS_QUICK_EDIT_DELETE_FAIL, SPECS_QUICK_EDIT_FAIL, COMMUNITIES_QUICK_EDIT_UPDATE_REQUEST, COMMUNITIES_QUICK_EDIT_UPDATE_SUCCESS, COMMUNITIES_QUICK_EDIT_UPDATE_FAIL, SPECS_QUICK_EDIT_UPDATE_REQUEST, SPECS_QUICK_EDIT_UPDATE_SUCCESS, SPECS_QUICK_EDIT_UPDATE_FAIL, PLANS_QUICK_EDIT_UPDATE_REQUEST, PLANS_QUICK_EDIT_UPDATE_SUCCESS, PLANS_QUICK_EDIT_UPDATE_FAIL } from './types';\r\n\r\n/** COMMUNITIES */\r\n\r\nexport const setQuickEditCommunitiesPagination = ({ pageNumber, pageSize }) => ({ type: SET_PARAMS, params: { [PAGE_NUMBER]: pageNumber, [PAGE_SIZE]: pageSize }, path: COMMUNITY_QUICK_EDIT_TABLE.name });\r\nexport const setQuickEditCommunitiesPageNumber = (pageNumber) => ({ type: SET_PARAM, name: PAGE_NUMBER, value: pageNumber, path: COMMUNITY_QUICK_EDIT_TABLE.name });\r\nexport const setQuickEditCommunitiesSearch = (search) => ({ type: SET_PARAMS, params: { [SEARCH]: search, [PAGE_NUMBER]: 1 }, path: COMMUNITY_QUICK_EDIT_TABLE.name });\r\nexport const setQuickEditCommunitiesStatus = (status) => ({ type: SET_PARAMS, params: { [STATUS]: status, [PAGE_NUMBER]: 1 }, path: COMMUNITY_QUICK_EDIT_TABLE.name });\r\nexport const setQuickEditCommunitiesSort = (sort) => ({ type: SET_PARAM, name: SORT, value: sort, path: COMMUNITY_QUICK_EDIT_TABLE.name });\r\n\r\nexport const requestQuickEditCommunities = (entity, requestArguments = {}, meta) => ({\r\n type: COMMUNIIES_QUICK_EDIT_REQUEST,\r\n query: CommunitiesQuickEditQuery(requestArguments),\r\n requestArguments,\r\n entity,\r\n meta,\r\n});\r\nexport const requestQuickEditCommunitiesSuccess = (entities, meta) => ({ type: COMMUNIIES_QUICK_EDIT_SUCCESS, data: { entities }, meta });\r\nexport const requestQuickEditCommunitiesFail = (error) => ({ type: COMMUNIIES_QUICK_EDIT_FAIL, error: true, data: empty(error) ? { appMessage: 'Possible timeout error.', errorMessage: 'Possible timeout error.' } : error });\r\n\r\nexport const deleteQuickEditCommunitiesRequest = (entity, items = [], meta) => ({ type: COMMUNIIES_QUICK_EDIT_DELETE_REQUEST, entity, query: CommunitiesQuickEditDelete(items.map((i) => i.id)), meta });\r\nexport const deleteQuickEditCommunitiesSuccess = ({ meta }) => ({ type: COMMUNIIES_QUICK_EDIT_DELETE_SUCCESS, meta });\r\nexport const deleteQuickEditCommunitiesFail = ({ meta }) => ({ type: COMMUNIIES_QUICK_EDIT_DELETE_FAIL, meta });\r\n\r\n/** PLANS */\r\n\r\nexport const setQuickEditPlansPagination = ({ pageNumber, pageSize }) => ({ type: SET_PARAMS, params: { [PAGE_NUMBER]: pageNumber, [PAGE_SIZE]: pageSize }, path: PLAN_QUICK_EDIT_TABLE.name });\r\nexport const setQuickEditPlansPageNumber = (pageNumber) => ({ type: SET_PARAM, name: PAGE_NUMBER, value: pageNumber, path: PLAN_QUICK_EDIT_TABLE.name });\r\nexport const setQuickEditPlansSearch = (search) => ({ type: SET_PARAMS, params: { [SEARCH]: search, [PAGE_NUMBER]: 1 }, path: PLAN_QUICK_EDIT_TABLE.name });\r\nexport const setQuickEditPlansStatus = (status) => ({ type: SET_PARAMS, params: { [STATUS]: status, [PAGE_NUMBER]: 1 }, path: PLAN_QUICK_EDIT_TABLE.name });\r\nexport const setQuickEditPlansSort = (sort) => ({ type: SET_PARAM, name: SORT, value: sort, path: PLAN_QUICK_EDIT_TABLE.name });\r\n\r\nexport const requestQuickEditPlans = (entity, requestArguments = {}, meta) => ({\r\n type: PLANS_QUICK_EDIT_REQUEST,\r\n query: PlansQuickEditQuery(requestArguments),\r\n requestArguments,\r\n entity,\r\n meta,\r\n});\r\nexport const requestQuickEditPlansSuccess = (entities, meta) => ({ type: PLANS_QUICK_EDIT_SUCCESS, data: { entities }, meta });\r\nexport const requestQuickEditPlansFail = (error) => ({ type: PLANS_QUICK_EDIT_FAIL, error: true, data: empty(error) ? { appMessage: 'Possible timeout error.', errorMessage: 'Possible timeout error.' } : error });\r\n\r\nexport const deleteQuickEditPlansRequest = (entity, items = [], meta) => ({ type: PLANS_QUICK_EDIT_DELETE_REQUEST, entity, query: PlansQuickEditDelete(items.map((i) => i.id)), meta });\r\nexport const deleteQuickEditPlansSuccess = ({ meta }) => ({ type: PLANS_QUICK_EDIT_DELETE_SUCCESS, meta });\r\nexport const deleteQuickEditPlansFail = ({ meta }) => ({ type: PLANS_QUICK_EDIT_DELETE_FAIL, meta });\r\n\r\n/**\r\n * SPECS\r\n * */\r\n\r\nexport const setQuickEditSpecsPagination = ({ pageNumber, pageSize }) => ({ type: SET_PARAMS, params: { [PAGE_NUMBER]: pageNumber, [PAGE_SIZE]: pageSize }, path: SPEC_QUICK_EDIT_TABLE.name });\r\nexport const setQuickEditSpecsPageNumber = (pageNumber) => ({ type: SET_PARAM, name: PAGE_NUMBER, value: pageNumber, path: SPEC_QUICK_EDIT_TABLE.name });\r\nexport const setQuickEditSpecsSearch = (search) => ({ type: SET_PARAMS, params: { [SEARCH]: search, [PAGE_NUMBER]: 1 }, path: SPEC_QUICK_EDIT_TABLE.name });\r\nexport const setQuickEditSpecsStatus = (status) => ({ type: SET_PARAMS, params: { [STATUS]: status, [PAGE_NUMBER]: 1 }, path: SPEC_QUICK_EDIT_TABLE.name });\r\nexport const setQuickEditSpecsSort = (sort) => ({ type: SET_PARAM, name: SORT, value: sort, path: SPEC_QUICK_EDIT_TABLE.name });\r\n\r\nexport const requestQuickEditSpecs = (entity, requestArguments = {}, meta) => ({\r\n type: SPECS_QUICK_EDIT_REQUEST,\r\n query: SpecsQuickEditQuery(requestArguments),\r\n requestArguments,\r\n entity,\r\n meta,\r\n});\r\nexport const requestQuickEditSpecsSuccess = (entities, meta) => ({ type: SPECS_QUICK_EDIT_SUCCESS, data: { entities }, meta });\r\nexport const requestQuickEditSpecsFail = (error) => ({ type: SPECS_QUICK_EDIT_FAIL, error: true, data: empty(error) ? { appMessage: 'Possible timeout error.', errorMessage: 'Possible timeout error.' } : error });\r\n\r\nexport const deleteQuickEditSpecsRequest = (entity, items = [], meta) => ({ type: SPECS_QUICK_EDIT_DELETE_REQUEST, entity, query: SpecsQuickEditDelete(items.map((i) => i.id)), meta });\r\nexport const deleteQuickEditSpecsSuccess = ({ meta }) => ({ type: SPECS_QUICK_EDIT_DELETE_SUCCESS, meta });\r\nexport const deleteQuickEditSpecsFail = ({ meta }) => ({ type: SPECS_QUICK_EDIT_DELETE_FAIL, meta });\r\n\r\nconst convertCommunityError = (error) => {\r\n if (empty(error)) return COMMUNITIES_QUICK_EDIT_UPDATE_ERROR;\r\n if (error.includes('geo-coordinates')) return error;\r\n return COMMUNITIES_QUICK_EDIT_UPDATE_ERROR;\r\n};\r\n\r\n/**\r\n * Bulk update communities request\r\n */\r\nconst COMMUNITIES_QUICK_EDIT_UPDATE_ERROR = 'Error saving the community information, please try again';\r\nexport const communitiesQuickEditUpdateRequest = MutationModelRequestAction(COMMUNITIES_QUICK_EDIT_UPDATE_REQUEST, communitiesQuickEditUpdate);\r\nexport const communitiesQuickEditUpdateSuccess = MutationModelSuccessAction(COMMUNITIES_QUICK_EDIT_UPDATE_SUCCESS);\r\nexport const communitiesQuickEditUpdateFail = MutationModelFailAction(COMMUNITIES_QUICK_EDIT_UPDATE_FAIL, COMMUNITIES_QUICK_EDIT_UPDATE_ERROR, convertCommunityError);\r\n/**\r\n * Bulk update plans request\r\n */\r\nconst PLANS_QUICK_EDIT_UPDATE_ERROR = 'Error saving the plan information, please try again';\r\nexport const plansQuickEditUpdateRequest = MutationModelRequestAction(PLANS_QUICK_EDIT_UPDATE_REQUEST, plansQuickEditUpdate);\r\nexport const plansQuickEditUpdateSuccess = MutationModelSuccessAction(PLANS_QUICK_EDIT_UPDATE_SUCCESS);\r\nexport const plansQuickEditUpdateFail = MutationModelFailAction(PLANS_QUICK_EDIT_UPDATE_FAIL, PLANS_QUICK_EDIT_UPDATE_ERROR);\r\n\r\nconst convertSpecError = (error) => {\r\n if (empty(error)) return SPECS_QUICK_EDIT_UPDATE_ERROR;\r\n if (error.includes('geo-coordinates')) return error;\r\n return SPECS_QUICK_EDIT_UPDATE_ERROR;\r\n};\r\n\r\n/**\r\n * Bulk update specs request\r\n */\r\nconst SPECS_QUICK_EDIT_UPDATE_ERROR = 'Error saving the spec information, please try again';\r\nexport const specsQuickEditUpdateRequest = MutationModelRequestAction(SPECS_QUICK_EDIT_UPDATE_REQUEST, specsQuickEditUpdate);\r\nexport const specsQuickEditUpdateSuccess = MutationModelSuccessAction(SPECS_QUICK_EDIT_UPDATE_SUCCESS);\r\nexport const specsQuickEditUpdateFail = MutationModelFailAction(SPECS_QUICK_EDIT_UPDATE_FAIL, SPECS_QUICK_EDIT_UPDATE_ERROR, convertSpecError);\r\n","import { takeLatest, call, put } from 'redux-saga/effects';\r\nimport { requestModel } from '@/redux/models/api';\r\nimport { formsBulkChannel } from '@/redux/forms/sagas';\r\nimport { COMMUNIIES_QUICK_EDIT_REQUEST, COMMUNIIES_QUICK_EDIT_DELETE_REQUEST, PLANS_QUICK_EDIT_REQUEST, PLANS_QUICK_EDIT_DELETE_REQUEST, SPECS_QUICK_EDIT_DELETE_REQUEST, SPECS_QUICK_EDIT_REQUEST, COMMUNITIES_QUICK_EDIT_UPDATE_REQUEST, SPECS_QUICK_EDIT_UPDATE_REQUEST, PLANS_QUICK_EDIT_UPDATE_REQUEST } from './types';\r\nimport { requestQuickEditCommunitiesSuccess, requestQuickEditCommunitiesFail, deleteQuickEditCommunitiesSuccess, deleteQuickEditCommunitiesFail, requestQuickEditPlansSuccess, requestQuickEditPlansFail, deleteQuickEditPlansSuccess, deleteQuickEditPlansFail, requestQuickEditSpecsSuccess, requestQuickEditSpecsFail, deleteQuickEditSpecsSuccess, deleteQuickEditSpecsFail, communitiesQuickEditUpdateSuccess, communitiesQuickEditUpdateFail, plansQuickEditUpdateSuccess, plansQuickEditUpdateFail, specsQuickEditUpdateFail, specsQuickEditUpdateSuccess } from './actions';\r\n\r\nexport function* getQuickEditData(success, fail, emptyResult, { requestArguments, query, meta }) {\r\n try {\r\n if (requestArguments.builderId) {\r\n const response = yield call(requestModel, query);\r\n yield put(success(response.data.Result, meta));\r\n } else {\r\n yield put(success(emptyResult, meta));\r\n }\r\n } catch (error) {\r\n yield put(fail(error));\r\n }\r\n}\r\n\r\nexport function* deleteQuickEditData(success, fail, { query, meta }) {\r\n try {\r\n yield call(requestModel, query);\r\n yield put(success(meta));\r\n } catch (error) {\r\n yield put(fail(error));\r\n }\r\n}\r\n\r\nexport const quickEditSagas = [\r\n // COMMUNITIES\r\n takeLatest(COMMUNIIES_QUICK_EDIT_REQUEST, getQuickEditData, requestQuickEditCommunitiesSuccess, requestQuickEditCommunitiesFail, { communities: [], communityCount: 0 }),\r\n takeLatest(COMMUNIIES_QUICK_EDIT_DELETE_REQUEST, deleteQuickEditData, deleteQuickEditCommunitiesSuccess, deleteQuickEditCommunitiesFail),\r\n\r\n // PLANS\r\n takeLatest(PLANS_QUICK_EDIT_REQUEST, getQuickEditData, requestQuickEditPlansSuccess, requestQuickEditPlansFail, { plans: [], planCount: 0 }),\r\n takeLatest(PLANS_QUICK_EDIT_DELETE_REQUEST, deleteQuickEditData, deleteQuickEditPlansSuccess, deleteQuickEditPlansFail),\r\n\r\n // SPECS\r\n takeLatest(SPECS_QUICK_EDIT_REQUEST, getQuickEditData, requestQuickEditSpecsSuccess, requestQuickEditSpecsFail, { specs: [], specCount: 0 }),\r\n takeLatest(SPECS_QUICK_EDIT_DELETE_REQUEST, deleteQuickEditData, deleteQuickEditSpecsSuccess, deleteQuickEditSpecsFail),\r\n /**\r\n * This generator listens to COMMUNITIES_QUICK_EDIT_UPDATE_SUCCESS\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function* } saga operation to be executed\r\n * @param { ...* } args arguments to be passed to the started task\r\n */\r\n formsBulkChannel(COMMUNITIES_QUICK_EDIT_UPDATE_REQUEST, communitiesQuickEditUpdateSuccess, communitiesQuickEditUpdateFail),\r\n /**\r\n * This generator listens to PLANS_QUICK_EDIT_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function* } saga operation to be executed\r\n * @param { ...* } args arguments to be passed to the started task\r\n */\r\n formsBulkChannel(PLANS_QUICK_EDIT_UPDATE_REQUEST, plansQuickEditUpdateSuccess, plansQuickEditUpdateFail),\r\n /**\r\n * This generator listens to SPECS_QUICK_EDIT_UPDATE_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function* } saga operation to be executed\r\n * @param { ...* } args arguments to be passed to the started task\r\n */\r\n formsBulkChannel(SPECS_QUICK_EDIT_UPDATE_REQUEST, specsQuickEditUpdateSuccess, specsQuickEditUpdateFail),\r\n];\r\n","export const communityByIdQuery = (fields) => (id) =>\r\n `\r\n query {\r\n communities(communityId: ${id}) {\r\n ${fields}\r\n }\r\n }\r\n`;\r\n","import { leadRecipientType, leadDeliveryMethods } from '@/constants/bdx-lookups';\r\nimport { empty, groupByProperty, JSONText } from '@/lodash/';\r\nimport { Community } from '@/models/Community';\r\nimport { Division } from '@/models/Division';\r\nimport { communityByIdQuery } from '@/redux/entities/community/api';\r\n\r\nimport apiClient from '../../../utils/api/api';\r\n\r\nexport const leadRecipientsStatus = ({ entityId: builderId }) =>\r\n apiClient.post(null, {\r\n query: `query {\r\n builders(builderId: ${builderId}) {\r\n communityCounts {\r\n approved\r\n inactive\r\n submitted\r\n archived\r\n disapproved\r\n managedLocally\r\n }\r\n }\r\n }`,\r\n });\r\n\r\nexport const leadRecipientsStates = ({ entityId: builderId }) =>\r\n apiClient.post(null, {\r\n query: `query {\r\n builders(builderId: ${builderId}) {\r\n states\r\n }\r\n }`,\r\n });\r\n\r\nexport const leadRecipientsCorporate = ({ entityId: builderId }) => `\r\n query {\r\n builders(builderId: ${builderId}) {\r\n builderId\r\n corporateDistribution {\r\n email\r\n ftpServerUrl\r\n ftpUserName\r\n ftpPassword\r\n leadFormatType\r\n leadDeliveryMethod\r\n deliverLeadsToCorpRecipientOnly\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const leadRecipientsAdvancedSettings = ({ entityId: builderId }) => `\r\n query {\r\n builders(builderId: ${builderId}) {\r\n builderId\r\n corporateDistribution {\r\n apiToken\r\n allowAccessAugmentedLeadData\r\n accessLeadAPI\r\n }\r\n }\r\n }\r\n`;\r\n\r\nconst communityFields = `\r\n id\r\n name\r\n number\r\n status\r\n zips {\r\n city\r\n state\r\n postalCode\r\n }\r\n leadRecipients {\r\n default {\r\n id\r\n email\r\n deliveryFormat\r\n }\r\n copy {\r\n id\r\n email\r\n deliveryFormat\r\n }\r\n useBuilderDefault\r\n }\r\n builder {\r\n builderId\r\n builderName\r\n parentBuilderId\r\n leadRecipients {\r\n default {\r\n id\r\n email\r\n deliveryFormat\r\n }\r\n copy {\r\n id\r\n email\r\n deliveryFormat\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const communityByIdLeadRecipients = communityByIdQuery(communityFields);\r\n\r\nexport const manageLeadRecipients = ({ divisionId, search, status, states, pageNumber, pageSize, sorts, onlyManageLocally, partnerId }) => `\r\n query {\r\n communities(\r\n builderId: ${divisionId}\r\n ${onlyManageLocally ? ',onlyManagedLocally: true' : ''}\r\n ${!empty(search) ? `,search: ${JSONText(search?.trim())}` : ''}\r\n ${!empty(states) ? `,states: [${states}]` : ''}\r\n ${!empty(status) ? `,status: [${status}]` : ',status: [Approved, Inactive, Submitted]'}\r\n ${!empty(sorts) ? `,sortBy: [${Object.entries(sorts).map(([path, direction]) => `{field: ${path}, order: ${direction === -1 ? 'Desc' : 'Asc'}}`)}]` : ''}\r\n page: ${pageNumber - 1 || 0}\r\n top: ${pageSize || 15}, \r\n excludeCustom: true,\r\n partnerId: ${partnerId ?? 500}\r\n ) {\r\n ${communityFields}\r\n }\r\n communityCount(\r\n builderId: ${divisionId}\r\n ${!empty(search) ? `,search: ${JSONText(search?.trim())}` : ''}\r\n ${!empty(states) ? `,states: [${states}]` : ''}\r\n ${!empty(status) ? `,status: [${status}]` : ',status: [Approved, Inactive, Submitted]'}\r\n excludeCustom: true,\r\n searchWithLeadRecipients: true)\r\n }\r\n`;\r\n\r\nexport const leadRecipients = ({ parentBuilderId }) => `\r\n query {\r\n leadRecipients(parentBuilderId: ${parentBuilderId}, top: 9000) {\r\n id\r\n email\r\n deliveryFormat\r\n }\r\n } \r\n`;\r\n\r\nexport const useDivisionRecipient = ({ communityId, useBuilderDefault }) => `\r\n mutation {\r\n assignLeadRecipients(communityId: ${communityId}, useBuilderDefault: ${useBuilderDefault})\r\n }\r\n`;\r\n\r\nexport const assignLeadRecipients = ({ assign = [], addNew = [] }) => `\r\n mutation {\r\n ${addNew.map(\r\n ({ email, deliveryFormat, type, from, corporate, division, community }, index) => `\r\n insertLead${index}: insertLeadRecipient(\r\n email: ${JSONText(email)}\r\n deliveryFormat: ${deliveryFormat}\r\n leadRecipientType: ${type} \r\n parentBuilderId: ${corporate}\r\n ${from === Division()?.model ? `builderId: ${division}` : ''}\r\n ${from === Community()?.model ? `communityId: ${community}` : ''}\r\n ) {\r\n id\r\n email\r\n deliveryFormat\r\n }\r\n `\r\n )}\r\n ${Object.entries(groupByProperty(['from'])(assign)).map(\r\n ([from, [{ id: firstId, type: firstType, division, community }, { id: secondId, type: secondType } = {}]]) => `\r\n ${from}: assignLeadRecipients(\r\n ${from === Division()?.model ? `builderId: ${division}` : ''}\r\n ${from === Community()?.model ? `communityId: ${community}` : ''}\r\n ${firstType === leadRecipientType.Default ? `defaultId: ${firstId}` : `copyId: ${firstId}`}\r\n ${(!empty(secondId) && (secondType === leadRecipientType.Default ? `defaultId: ${secondId}` : `copyId: ${secondId}`)) || ''}\r\n )\r\n `\r\n )}\r\n }\r\n`;\r\n\r\nexport const leadRecipientsDistributionUpdate = ({ builderId, corporateDistribution: { leadDeliveryMethod, email, ftpServerUrl, ftpUserName, ftpPassword, leadFormatType, apiToken, accessLeadAPI, allowAccessAugmentedLeadData, deliverLeadsToCorpRecipientOnly } = {} }) => {\r\n return `mutation {\r\n setBuilderCorporateDistribution(parentBuilderId: ${builderId}\r\n ${setupMethodBasedArguments(leadDeliveryMethod, email, ftpServerUrl, ftpUserName, ftpPassword, leadFormatType)}\r\n ${apiToken !== undefined || accessLeadAPI !== undefined ? `,apiToken: ${accessLeadAPI === false ? '\"\"' : JSONText(apiToken)}` : ''}\r\n ${apiToken !== undefined || accessLeadAPI !== undefined ? `,accessLeadAPI: ${accessLeadAPI ?? true}` : ''}\r\n ${deliverLeadsToCorpRecipientOnly !== undefined ? `,deliverLeadsToCorpRecipientOnly: ${deliverLeadsToCorpRecipientOnly}` : ''}\r\n ${allowAccessAugmentedLeadData !== undefined ? `,allowAccessAugmentedLeadData: ${allowAccessAugmentedLeadData}` : ''}\r\n ) {\r\n email,\r\n ftpServerUrl,\r\n ftpUserName,\r\n ftpPassword,\r\n leadFormatType,\r\n apiToken,\r\n allowAccessAugmentedLeadData,\r\n deliverLeadsToCorpRecipientOnly\r\n }\r\n }`;\r\n};\r\n\r\nconst setupMethodBasedArguments = (leadDeliveryMethod, email, ftpServerUrl, ftpUserName, ftpPassword, leadFormatType) => {\r\n return leadDeliveryMethod === leadDeliveryMethods.FTP.id\r\n ? `\r\n ${!empty(ftpServerUrl) ? `,ftpServerUrl: ${JSONText(ftpServerUrl)}` : ''}\r\n ${!empty(ftpUserName) ? `,ftpUserName: ${JSONText(ftpUserName)}` : ''}\r\n ${!empty(ftpPassword) ? `,ftpPassword: ${JSONText(ftpPassword)}` : ''}\r\n ${!empty(leadFormatType) ? `,leadFormatType: ${leadFormatType}` : ''}`\r\n : `\r\n ${!empty(email) ? `,email: ${JSONText(email)}` : ''}\r\n `;\r\n};\r\n\r\nexport async function testFtpCredentials({ ftpServerUrl, ftpUserName, ftpPassword } = {}) {\r\n let response = {};\r\n\r\n try {\r\n response = await apiClient.post(null, {\r\n query: `query {\r\n testFTP(url: ${JSONText(ftpServerUrl)}, userName: ${JSONText(ftpUserName)}, password: ${JSONText(ftpPassword)}) {\r\n valid,\r\n message\r\n }\r\n }`,\r\n });\r\n } catch (error) {\r\n return { error };\r\n }\r\n\r\n return { data: response?.data?.Result?.testFTP };\r\n}\r\n","/**\r\n * Redux\r\n */\r\nimport { setParam, setParams } from '@/redux/page-location/actions';\r\nimport { MANAGE_LEAD_RECIPIENTS } from '@/app/app.location';\r\nimport { PAGE_NUMBER, PAGE_SIZE, SEARCH, SORT } from '@/constants/params';\r\nimport { MANAGE_LEAD_RECIPIENTS_FAIL, MANAGE_LEAD_RECIPIENTS_REQUEST, MANAGE_LEAD_RECIPIENTS_SUCCESS, LEAD_RECIPIENTS_STATES_FACETS_FAIL, LEAD_RECIPIENTS_STATES_FACETS_REQUEST, LEAD_RECIPIENTS_STATES_FACETS_SUCCESS, LEAD_RECIPIENTS_STATUS_FACETS_FAIL, LEAD_RECIPIENTS_STATUS_FACETS_REQUEST, LEAD_RECIPIENTS_STATUS_FACETS_SUCCESS, LEAD_RECIPIENTS_REQUEST, LEAD_RECIPIENTS_SUCCESS, LEAD_RECIPIENTS_FAIL, LEAD_RECIPIENTS_CORPORATE_REQUEST, LEAD_RECIPIENTS_CORPORATE_SUCCESS, LEAD_RECIPIENTS_CORPORATE_FAIL, LEAD_RECIPIENTS_ADVANCED_SETTINGS_REQUEST, LEAD_RECIPIENTS_ADVANCED_SETTINGS_SUCCESS, LEAD_RECIPIENTS_ADVANCED_SETTINGS_FAIL, LEAD_RECIPIENTS_USE_DIVISION_RECIPIENT_FAIL, LEAD_RECIPIENTS_USE_DIVISION_RECIPIENT_SUCCESS, LEAD_RECIPIENTS_USE_DIVISION_RECIPIENT_REQUEST, LEAD_RECIPIENTS_CORPORATE_UPDATE_FAIL, LEAD_RECIPIENTS_CORPORATE_UPDATE_SUCCESS, LEAD_RECIPIENTS_CORPORATE_UPDATE_REQUEST, ASSIGN_LEAD_RECIPIENTS_REQUEST, ASSIGN_LEAD_RECIPIENTS_SUCCESS, ASSIGN_LEAD_RECIPIENTS_FAIL } from './types';\r\nimport { assignLeadRecipients, manageLeadRecipients, leadRecipientsStatus, leadRecipientsStates, useDivisionRecipient, leadRecipientsDistributionUpdate, leadRecipientsAdvancedSettings, leadRecipientsCorporate, leadRecipients } from './api';\r\nimport { QueryFailAction, QueryRequestAction, QuerySuccessAction } from '@/redux/models/actions';\r\nimport { MutationFailAction, MutationRequestAction, MutationSuccessAction } from '@/redux/forms/actions';\r\n\r\n/**\r\n * Facets params\r\n */\r\nexport const setLeadRecipientsFacet = (facetName, facetValue) =>\r\n setParams({\r\n [facetName]: facetValue,\r\n page: 1,\r\n });\r\n\r\n/**\r\n * Status facets requests\r\n */\r\nexport const leadRecipientsStatusFacetsRequest = QueryRequestAction(LEAD_RECIPIENTS_STATUS_FACETS_REQUEST, leadRecipientsStatus);\r\nexport const leadRecipientsStatusFacetsSuccess = QuerySuccessAction(LEAD_RECIPIENTS_STATUS_FACETS_SUCCESS);\r\nexport const leadRecipientsStatusFacetsFail = QueryFailAction(LEAD_RECIPIENTS_STATUS_FACETS_FAIL);\r\n\r\n/**\r\n * States facets requests\r\n */\r\nexport const leadRecipientsStatesFacetsRequest = QueryRequestAction(LEAD_RECIPIENTS_STATES_FACETS_REQUEST, leadRecipientsStates);\r\nexport const leadRecipientsStatesFacetsSuccess = QuerySuccessAction(LEAD_RECIPIENTS_STATES_FACETS_SUCCESS);\r\nexport const leadRecipientsStatesFacetsFail = QueryFailAction(LEAD_RECIPIENTS_STATES_FACETS_FAIL);\r\n\r\n/**\r\n * Corporate requests\r\n */\r\nexport const leadRecipientsCorporateRequest = QueryRequestAction(LEAD_RECIPIENTS_CORPORATE_REQUEST, leadRecipientsCorporate);\r\nexport const leadRecipientsCorporateSuccess = QuerySuccessAction(LEAD_RECIPIENTS_CORPORATE_SUCCESS);\r\nexport const leadRecipientsCorporateFail = QueryFailAction(LEAD_RECIPIENTS_CORPORATE_FAIL);\r\n\r\n/**\r\n * Advanced Settings requests\r\n */\r\nexport const leadRecipientsAdvancedSettingsRequest = QueryRequestAction(LEAD_RECIPIENTS_ADVANCED_SETTINGS_REQUEST, leadRecipientsAdvancedSettings);\r\nexport const leadRecipientsAdvancedSettingsSuccess = QuerySuccessAction(LEAD_RECIPIENTS_ADVANCED_SETTINGS_SUCCESS);\r\nexport const leadRecipientsAdvancedSettingsFail = QueryFailAction(LEAD_RECIPIENTS_ADVANCED_SETTINGS_FAIL);\r\n\r\nconst LEAD_RECIPIENT_FAIL_ERROR = 'Error saving the lead recipient information, please try again';\r\n\r\nconst convertErrorMessage = (error) => {\r\n if (error.includes('Email or Ftp Url')) return 'Email or Ftp Url not provided';\r\n return LEAD_RECIPIENT_FAIL_ERROR;\r\n};\r\n/**\r\n * Builder Distribution (Corporate/Advanced Settings) Update\r\n */\r\nexport const leadRecipientsCorporateUpdateRequest = MutationRequestAction(LEAD_RECIPIENTS_CORPORATE_UPDATE_REQUEST, leadRecipientsDistributionUpdate, ['corporateDistribution.leadDeliveryMethod', 'corporateDistribution.ftpServerUrl', 'corporateDistribution.ftpUserName', 'corporateDistribution.ftpPassword']);\r\nexport const leadRecipientsCorporateUpdateSuccess = MutationSuccessAction(LEAD_RECIPIENTS_CORPORATE_UPDATE_SUCCESS);\r\nexport const leadRecipientsCorporateUpdateFail = MutationFailAction(LEAD_RECIPIENTS_CORPORATE_UPDATE_FAIL, LEAD_RECIPIENT_FAIL_ERROR, convertErrorMessage);\r\n\r\n/**\r\n * Manage lead recipients paging params\r\n */\r\nexport const setLeadRecipientsSort = (sort) =>\r\n setParams({\r\n [SORT]: { ...sort },\r\n page: 1,\r\n });\r\nexport const setLeadRecipientsSize = (size) =>\r\n setParams({\r\n [PAGE_SIZE]: size,\r\n page: 1,\r\n });\r\nexport const setLeadRecipientsSearch = (search) =>\r\n setParams({\r\n [SEARCH]: search,\r\n page: 1,\r\n });\r\nexport const setLeadRecipientsPage = (page) => setParam(PAGE_NUMBER, page, MANAGE_LEAD_RECIPIENTS.name);\r\n\r\n/**\r\n * Manage lead recipients requests\r\n */\r\nexport const manageLeadRecipientsRequest = QueryRequestAction(MANAGE_LEAD_RECIPIENTS_REQUEST, manageLeadRecipients);\r\nexport const manageLeadRecipientsSuccess = QuerySuccessAction(MANAGE_LEAD_RECIPIENTS_SUCCESS);\r\nexport const manageLeadRecipientsFail = QueryFailAction(MANAGE_LEAD_RECIPIENTS_FAIL);\r\n\r\n/**\r\n * Lead recipients requests\r\n */\r\nexport const leadRecipientsRequest = QueryRequestAction(LEAD_RECIPIENTS_REQUEST, leadRecipients);\r\nexport const leadRecipientsSuccess = QuerySuccessAction(LEAD_RECIPIENTS_SUCCESS);\r\nexport const leadRecipientsFail = QueryFailAction(LEAD_RECIPIENTS_FAIL);\r\n\r\n/**\r\n * Update lead recipient requests\r\n */\r\nexport const assignLeadRecipientsRequest = (requestArguments) => ({\r\n type: ASSIGN_LEAD_RECIPIENTS_REQUEST,\r\n mutation: assignLeadRecipients(requestArguments),\r\n noEntity: true,\r\n});\r\nexport const assignLeadRecipientsSuccess = MutationSuccessAction(ASSIGN_LEAD_RECIPIENTS_SUCCESS);\r\nexport const assignLeadRecipientsFail = MutationFailAction(ASSIGN_LEAD_RECIPIENTS_FAIL);\r\n\r\nexport const useDivisionRecipientRequest = (params, meta) => ({\r\n type: LEAD_RECIPIENTS_USE_DIVISION_RECIPIENT_REQUEST,\r\n mutation: useDivisionRecipient(params),\r\n data: { id: params?.communityId },\r\n meta,\r\n noEntity: true,\r\n});\r\nexport const useDivisionRecipientSuccess = MutationSuccessAction(LEAD_RECIPIENTS_USE_DIVISION_RECIPIENT_SUCCESS);\r\nexport const useDivisionRecipientFail = MutationFailAction(LEAD_RECIPIENTS_USE_DIVISION_RECIPIENT_FAIL);\r\n","import { getModels } from '@/redux/models/sagas';\r\nimport { STATES, STATUS } from '@/constants/params';\r\nimport { modelRequestSchema } from '@/app/app.entities';\r\nimport { takeLatest, call, put, actionChannel, take } from 'redux-saga/effects';\r\nimport { LEAD_RECIPIENTS_CORPORATE_UPDATE_REQUEST, LEAD_RECIPIENTS_USE_DIVISION_RECIPIENT_REQUEST, LEAD_RECIPIENTS_CORPORATE_REQUEST, LEAD_RECIPIENTS_ADVANCED_SETTINGS_REQUEST, ASSIGN_LEAD_RECIPIENTS_REQUEST, LEAD_RECIPIENTS_REQUEST, LEAD_RECIPIENTS_STATES_FACETS_REQUEST, LEAD_RECIPIENTS_STATUS_FACETS_REQUEST, MANAGE_LEAD_RECIPIENTS_REQUEST } from './types';\r\nimport { manageLeadRecipientsSuccess, manageLeadRecipientsFail, leadRecipientsStatesFacetsFail, leadRecipientsStatesFacetsSuccess, leadRecipientsStatusFacetsFail, leadRecipientsStatusFacetsSuccess, leadRecipientsSuccess, leadRecipientsFail, assignLeadRecipientsSuccess, assignLeadRecipientsFail, leadRecipientsCorporateSuccess, leadRecipientsCorporateFail, leadRecipientsAdvancedSettingsSuccess, leadRecipientsAdvancedSettingsFail, useDivisionRecipientSuccess, useDivisionRecipientFail, leadRecipientsCorporateUpdateSuccess, leadRecipientsCorporateUpdateFail } from './actions';\r\nimport { formsChannel } from '@/redux/forms/sagas';\r\nimport { communityByIdLeadRecipients, leadRecipientsStates, leadRecipientsStatus } from './api';\r\nimport { commitEntity } from '@/redux/forms/api';\r\nimport { buffers } from 'redux-saga';\r\n\r\n/**\r\n * Handles the incoming facets information related to `status`.\r\n * This goes directly to the store and doesn't need to be normalized since it's on-the-fly data.\r\n */\r\nfunction* getStatusFacetsResults({ data: builderId }) {\r\n try {\r\n const { data: { Result: { builders: status } = {} } = {} } = yield call(leadRecipientsStatus, builderId);\r\n\r\n yield put(leadRecipientsStatusFacetsSuccess({ ...status[0], entity: STATUS, path: 'communityCounts' }, modelRequestSchema));\r\n } catch (error) {\r\n yield put(leadRecipientsStatusFacetsFail(error));\r\n }\r\n}\r\n\r\n/**\r\n * Handles the incoming facets information related to `states`.\r\n * This goes directly to the store and doesn't need to be normalized since it's on-the-fly data.\r\n */\r\nfunction* getStatesFacetsResults({ data: builderId }) {\r\n try {\r\n const { data: { Result: { builders: states } = {} } = {} } = yield call(leadRecipientsStates, builderId);\r\n\r\n yield put(leadRecipientsStatesFacetsSuccess({ ...states[0], entity: STATES, path: STATES }, modelRequestSchema));\r\n } catch (error) {\r\n yield put(leadRecipientsStatesFacetsFail(error));\r\n }\r\n}\r\n\r\nexport function* clear(success, fail, { mutation, data: { id } = {}, meta }) {\r\n try {\r\n yield call(commitEntity, mutation);\r\n const response = yield call(commitEntity, communityByIdLeadRecipients(id));\r\n yield put(success(response.data.Result, meta, id));\r\n } catch (error) {\r\n // On fail dispatch the respective action\r\n yield put(fail(error, id, meta));\r\n }\r\n}\r\n\r\nexport function* clearChannel(actionTake, success, fail) {\r\n // Listen to MODEL_REQUEST_CHANNEL actions\r\n const channel = yield actionChannel(actionTake, buffers.expanding());\r\n while (true) {\r\n // On next channel capture take the action\r\n const action = yield take(channel);\r\n // Call the saga with the respective handlers and action\r\n yield clear(success, fail, action);\r\n }\r\n}\r\n\r\nexport const leadRecipientsSagas = [\r\n /**\r\n * This generator listens to LEAD_RECIPIENTS_REQUEST\r\n * and perform sequencial api calls\r\n */\r\n takeLatest(LEAD_RECIPIENTS_REQUEST, getModels, leadRecipientsSuccess, leadRecipientsFail),\r\n /**\r\n * This generator listens to MANAGE_LEAD_RECIPIENTS_REQUEST\r\n * and perform sequencial api calls\r\n * @param { Number } communityId retrieve the school district and schools data for this community\r\n */\r\n takeLatest(MANAGE_LEAD_RECIPIENTS_REQUEST, getModels, manageLeadRecipientsSuccess, manageLeadRecipientsFail),\r\n /**\r\n * This generator listens to MANAGE_LEAD_RECIPIENTS_REQUEST\r\n * and perform sequencial api calls\r\n * @param { Number } communityId retrieve the school district and schools data for this community\r\n */\r\n takeLatest(LEAD_RECIPIENTS_CORPORATE_REQUEST, getModels, leadRecipientsCorporateSuccess, leadRecipientsCorporateFail),\r\n /**\r\n * This generator listens to MANAGE_LEAD_RECIPIENTS_REQUEST\r\n * and perform sequencial api calls\r\n * @param { Number } communityId retrieve the school district and schools data for this community\r\n */\r\n takeLatest(LEAD_RECIPIENTS_ADVANCED_SETTINGS_REQUEST, getModels, leadRecipientsAdvancedSettingsSuccess, leadRecipientsAdvancedSettingsFail),\r\n /**\r\n * This generator listens to LEAD_RECIPIENTS_STATUS_FACETS_REQUEST\r\n * and perform preferential api calls\r\n * @param { Number } communityId retrieve the school district and schools data for this community\r\n */\r\n takeLatest(LEAD_RECIPIENTS_STATUS_FACETS_REQUEST, getStatusFacetsResults),\r\n /**\r\n * This generator listens to LEAD_RECIPIENTS_STATES_FACETS_REQUEST\r\n * and perform preferential api calls\r\n * @param { Number } communityId retrieve the school district and schools data for this community\r\n */\r\n takeLatest(LEAD_RECIPIENTS_STATES_FACETS_REQUEST, getStatesFacetsResults),\r\n /**\r\n * This generator listens to LEAD_RECIPIENTS_STATES_FACETS_REQUEST\r\n * and perform preferential api calls\r\n * @param { Number } communityId retrieve the school district and schools data for this community\r\n */\r\n formsChannel(ASSIGN_LEAD_RECIPIENTS_REQUEST, assignLeadRecipientsSuccess, assignLeadRecipientsFail),\r\n /**\r\n * This generator listens to LEAD_RECIPIENTS_UPDATE_DIVISION_DEFAULT_REQUEST\r\n * and perform preferential api calls\r\n * @param { Number } communityId retrieve the school district and schools data for this community\r\n */\r\n clearChannel(LEAD_RECIPIENTS_USE_DIVISION_RECIPIENT_REQUEST, useDivisionRecipientSuccess, useDivisionRecipientFail),\r\n /**\r\n * This generator listens to LEAD_RECIPIENTS_UPDATE_DIVISION_DEFAULT_REQUEST\r\n * and perform preferential api calls\r\n * @param { Number } communityId retrieve the school district and schools data for this community\r\n */\r\n formsChannel(LEAD_RECIPIENTS_CORPORATE_UPDATE_REQUEST, leadRecipientsCorporateUpdateSuccess, leadRecipientsCorporateUpdateFail),\r\n];\r\n","import { APP_LOADING, APP_ERROR, APP_NOTIFICATION, APP_RESET, LEFT_NAV_VISIBILITY_CHANGED, RUN_ASYNC_REQUEST, RUN_ASYNC_FAIL, RUN_ASYNC_SUCCESS, CLEAR_ERRORS } from './types';\r\n\r\n/**\r\n ACTION CREATORS functions\r\n This is where you define your action creators. All action creators must be functions\r\n that return an object with at least the type property. We do not define any async logic\r\n in this file, that goes to the Sagas.js file for the module\r\n*/\r\n\r\n/**\r\n * Used when the left navigation menu changes its visibility\r\n * @param {Boolean} if the left menu is visible or not\r\n */\r\nexport const leftMenuVisibilityChanged = (visible) => ({ type: LEFT_NAV_VISIBILITY_CHANGED, visible });\r\n\r\n// Action creator when a the loading indicator should be showed in the app\r\nexport const loadingApp = (loading) => ({\r\n type: APP_LOADING,\r\n loading,\r\n});\r\n\r\n// Action creator when a error message should be showed in the app\r\nexport const showError = (message) => ({\r\n type: APP_ERROR,\r\n message,\r\n});\r\n\r\n// Action creator when a notification message should be showed in the app\r\nexport const showNotification = (message) => ({\r\n type: APP_NOTIFICATION,\r\n message,\r\n});\r\n\r\n// Action creator for the app reset\r\nexport const resetApp = () => ({ type: APP_RESET });\r\n\r\nexport const runAsyncRequest = (operation) => ({ type: RUN_ASYNC_REQUEST, data: { operation } });\r\nexport const runAsyncSuccess = (operation) => ({ type: RUN_ASYNC_SUCCESS, data: { operation } });\r\nexport const runAsyncFail = (operation) => ({ type: RUN_ASYNC_FAIL, data: { operation } });\r\n\r\nexport const clearErrors = (actions, modelName, id) => ({ type: CLEAR_ERRORS, actions, modelName, id });\r\n\r\nexport const REFRESH = () => ({ type: 'REFRESH' });\r\n","import { config } from '../../@redux/config/selectors';\r\n// Functions related to jwt tokens\r\n\r\n// Decode the jwt token base64 to exact the Payload part (2nd)\r\nexport const jwtDecode = (token, index) => {\r\n const base64Url = token.split('.')[index];\r\n const base64 = base64Url.replace('-', '+').replace('_', '/');\r\n return JSON.parse(window.atob(base64));\r\n};\r\n\r\nexport const saveToken = (token, exp) => {\r\n localStorage.setItem('jwtToken', token); // change the stored jwt token\r\n // const tokenDecoded = jwtDecode(token, 0); // decode the token\r\n const expTime = Date.now().valueOf() / 1000 + config('JwtExpiration') * 60;\r\n localStorage.setItem('jwtTokenExp', config('JwtExpiration') === 0 && exp ? exp : expTime); // set the expiration date again\r\n};\r\n","// Authentication Sagas\r\n// These are Ajax Calls (side effects handled with Saga Middleware) to the Api\r\nimport { takeEvery, call, put, select, fork } from 'redux-saga/effects';\r\nimport { resetApp } from '../../../@redux/actions';\r\nimport { jwtDecode } from '../../../utils/security/jwt';\r\nimport { b64Encode, encryptAES } from '../../../utils/bdx-lodash-lite/encryption';\r\nimport { LOGIN_REQUEST, LOGOUT, REVALIDATE, RECOVER_PASSWORD_REQUEST, USER_ACTIVITY_REQUEST, RECOVER_USERNAME_REQUEST } from './types';\r\nimport { requestLogin, requestUserInformation, requestRecoverPassword, requestRecoverUsername, insertActivityMutation } from './api';\r\nimport { loginRequestSuccess, loginFail, recoverPasswordFail, recoverPasswordSuccess, userActivitySuccess, userActivityFail, recoverUsernameSuccess, recoverUsernameFail } from './actions';\r\nimport { empty } from '../../../utils/bdx-lodash-lite';\r\nimport { pushState } from '../../../@redux/routes/actions';\r\nimport { modelRequestSchema } from '../../../app.entities';\r\nimport { multipleAttempts } from '../../../utils/saga/saga-helpers';\r\nimport { configureErrorLogging } from '../../../utils/error-handling/logging';\r\nimport { AuthenticationError } from '../../../utils/error-handling/types';\r\nimport { persistor, store } from '../../../app.store';\r\nimport { config } from '@/redux/config/selectors';\r\nimport { navFullContext } from '@/modules/global/@redux/actions';\r\nimport { getCurrentUser, getUserActivities } from './selectors';\r\nimport { versionType, activityTypeCode } from '@/constants/bdx-lookups';\r\n\r\nimport { getLastLocation } from '@/redux/routes/selectors';\r\n\r\nfunction* getUserContext(user) {\r\n // request the permissions and extra information for the logged user\r\n const userInfoResponse = yield call(requestUserInformation, user.id);\r\n\r\n const { userId, userName, firstName, lastName, builderId: nhsUserBuilderId, corpLevelFlag, email, roleGroup, roleName, roleId, dateCreated, dateLastChanged, userPermissions, services, activities, logInActivities, portalProducts, contacts, partner, builders, communities, dDRMonthlyApproval } = userInfoResponse.data.Result.users[0];\r\n\r\n /**\r\n * Get the Partner\r\n */\r\n const { partnerId = null } = userInfoResponse?.data?.Result?.users?.[0]?.partner || {};\r\n /**\r\n * Get the builder\r\n */\r\n const { builderId = null, divisions } = userInfoResponse?.data?.Result?.users?.[0]?.builders?.[0] || {};\r\n /**\r\n * Get the first division\r\n */\r\n const { builderId: divisionId = null } = divisions?.[0] || {};\r\n /**\r\n * Get the first community\r\n */\r\n const { id: communityId = null } = userInfoResponse?.data?.Result?.users?.[0]?.communities?.[0] || {};\r\n\r\n // Set the user in the store\r\n yield put(\r\n loginRequestSuccess(\r\n {\r\n userId,\r\n userName,\r\n firstName,\r\n lastName,\r\n fullName: `${firstName} ${lastName}`,\r\n builderId: nhsUserBuilderId,\r\n corpLevelFlag,\r\n email,\r\n roleGroup,\r\n roleName,\r\n roleId,\r\n dateCreated,\r\n dateLastChanged,\r\n role: user?.role,\r\n builders: !empty(builders) ? builders : null,\r\n partner: !empty(partner) ? partner : null,\r\n communities: !empty(communities) ? communities : null,\r\n portalProducts,\r\n contacts,\r\n dDRMonthlyApproval,\r\n activities: activities.concat(logInActivities),\r\n },\r\n userPermissions,\r\n services,\r\n modelRequestSchema\r\n )\r\n );\r\n\r\n configureErrorLogging(email);\r\n\r\n return {\r\n partnerId,\r\n builderId,\r\n divisionId,\r\n communityId,\r\n };\r\n}\r\n\r\n/*\r\n Handles login event in the app, it does some things\r\n - Retrieve the jwt token, decode it and extract the user info\r\n - Set the user info in the redux store\r\n - Set the jwt token in the app for future calls\r\n - Save the user in the local storage in case user selected the Keep me logged in option\r\n*/\r\nconst signIn = multipleAttempts(\r\n function* login({ data: { user: requestUser = {}, keepMe, lastLocation, accessToken } }) {\r\n const encryptedUser = accessToken || encryptAES(JSON.stringify(requestUser)); // EAS encryption\r\n const response = yield call(requestLogin, encryptedUser);\r\n\r\n // extract the user info from the jwt token\r\n const { UserName, UserId, Roles, expMins } = jwtDecode(response.data.Result.data, 1);\r\n\r\n const user = { name: UserName, id: UserId, role: Roles };\r\n requestUser.username = requestUser.username || UserName;\r\n requestUser.userid = UserId;\r\n // save the jwt token for authentication in future ajax calls\r\n // saveToken(response.data.Result.data, exp);\r\n localStorage.setItem('jwtTokenMinsExp', expMins); // set the expiration date again\r\n localStorage.setItem('jwtInitialTime', new Date());\r\n\r\n // yield call(delay, 500); // See an spinner in the login button\r\n\r\n // If user selected to Keep me in option, set the current user in the localStorage\r\n // so in the next visit it gets authenticated automatically\r\n if (keepMe) {\r\n localStorage.setItem('keepMe', btoa(JSON.stringify(requestUser)));\r\n } else {\r\n localStorage.removeItem('keepMe');\r\n }\r\n\r\n // User information is saved to be able to log in to the current BDXLive when an iframe is used.\r\n localStorage.setItem('userInfoBdxLive', b64Encode(JSON.stringify(requestUser)));\r\n // It is used to know if one of the iframes has already been entered and to be able to log out, so when a new user logs in, they are cleaned.\r\n localStorage.setItem(`callToBdxLive${config('BdxLiveDomain')}`, false);\r\n\r\n localStorage.setItem('reportsCookieValue', btoa(`${encryptAES(JSON.stringify(requestUser))}.BUILDERID.DATE`));\r\n\r\n const { partnerId, builderId, divisionId, communityId } = yield* getUserContext(user);\r\n\r\n yield put(\r\n navFullContext({\r\n partner: partnerId,\r\n builder: builderId,\r\n division: divisionId,\r\n community: communityId,\r\n plan: null,\r\n spec: null,\r\n })\r\n );\r\n\r\n // Redirect the user to the original requested page\r\n yield put(pushState(lastLocation, true));\r\n\r\n /**\r\n * Register user's activity (login).\r\n */\r\n yield call(insertActivityMutation, UserId, activityTypeCode.IN);\r\n },\r\n function* handleError(error) {\r\n // Show error message in case any error in the authentication process\r\n yield put(loginFail(error));\r\n },\r\n 3,\r\n [AuthenticationError]\r\n);\r\n\r\n/*\r\n Handle the logout process in the app, reset the store user information\r\n and redirect the user to the login page\r\n*/\r\nfunction* logout({ data: { href } }) {\r\n try {\r\n // remove the user saved locally when keep me option is selected\r\n localStorage.removeItem('keepMe');\r\n\r\n // The user information used to log in to the current BDXLive is cleaned.\r\n localStorage.removeItem('userInfoBdxLive');\r\n\r\n localStorage.removeItem('reportsCookieValue');\r\n\r\n sessionStorage.removeItem(`chatClosed`);\r\n\r\n sessionStorage.removeItem(`newAdClosed`);\r\n\r\n sessionStorage.removeItem(`whatsNewClosed`);\r\n\r\n sessionStorage.removeItem(`userPreferenceStatus`);\r\n\r\n // Delete the reports cookie so that the session is not maintained even after signing out. To delete it, set an empty cookie with an expiration date in the past.\r\n document.cookie = `CookieRedirectReportsNew=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=zondalive.com;`;\r\n\r\n /**\r\n * Register user's activity (logout).\r\n */\r\n // reset the redux store user info\r\n yield put(resetApp());\r\n yield call(persistor.flush);\r\n yield call(persistor.purge);\r\n } finally {\r\n // reload the page to login page\r\n document.location.href = href;\r\n }\r\n}\r\n\r\nfunction* revalidate({ data: { url, versionChangeType, version } }) {\r\n function redirectOrRefresh(originalUrl, newUrl) {\r\n if (originalUrl === newUrl || originalUrl.includes('sign-in')) {\r\n setTimeout(() => window.location.reload(true), 1000);\r\n } else {\r\n setTimeout(() => {\r\n window.location = newUrl || originalUrl;\r\n }, 1000);\r\n }\r\n }\r\n // if anything fail, just refresh\r\n // function* revalidate({ data: { url, versionChangeType, version } }) {\r\n try {\r\n localStorage.setItem('alreadyUpdated', true);\r\n localStorage.setItem('app_version', version);\r\n sessionStorage.setItem('app_version', version);\r\n\r\n const lastLocation = getLastLocation(store.getState(), false, false);\r\n\r\n if (versionChangeType === versionType.MAJOR && !lastLocation.includes('sign-in')) {\r\n // reset the redux store user info if we are not in the login page\r\n // (no need in we are about to login bc permissions will be reloaded)\r\n yield put(resetApp());\r\n yield call(persistor.flush);\r\n yield call(persistor.purge);\r\n }\r\n\r\n // Only refresh user info if not a major (major force a re login bc we ned to clear the entire redux store)\r\n if (versionChangeType !== versionType.MAJOR) {\r\n const currentUser = yield select(getCurrentUser);\r\n if (currentUser) {\r\n const { userId, role } = currentUser;\r\n yield* getUserContext({ id: userId, role });\r\n }\r\n }\r\n\r\n // changing the logic to unregister service worker, with a newer aproach.\r\n if ('serviceWorker' in navigator) {\r\n // Check if a Service Worker is registered\r\n navigator.serviceWorker.getRegistrations().then((registrations) => {\r\n const unregisterPromises = registrations.map((registration) => registration.unregister());\r\n\r\n Promise.all(unregisterPromises).then((results) => {\r\n const allUnregistered = results.every((unregistered) => unregistered);\r\n\r\n // All Service Workers unregistered\r\n if (allUnregistered) {\r\n // Delete all caches\r\n caches\r\n .keys()\r\n .then((cacheNames) => {\r\n // All caches cleared\r\n return Promise.all(cacheNames.map((cacheName) => caches.delete(cacheName)));\r\n })\r\n .then(() => {\r\n // Perform a hard refresh\r\n redirectOrRefresh(window.location.href, url);\r\n });\r\n }\r\n });\r\n });\r\n }\r\n } catch {\r\n // if something fail like unregister the sw, just refresh\r\n redirectOrRefresh(window.location.href, url);\r\n }\r\n}\r\n\r\nfunction* recoverPassword({ data: { user } }) {\r\n try {\r\n yield call(requestRecoverPassword, user.username);\r\n yield put(recoverPasswordSuccess(modelRequestSchema));\r\n } catch (error) {\r\n // Show error message in case any error in the authentication process\r\n yield put(recoverPasswordFail(error));\r\n }\r\n}\r\n\r\nfunction* recoverUsername({ data: { user } }) {\r\n try {\r\n yield call(requestRecoverUsername, user.email);\r\n yield put(recoverUsernameSuccess(modelRequestSchema));\r\n } catch (error) {\r\n // Show error message in case any error in the authentication process\r\n yield put(recoverUsernameFail(error));\r\n }\r\n}\r\n\r\nfunction* userActivity({ data: { userId, activityCode } }) {\r\n let userActivities = [];\r\n try {\r\n if (activityCode === activityTypeCode.OUT) {\r\n yield call(userActivityLogOut, userId);\r\n } else {\r\n const response = yield call(insertActivityMutation, userId, activityCode);\r\n const { data: { Result: { insertUserActivity: activityData = {} } = {} } = {} } = response;\r\n\r\n userActivities = getUserActivities(store.getState());\r\n userActivities.push(activityData);\r\n yield put(userActivitySuccess({ userId, activities: userActivities }));\r\n }\r\n } catch (error) {\r\n // Show error message in case any error in the authentication process\r\n yield put(userActivityFail(userId, error));\r\n }\r\n}\r\n\r\nfunction* userActivityLogOut(id) {\r\n yield fork(insertActivityMutation, id, activityTypeCode.OUT);\r\n}\r\n\r\n// Sagas Wathcher for Auth Module\r\nexport const authSagas = [takeEvery(LOGIN_REQUEST, signIn), takeEvery(LOGOUT, logout), takeEvery(REVALIDATE, revalidate), takeEvery(RECOVER_PASSWORD_REQUEST, recoverPassword), takeEvery(RECOVER_USERNAME_REQUEST, recoverUsername), takeEvery(USER_ACTIVITY_REQUEST, userActivity)];\r\n","import { takeLatest } from 'redux-saga/effects';\r\nimport { getModels, getModelsChannel } from '../../../@redux/models/sagas';\r\nimport { NAV_COMMUNITY_COMBO_BOX_REQUEST, NAV_DIVISION_COMBO_BOX_REQUEST, NAV_PARTNER_SEARCH_BOX_REQUEST, NAV_BUILDER_SEARCH_BOX_REQUEST, NAV_COMMUNITY_TREE_VIEW_REQUEST, NAV_PLAN_TREE_VIEW_REQUEST, NAV_SPEC_TREE_VIEW_REQUEST, NAV_FULL_TREE_VIEW_REQUEST, NAV_PLAN_COMBO_BOX_REQUEST, NAV_LOT_TREE_VIEW_REQUEST } from './types';\r\nimport { navCommunityComboBoxSuccess, navDivisionComboBoxSuccess, navDivisionComboBoxFail, navPartnerSearchBoxSuccess, navPartnerSearchBoxFail, navBuilderSearchBoxSuccess, navBuilderSearchBoxFail, navCommunityTreeViewSuccess, navCommunityTreeViewFail, navPlanTreeViewSuccess, navPlanTreeViewFail, navSpecTreeViewSuccess, navSpecTreeViewFail, navFullTreeViewSuccess, navFullTreeViewFail, navPlanComboBoxSuccess, navPlanComboBoxFail, navLotTreeViewSuccess, navLotTreeViewFail } from './actions';\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const globalSagas = [\r\n /**\r\n * This generator listens to MODEL_REQUEST_CHANNEL\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(NAV_PARTNER_SEARCH_BOX_REQUEST, getModels, navPartnerSearchBoxSuccess, navPartnerSearchBoxFail),\r\n /**\r\n * This generator listens to MODEL_REQUEST_CHANNEL\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(NAV_BUILDER_SEARCH_BOX_REQUEST, getModels, navBuilderSearchBoxSuccess, navBuilderSearchBoxFail),\r\n /**\r\n * This effect listens to MODEL_REQUEST_LATEST\r\n * and cancels the current operation on future request\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(NAV_COMMUNITY_COMBO_BOX_REQUEST, getModels, navCommunityComboBoxSuccess, navCommunityComboBoxSuccess),\r\n /**\r\n * This effect listens to MODEL_REQUEST_LATEST\r\n * and cancels the current operation on future request\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(NAV_DIVISION_COMBO_BOX_REQUEST, getModels, navDivisionComboBoxSuccess, navDivisionComboBoxFail),\r\n /**\r\n * This effect listens to NAV_PLAN_COMBO_BOX_REQUEST\r\n * and cancels the current operation on future request\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(NAV_PLAN_COMBO_BOX_REQUEST, getModels, navPlanComboBoxSuccess, navPlanComboBoxFail),\r\n /**\r\n * This effect listens to MODEL_REQUEST_LATEST\r\n * and cancels the current operation on future request\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(NAV_FULL_TREE_VIEW_REQUEST, getModels, navFullTreeViewSuccess, navFullTreeViewFail),\r\n /**\r\n * This effect listens to MODEL_REQUEST_LATEST\r\n * and cancels the current operation on future request\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(NAV_COMMUNITY_TREE_VIEW_REQUEST, getModels, navCommunityTreeViewSuccess, navCommunityTreeViewFail),\r\n /**\r\n * This effect listens to MODEL_REQUEST_LATEST\r\n * and cancels the current operation on future request\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(NAV_PLAN_TREE_VIEW_REQUEST, navPlanTreeViewSuccess, navPlanTreeViewFail),\r\n /**\r\n * This effect listens to MODEL_REQUEST_LATEST\r\n * and cancels the current operation on future request\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(NAV_SPEC_TREE_VIEW_REQUEST, navSpecTreeViewSuccess, navSpecTreeViewFail),\r\n /**\r\n * This effect listens to MODEL_REQUEST_LATEST\r\n * and cancels the current operation on future request\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(NAV_LOT_TREE_VIEW_REQUEST, navLotTreeViewSuccess, navLotTreeViewFail),\r\n];\r\n","import { GraphQLQuery } from '../../utils/api/graph-helpers';\r\nimport { singular, toUpperCamelCase } from '../../utils/bdx-lodash-lite/word';\r\n\r\n/**\r\n * Global Search query\r\n * @param {String} entity operation type\r\n * @param {Array} fields Array of strings with the fields to return\r\n * @param {Object} filters Object with the fields added to the search filters\r\n * @param {Array} sortFields Array of {field: Name, order: Asc/Desc } values\r\n * @param {Number} pageNumber Object with the fields added to the search filters\r\n * @param {Number} pageSize Object with the fields added to the search filters\r\n */\r\nexport const SearchQuery = (includeCounts, entity, fields, filters, sorts, pageNumber, pageSize) =>\r\n new GraphQLQuery([\r\n includeCounts\r\n ? {\r\n operation: `${singular(entity)}Count`,\r\n argument: { ...filters },\r\n }\r\n : {},\r\n {\r\n operation: entity,\r\n argument: {\r\n ...filters,\r\n sortBy: `[${sorts.map((sort) => `{ field: ${toUpperCamelCase(sort.path)}, order: ${sort.direction === 'asc' ? 'Asc' : 'Desc'}}`)}]`,\r\n page: pageNumber,\r\n top: pageSize,\r\n },\r\n fields,\r\n },\r\n ]);\r\n","import { SEARCH_REQUEST, SEARCH_SUCCESS, SEARCH_FAIL } from './types';\r\nimport { SearchQuery } from './api';\r\n\r\n/**\r\n * Search Request Action Creator\r\n * @param {*} query api request\r\n * @param {*} meta schema metadata\r\n */\r\nexport const searchRequest = (entity, fields, filters, sortFields, pageNumber, pageSize, meta) => ({ type: SEARCH_REQUEST, entity, query: SearchQuery(true, entity, fields, filters, sortFields, pageNumber, pageSize), meta });\r\n/**\r\n * Search success action creator\r\n * @param {*} data data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const searchSuccess = (entity, entities, total, meta) => ({ type: SEARCH_SUCCESS, data: { entity, entities, total }, meta });\r\n\r\n/**\r\n * Search request fail action creator\r\n * @param {*} error cause\r\n */\r\nexport const searchFail = (error) => ({ type: SEARCH_FAIL, error: true, data: error });\r\n","import { takeEvery, call, put } from 'redux-saga/effects';\r\nimport { SEARCH_REQUEST } from './types';\r\nimport { searchSuccess, searchFail } from './actions';\r\nimport { requestModel } from '../models/api';\r\nimport { singular } from '../../utils/bdx-lodash-lite/word';\r\n\r\n/**\r\n * This Saga is incharged of performing GraphQLQuery calls to the API\r\n * and handling the response\r\n *\r\n * @param { function } success success action to be executed\r\n * @param { function } fail fail action to be executed\r\n * @param { String } entity entity name to search on\r\n * @param { GraphQlQuery } action.query query to be executed\r\n * @param { Object } action.meta action additional data containing the schema\r\n */\r\nexport function* getGridSearch(success, fail, { entity, query, meta }) {\r\n try {\r\n // Async call to the server\r\n const response = yield call(requestModel, query);\r\n\r\n // On success dispatch the respective action\r\n // This will be captured by normalizr middleware\r\n yield put(success(entity, response.data.Result, response.data.Result[`${singular(entity)}Count`], meta));\r\n } catch (error) {\r\n // On fail dispatch the respective action\r\n yield put(fail(error));\r\n }\r\n}\r\n\r\n/**\r\n * Saga for Searchs\r\n */\r\nexport const searchSagas = [\r\n /**\r\n * This effect listens to SEARCH_REQUEST\r\n * and cancels the current operation on future request\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeEvery(SEARCH_REQUEST, getGridSearch, searchSuccess, searchFail),\r\n];\r\n","import { qif } from '@/utils/api/graph-helpers';\r\n\r\nimport { capitalize, empty, JSONText } from '@/lodash/';\r\n\r\nconst API_GET_CHANGE_HISTORY_FIELDS = `\r\n entityId\r\n displayValue\r\n action\r\n entityType\r\n dateCreated\r\n source\r\n sitePage\r\n user {\r\n userId\r\n userName\r\n name\r\n }\r\n changedEntities {\r\n displayValue\r\n entityId\r\n name\r\n type\r\n fields {\r\n fieldName,\r\n value\r\n }\r\n }\r\n associatedEntities {\r\n displayValue\r\n entityId\r\n name\r\n type\r\n fields {\r\n fieldName,\r\n value\r\n }\r\n }\r\n changedFields {\r\n entityId\r\n name\r\n changes {\r\n fieldName\r\n previousValue\r\n newValue\r\n type\r\n }\r\n }\r\n `;\r\n\r\n/**\r\n * Global Search query\r\n * @param {String} entity bdx Entity to retrieve the change history (Plan, Spec, Community) (BdxEntity type on graphql)\r\n * @param {String} searchTerm filter the change history by field name, user name or value name.\r\n * @param {Datetime} startDate start date to filter on the change history\r\n * @param {Datetime} endDate end date to filter on the change history\r\n */\r\nexport const changeHistorySearchApi = ({ entityIds, entities, searchTerm, fieldName, changedEntities, excludedEntities, startDate, endDate, page, size }) => `query { \r\n changeHistory(entityIds: [${entityIds.map((entityId) => entityId)}], bdxEntity: [${entities.map(({ model }) => capitalize(model))}]\r\n ${qif(searchTerm, () => `, search: \"${searchTerm}\"`)} \r\n ${qif(fieldName, () => `, fieldName: \"${fieldName}\"`)}\r\n ${!empty(changedEntities) ? `, changedEntities: [${changedEntities.map((entity) => JSONText(entity))}]` : ''}\r\n ${!empty(excludedEntities) ? `, excludeEntities: [${excludedEntities.map((entity) => JSONText(entity))}]` : ''}\r\n ${qif(startDate || endDate, () => `, date: {${qif(startDate, () => `gte: \"${startDate}\",`)} ${qif(endDate, () => `lte: \"${endDate}\"`)}}`)}\r\n ${qif(size, () => `.top: ${size}`)} \r\n ${qif(page, () => `.page: ${page}`)}) {\r\n id\r\n ${API_GET_CHANGE_HISTORY_FIELDS}\r\n }\r\n}`;\r\n","import { CHANGE_HISTORY_REQUEST, CHANGE_HISTORY_SUCCESS, CHANGE_HISTORY_FAIL } from './types';\r\nimport { changeHistorySearchApi } from './api';\r\nimport { capitalize, empty } from '@/lodash/';\r\n\r\n/**\r\n * Change History Request Action Creator\r\n */\r\n\r\n/**\r\n * Requests change history information to display in the change history generic componwent\r\n */\r\nexport const changeHistoryRequest = (filters) => ({\r\n type: CHANGE_HISTORY_REQUEST,\r\n entity: filters.entities?.length > 1 ? filters.entities : capitalize(filters.entities[0]?.model),\r\n data: { entityId: filters.entityIds?.length > 1 ? filters.entityIds : filters.entityIds[0] },\r\n query: changeHistorySearchApi(filters),\r\n});\r\n\r\nexport const changeHistorySuccess = (entity, entityId, historyData, total, model) => ({ type: CHANGE_HISTORY_SUCCESS, data: { entityId, entity, result: historyData, total }, meta: model });\r\nexport const changeHistoryFail = (error, entityId, model) => ({ type: CHANGE_HISTORY_FAIL, error: true, meta: model, data: { entityId, appMessage: 'Error retrieving change history data ', errorMessage: empty(error) ? 'Error retrieving change history data' : error } });\r\n","import { takeLatest, call, put } from 'redux-saga/effects';\r\nimport { CHANGE_HISTORY_REQUEST } from './types';\r\nimport { changeHistorySuccess, changeHistoryFail } from './actions';\r\nimport { requestModel } from '@/redux/models/api';\r\n\r\n/**\r\n * Handles the search for change history\r\n */\r\nfunction* getChangeHistorySearch(success, fail, { entity, data: { entityId }, query, meta }) {\r\n try {\r\n const response = yield call(requestModel, query);\r\n\r\n yield put(success(entity, entityId, response.data.Result.changeHistory, response.data.Result.count, meta));\r\n } catch (error) {\r\n yield put(fail(error, entityId, meta));\r\n }\r\n}\r\n\r\n/**\r\n * Saga for Searchs\r\n */\r\nexport const changeHistorySagas = [\r\n /**\r\n * This generator listens to CHANGE_HISTORY_SUCCESS\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(CHANGE_HISTORY_REQUEST, getChangeHistorySearch, changeHistorySuccess, changeHistoryFail),\r\n];\r\n","export const DATA_LOCKS_REQUEST = 'bdxlive/data_locks/data_locks_request';\r\nexport const DATA_LOCKS_SUCCESS = 'bdxlive/data_locks/data_locks_success';\r\nexport const DATA_LOCKS_FAIL = 'bdxlive/data_locks/data_locks_fail';\r\n\r\nexport const DATA_LOCKS_SAVE_REQUEST = 'bdxlive/data_locks/data_locks_save_request';\r\nexport const DATA_LOCKS_SAVE_SUCCESS = 'bdxlive/data_locks/data_locks_save_success';\r\nexport const DATA_LOCKS_SAVE_FAIL = 'bdxlive/data_locks/data_locks_save_fail';\r\n\r\nexport const BUILDER_DATA_LOCKS_SAVE_REQUEST = 'bdxlive/data_locks/builder_data_locks_save_request';\r\nexport const BUILDER_DATA_LOCKS_SAVE_SUCCESS = 'bdxlive/data_locks/builder_data_locks_save_success';\r\nexport const BUILDER_DATA_LOCKS_SAVE_FAIL = 'bdxlive/data_locks/builder_data_locks_save_fail';\r\n","import { dataLocksFields } from '@/constants/bdx-lookups';\r\nimport { toUpperCamelCase, toLowerCamelCase, plural } from '@/lodash/';\r\n\r\n/**\r\n * Data Locks Dynamic query\r\n * @param {String} entity bdx Entity to retrieve the change history (Plan, Spec, Community) (BdxEntity type on graphql)\r\n * @param {Number} entityId entity Id (communityId, planId, or specId) to consult\r\n */\r\nexport const dataLocksQueryApi = ({ entityId, entityName }) => `query { \r\n ${plural(entityName)}(${entityName}Id: ${entityId}) {\r\n dataLocks { ${Object.keys(dataLocksFields[toUpperCamelCase(entityName)])\r\n .map((k) => toLowerCamelCase(k))\r\n .join(',')} }\r\n }\r\n}`;\r\n\r\n/**\r\n * Data Locks Dynamic mutation\r\n * @param {String} entity bdx Entity to retrieve the change history (Plan, Spec, Community) (BdxEntity type on graphql)\r\n * @param {Number} entityId entity Id (communityId, planId, or specId) to consult\r\n * @param {Object} dataLocks object with one or more datalocks property values\r\n */\r\nexport const dataLocksMutationApi = ({ entityId, entityName, dataLocks }) => `mutation { \r\n update${toUpperCamelCase(entityName)}(id: ${entityId}, dataLocks: { ${Object.keys(dataLocks).map((key) => `${key}: ${dataLocks[key]},`)}}) {\r\n id\r\n dataLocks { ${Object.keys(dataLocksFields[toUpperCamelCase(entityName)])\r\n .map((k) => toLowerCamelCase(k))\r\n .join(',')}\r\n } \r\n }\r\n }`;\r\n\r\n/**\r\n * Data Locks Dynamic mutation for builder\r\n *\r\n */\r\nexport const builderDataLocksMutationApi = ({ entityId, entityName, dataLocks }) => `mutation { \r\n updateBuilder(builderId: ${entityId}, dataLocks: { ${Object.keys(dataLocks).map((key) => `${key}: ${dataLocks[key]},`)}}) {\r\n builderId\r\n dataLocks { ${Object.keys(dataLocksFields[toUpperCamelCase(entityName)])\r\n .map((k) => toLowerCamelCase(k))\r\n .join(',')}\r\n } \r\n }\r\n }`;\r\n","import { DATA_LOCKS_REQUEST, DATA_LOCKS_SUCCESS, DATA_LOCKS_FAIL, DATA_LOCKS_SAVE_REQUEST, DATA_LOCKS_SAVE_SUCCESS, DATA_LOCKS_SAVE_FAIL, BUILDER_DATA_LOCKS_SAVE_REQUEST, BUILDER_DATA_LOCKS_SAVE_SUCCESS, BUILDER_DATA_LOCKS_SAVE_FAIL } from './types';\r\nimport { dataLocksQueryApi, dataLocksMutationApi, builderDataLocksMutationApi } from './api';\r\nimport { modelMutateSchema } from '@/app/app.entities';\r\nimport { QueryFailAction, QueryRequestAction, QuerySuccessAction } from '@/redux/models/actions';\r\n\r\n/**\r\n * Data locks Request Action Creator\r\n */\r\n\r\n/**\r\n * Requests data locks information to display in the change history generic componwent\r\n */\r\n\r\nexport const dataLocksRequest = QueryRequestAction(DATA_LOCKS_REQUEST, dataLocksQueryApi);\r\nexport const dataLocksRequestSuccess = QuerySuccessAction(DATA_LOCKS_SUCCESS);\r\nexport const dataLocksRequestFail = QueryFailAction(DATA_LOCKS_FAIL, (meta) => `Error loading data locks information for the ${meta.model.model}`);\r\n\r\nexport const dataLocksSaveRequest = QueryRequestAction(DATA_LOCKS_SAVE_REQUEST, dataLocksMutationApi, null, modelMutateSchema);\r\nexport const dataLocksSaveSuccess = QuerySuccessAction(DATA_LOCKS_SAVE_SUCCESS);\r\nexport const dataLocksSaveFail = QueryFailAction(DATA_LOCKS_SAVE_FAIL);\r\n\r\nexport const builderDataLocksSaveRequest = QueryRequestAction(BUILDER_DATA_LOCKS_SAVE_REQUEST, builderDataLocksMutationApi, null, modelMutateSchema);\r\nexport const builderDataLocksSaveSuccess = QuerySuccessAction(BUILDER_DATA_LOCKS_SAVE_SUCCESS);\r\nexport const builderDataLocksSaveFail = QueryFailAction(BUILDER_DATA_LOCKS_SAVE_FAIL);\r\n","import { BUILDER_DATA_LOCKS_SAVE_REQUEST, DATA_LOCKS_REQUEST, DATA_LOCKS_SAVE_REQUEST } from './types';\r\nimport { dataLocksRequestSuccess, dataLocksRequestFail, dataLocksSaveSuccess, dataLocksSaveFail, builderDataLocksSaveSuccess, builderDataLocksSaveFail } from './actions';\r\nimport { takeLatest } from 'redux-saga/effects';\r\nimport { getModels } from '@/redux/models/sagas';\r\n\r\n/**\r\n * Saga for Searchs\r\n */\r\nexport const dataLocksSagas = [\r\n /**\r\n * This generates listens to DATA_LOCKS Queries\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(DATA_LOCKS_REQUEST, getModels, dataLocksRequestSuccess, dataLocksRequestFail),\r\n /* This generator listens to DATA LOCKS Mutation\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(DATA_LOCKS_SAVE_REQUEST, getModels, dataLocksSaveSuccess, dataLocksSaveFail),\r\n takeLatest(BUILDER_DATA_LOCKS_SAVE_REQUEST, getModels, builderDataLocksSaveSuccess, builderDataLocksSaveFail),\r\n];\r\n","/**\r\n * List of API calls methods used by the configuration redux\r\n * @author Gary Valverde Hampton \r\n */\r\n\r\n/**\r\n * Client Import\r\n */\r\nimport { appApiClient } from '../../utils/api/api';\r\n\r\n/**\r\n * Endpoints\r\n */\r\nconst API_CONTENT = (sectionName) => `/content/section/${sectionName}`;\r\n\r\n/**\r\n * Endpoint request\r\n */\r\nexport const requestContentApi = (sectionName) => appApiClient.get(API_CONTENT(sectionName));\r\n","/**\r\n * Action module contained in ConfigRedux namespace\r\n * @author Gary Valverde Hampton \r\n */\r\nimport { CONTENT_REQUEST_SUCCESS, CONTENT_REQUEST_FAIL, CONTENT_REQUEST } from './types';\r\n\r\n/**\r\n * BHI Content request action creator\r\n */\r\nexport const contentRequest = (sectionName) => ({ type: CONTENT_REQUEST, sectionName });\r\n/**\r\n * BHI Content request success action creator\r\n * @param { Object } config configuration object\r\n */\r\nexport const contentSuccess = (sectionName, content) => ({ type: CONTENT_REQUEST_SUCCESS, data: { sectionName, content } });\r\n/**\r\n * BHI Content request error action creator\r\n * @param { Error } error error thrown\r\n */\r\nexport const contentFail = (error) => ({ type: CONTENT_REQUEST_FAIL, error: true, errorMessage: error.appMessage });\r\n","export const INCREMENT_BOOST_PERF_FIRST_SLIDE = 'INCREMENT_BOOST_PERF_FIRST_SLIDE';\r\n","import { INCREMENT_BOOST_PERF_FIRST_SLIDE } from './types';\r\n\r\nexport const incrementBootPerfFirstSlide = (max) => ({ type: INCREMENT_BOOST_PERF_FIRST_SLIDE, max });\r\n","/**\r\n * Get configuration saga\r\n * @author Gary Valverde Hampton \r\n */\r\nimport { takeEvery, call, put } from 'redux-saga/effects';\r\nimport { requestContentApi } from './api';\r\nimport { CONTENT_REQUEST } from './types';\r\nimport { contentSuccess, contentFail } from './actions';\r\nimport { incrementBootPerfFirstSlide } from '../../modules/content/views/dashboard/@redux/actions';\r\nimport { bhiContent } from '@/constants/bdx-lookups';\r\n\r\nfunction* requestContent({ sectionName }) {\r\n try {\r\n const response = yield call(requestContentApi, sectionName);\r\n\r\n if (sectionName === bhiContent.BOOSTYOURPERFORMANCE) {\r\n yield put(incrementBootPerfFirstSlide(response.data.Result.length));\r\n }\r\n\r\n yield put(contentSuccess(sectionName, response.data.Result));\r\n } catch (error) {\r\n // Show error message in case any error in the authentication process\r\n yield put(contentFail(error));\r\n }\r\n}\r\n\r\nexport const contentSagas = [takeEvery(CONTENT_REQUEST, requestContent)];\r\n","import { modelRequestSchema } from '../../../app.entities';\r\n\r\n/**\r\n This is where you define your action creators. All action creators must be functions\r\n that return an object with at least the type property. We do not define any async\r\n logic in this file.\r\n*/\r\n\r\n/**\r\n * Generic Community Request Actions\r\n */\r\n\r\nimport { LISTING_DATACOMPLETENESS_REQUEST, LISTING_DATACOMPLETENESS_SUCCESS, LISTING_DATACOMPLETENESS_FAIL } from './types';\r\n\r\nexport const listingDataCompletenessRequest = (model, level, builderId, communityId, planId, specId) => ({\r\n type: LISTING_DATACOMPLETENESS_REQUEST,\r\n data: {\r\n level,\r\n communityId,\r\n builderId,\r\n planId,\r\n specId,\r\n entityId: specId || planId || communityId,\r\n },\r\n meta: { model },\r\n});\r\n\r\nexport const listingDataCompletenessSuccess = (entities, entityId, model) => ({ type: LISTING_DATACOMPLETENESS_SUCCESS, data: { entityId, entities }, meta: { model, schema: modelRequestSchema } });\r\n\r\nexport const listingDataCompletenessFail = (error, entityId, model) => ({ type: LISTING_DATACOMPLETENESS_FAIL, error: true, data: { entityId, appMessage: `Error loading ${model.name} data completeness information`, errorMessage: error.message }, meta: { model } });\r\n","import { axiosClient } from '../../../utils/api/api';\r\nimport { singular } from '../../../utils/bdx-lodash-lite/word';\r\nimport { config } from '../../../@redux/config/selectors';\r\n\r\n// Data Completeness endpoint in the old BDX Live API\r\nexport const requestListingCompletenessApi = (model, level, builderId, communityId, planId, specId) => axiosClient(config('ApiBdxLiveBaseUrl')).get(`/scorecard/getscoredataby${singular(model.name)}id/user/token/en/?divisionID=${builderId}${communityId ? `&communityID=${communityId}` : ''}${planId ? `&planID=${planId}` : ''}${specId ? `&specID=${specId}` : ''}&returnScoreType=${level}`, null);\r\n","import { takeLatest, call, put } from 'redux-saga/effects';\r\nimport { listingDataCompletenessSuccess, listingDataCompletenessFail } from './actions';\r\nimport { LISTING_DATACOMPLETENESS_REQUEST } from './types';\r\nimport { requestListingCompletenessApi } from './api';\r\nimport { Community } from '@/models/Community';\r\n\r\n/*\r\n Handles the retrive of Community Details information for community Details page.\r\n*/\r\nfunction* requestListingCompleteness({ data: { level, builderId, communityId, planId, specId }, meta: { model } }) {\r\n const entityId = specId || planId || communityId;\r\n\r\n try {\r\n const response = yield call(requestListingCompletenessApi, model, level, builderId, communityId, planId, specId);\r\n\r\n if (planId || specId) {\r\n const response2 = yield call(requestListingCompletenessApi, Community(), level, builderId, communityId);\r\n response.data.Result.communityScore = response2.data.Result.communityScore;\r\n }\r\n\r\n const communityScore = (response.data.Result.scoreCardCommunity && response.data.Result.scoreCardCommunity.communityScore) || response.data.Result.communityScore;\r\n const homeScore = (response.data.Result.scoreCardCommunity && response.data.Result.scoreCardCommunity.scoreHomes) || response.data.Result.specScore || response.data.Result.planScore;\r\n\r\n const entity = { id: entityId, communityScore, homeScore };\r\n yield put(listingDataCompletenessSuccess({ [model.name]: [entity] }, entityId, model));\r\n } catch (error) {\r\n // Show error message in case any error in the authentication process\r\n yield put(listingDataCompletenessFail(error, entityId, model));\r\n }\r\n}\r\n\r\n// Saga Watcher for Comm Detail Module\r\nexport const listingDetailSagas = [\r\n /**\r\n * Handle the Community Data Completeness information listening to the COMMUNITY_DATACOMPLETENESS_REQUEST Action type\r\n */\r\n takeLatest(LISTING_DATACOMPLETENESS_REQUEST, requestListingCompleteness),\r\n];\r\n","import { LOCATION_ZIP_REQUEST, LOCATION_ZIP_SUCCESS, LOCATION_ZIP_FAIL } from './types';\r\n\r\n/**\r\n * Search Request Action Creator\r\n * @param {*} zip zip code to search\r\n * @param {*} partnerId partner id\r\n */\r\nexport const searchZipRequest = (data) => ({ type: LOCATION_ZIP_REQUEST, data });\r\n/**\r\n * Search success action creator\r\n * @param {*} data data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const searchZipSuccess = (partnerId, zipLocations) => ({ type: LOCATION_ZIP_SUCCESS, data: { partnerId, zipLocations } });\r\n\r\n/**\r\n * Search request fail action creator\r\n * @param {*} error cause\r\n */\r\nexport const searchZipFail = (error) => ({ type: LOCATION_ZIP_FAIL, error: true, data: error });\r\n","/**\r\n * Manage homes specs request (for the specs grid)\r\n */\r\nexport const MANAGE_HOMES_SPECS_REQUEST = 'bdxlive/community_detail/manage_homes/specs_request';\r\nexport const MANAGE_HOMES_SPECS_SUCCESS = 'bdxlive/community_detail/manage_homes/specs_success';\r\nexport const MANAGE_HOMES_SPECS_FAIL = 'bdxlive/community_detail/manage_homes/specs_fail';\r\n\r\n/**\r\n * Manage homes plans request (for the plans grid)\r\n */\r\nexport const MANAGE_HOMES_PLANS_REQUEST = 'bdxlive/community_detail/manage_homes/plans_request';\r\nexport const MANAGE_HOMES_PLANS_SUCCESS = 'bdxlive/community_detail/manage_homes/plans_success';\r\nexport const MANAGE_HOMES_PLANS_FAIL = 'bdxlive/community_detail/manage_homes/plans_fail';\r\n\r\n/**\r\n * Manage homes update plans mutations\r\n */\r\nexport const MANAGE_HOMES_UPDATE_PLAN_REQUEST = 'bdxlive/community_detail/manage_homes/update_plan_request';\r\nexport const MANAGE_HOMES_UPDATE_PLAN_SUCCESS = 'bdxlive/community_detail/manage_homes/update_plan_success';\r\nexport const MANAGE_HOMES_UPDATE_PLAN_FAIL = 'bdxlive/community_detail/manage_homes/update_plan_fail';\r\n\r\n/**\r\n * Manage homes update specs mutations\r\n */\r\nexport const MANAGE_HOMES_UPDATE_SPEC_REQUEST = 'bdxlive/community_detail/manage_homes/update_spec_request';\r\nexport const MANAGE_HOMES_UPDATE_SPEC_SUCCESS = 'bdxlive/community_detail/manage_homes/update_spec_success';\r\nexport const MANAGE_HOMES_UPDATE_SPEC_FAIL = 'bdxlive/community_detail/manage_homes/update_spec_fail';\r\n","import { empty } from '@/lodash/';\r\n\r\n/**\r\n * Manage homes specs request (for the specs grid)\r\n * @param { Object } requestArguments\r\n */\r\nexport const manageHomesPlans = ({ communityId }) => `query {\r\n communities(communityId: ${communityId}) {\r\n id\r\n marketingStatus\r\n plans(status: [Active, Inactive, SpecOnly], top:300, page:0, sortBy: [{field: StatusAndName}]) {\r\n id\r\n name\r\n number\r\n basePrice\r\n status\r\n parentPlanId\r\n baths\r\n halfBaths\r\n beds\r\n garages\r\n squareFeet\r\n \tstories\r\n hotHome {\r\n title\r\n description\r\n }\r\n community{\r\n id\r\n }\r\n parentPlan {\r\n id\r\n builder {\r\n builderId\r\n parentBuilderId\r\n }\r\n }\r\n }\r\n }\r\n}`;\r\n\r\n/**\r\n * Manage homes plans request (for the plans grid)\r\n * @param { Object } requestArguments\r\n */\r\nexport const manageHomesSpecs = ({ communityId }) => `query {\r\n communities(communityId: ${communityId}) {\r\n id\r\n marketingStatus\r\n specs(status: [Active, Inactive], , top:300, page:0, sortBy: [{field: StatusAndName}]) {\r\n id\r\n plan {\r\n id\r\n name\r\n }\r\n community{\r\n id\r\n }\r\n number\r\n streetAddress1\r\n price\r\n type\r\n moveInDate\r\n status\r\n hotHome {\r\n title\r\n description\r\n }\r\n }\r\n }\r\n}`;\r\n\r\n/**\r\n * Manage Homes Plan Update Mutation\r\n * @param { Object } requestArguments\r\n */\r\nexport const manageHomesUpdatePlan = (entities) => `\r\n mutation {\r\n ${entities.map(\r\n ({ id, basePrice, status, hotHome }, index) => `\r\n plan${index}: updatePlan(\r\n id: ${id},\r\n ${basePrice !== undefined ? `basePrice: ${basePrice},` : ``}\r\n ${status !== undefined ? `status: ${status},` : ``}\r\n ${\r\n hotHome !== undefined\r\n ? (!empty(hotHome) &&\r\n `\r\n hotHome: {\r\n ${hotHome.title !== undefined ? `title: \"${hotHome.title}\"` : ``},\r\n ${hotHome.description !== undefined ? `description: \"${hotHome.description}\"` : ``}\r\n }\r\n `) ||\r\n `hotHome: {}` ||\r\n ``\r\n : ``\r\n }\r\n ) {\r\n ...Plan\r\n }`\r\n )}\r\n }\r\n\r\n fragment Plan on Plan {\r\n id\r\n name\r\n number\r\n basePrice\r\n status\r\n parentPlanId\r\n baths\r\n beds\r\n garages\r\n squareFeet\r\n stories\r\n hotHome {\r\n title\r\n description\r\n }\r\n }\r\n`;\r\n\r\n/**\r\n * Manage Homes Spec Update Mutation\r\n * @param { Object } requestArguments\r\n */\r\nexport const manageHomesUpdateSpec = (entities) => `\r\n mutation {\r\n ${entities.map(\r\n ({ id, price, status, moveInDate, hotHome }, index) => `\r\n spec${index}: updateSpec(\r\n id: ${id},\r\n ${price !== undefined ? `price: ${price},` : ``}\r\n ${moveInDate !== undefined ? `moveInDate: \"${!empty(moveInDate) ? moveInDate : '0001-01-01T00:00:00'}\",` : ``}\r\n ${status !== undefined ? `status: ${status},` : ``}\r\n ${\r\n hotHome !== undefined\r\n ? (!empty(hotHome) &&\r\n `\r\n hotHome: {\r\n ${hotHome.title !== undefined ? `title: \"${hotHome.title}\"` : ``},\r\n ${hotHome.description !== undefined ? `description: \"${hotHome.description}\"` : ``}\r\n }\r\n `) ||\r\n `hotHome: {}` ||\r\n ``\r\n : ``\r\n }\r\n ) {\r\n ...Specification\r\n }`\r\n )}\r\n }\r\n\r\n fragment Specification on Specification {\r\n id\r\n plan {\r\n id\r\n name\r\n }\r\n number\r\n streetAddress1\r\n price\r\n type\r\n moveInDate\r\n status\r\n hotHome {\r\n title\r\n description\r\n }\r\n }\r\n`;\r\n","import { QueryRequestAction, QuerySuccessAction, QueryFailAction } from '@/redux/models/actions';\r\nimport { Community } from '@/models/Community';\r\nimport { MutationModelRequestAction, MutationModelSuccessAction, MutationModelFailAction } from '@/redux/forms/actions';\r\nimport { MANAGE_HOMES_SPECS_FAIL, MANAGE_HOMES_SPECS_SUCCESS, MANAGE_HOMES_SPECS_REQUEST, MANAGE_HOMES_PLANS_REQUEST, MANAGE_HOMES_PLANS_SUCCESS, MANAGE_HOMES_PLANS_FAIL, MANAGE_HOMES_UPDATE_PLAN_REQUEST, MANAGE_HOMES_UPDATE_PLAN_SUCCESS, MANAGE_HOMES_UPDATE_PLAN_FAIL, MANAGE_HOMES_UPDATE_SPEC_REQUEST, MANAGE_HOMES_UPDATE_SPEC_SUCCESS, MANAGE_HOMES_UPDATE_SPEC_FAIL } from './types';\r\nimport { manageHomesSpecs, manageHomesPlans, manageHomesUpdatePlan, manageHomesUpdateSpec } from './api';\r\n\r\n/**\r\n * Manage homes specs request (for the specs grid)\r\n */\r\nexport const manageHomesSpecsRequest = QueryRequestAction(MANAGE_HOMES_SPECS_REQUEST, manageHomesSpecs, Community());\r\nexport const manageHomesSpecsSuccess = QuerySuccessAction(MANAGE_HOMES_SPECS_SUCCESS);\r\nexport const manageHomesSpecsFail = QueryFailAction(MANAGE_HOMES_SPECS_FAIL);\r\n\r\n/**\r\n * Manage homes plans request (for the plans grid)\r\n */\r\nexport const manageHomesPlansRequest = QueryRequestAction(MANAGE_HOMES_PLANS_REQUEST, manageHomesPlans, Community());\r\nexport const manageHomesPlansSuccess = QuerySuccessAction(MANAGE_HOMES_PLANS_SUCCESS);\r\nexport const manageHomesPlansFail = QueryFailAction(MANAGE_HOMES_PLANS_FAIL);\r\n\r\n/**\r\n * Manage homes plans update mutations\r\n */\r\nexport const manageHomesPlanUpdateRequest = MutationModelRequestAction(MANAGE_HOMES_UPDATE_PLAN_REQUEST, manageHomesUpdatePlan, ['hotHome.title', 'hotHome.description']);\r\nexport const manageHomesPlanUpdateSuccess = MutationModelSuccessAction(MANAGE_HOMES_UPDATE_PLAN_SUCCESS);\r\nexport const manageHomesPlanUpdateFail = MutationModelFailAction(MANAGE_HOMES_UPDATE_PLAN_FAIL);\r\n\r\n/**\r\n * Manage homes specs update mutations\r\n */\r\nexport const manageHomesSpecUpdateRequest = MutationModelRequestAction(MANAGE_HOMES_UPDATE_SPEC_REQUEST, manageHomesUpdateSpec);\r\nexport const manageHomesSpecUpdateSuccess = MutationModelSuccessAction(MANAGE_HOMES_UPDATE_SPEC_SUCCESS);\r\nexport const manageHomesSpecUpdateFail = MutationModelFailAction(MANAGE_HOMES_UPDATE_SPEC_FAIL);\r\n","import { getModelsChannel } from '../../../../../@redux/models/sagas';\r\nimport { MANAGE_HOMES_SPECS_REQUEST, MANAGE_HOMES_PLANS_REQUEST } from './types';\r\nimport { manageHomesSpecsSuccess, manageHomesSpecsFail, manageHomesPlansFail, manageHomesPlansSuccess } from './actions';\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const manageHomesSagas = [\r\n /**\r\n * This generator listens to MANAGE_HOMES_SPECS_REQUEST\r\n * and perform sequencial api calls\r\n * @param { Number } communityId\r\n */\r\n getModelsChannel(MANAGE_HOMES_SPECS_REQUEST, manageHomesSpecsSuccess, manageHomesSpecsFail),\r\n /**\r\n * This generator listens to MANAGE_HOMES_PLANS_REQUEST\r\n * and perform sequencial api calls\r\n * @param { Number } communityId\r\n */\r\n getModelsChannel(MANAGE_HOMES_PLANS_REQUEST, manageHomesPlansSuccess, manageHomesPlansFail),\r\n];\r\n","/**\r\n * Community Standard Amenities Requests\r\n */\r\nexport const STANDARD_AMENITIES_REQUEST = 'bdxlive/community_detail/amenities_utilities/standard_amenities_request';\r\nexport const STANDARD_AMENITIES_SUCCESS = 'bdxlive/community_detail/amenities_utilities/standard_amenities_success';\r\nexport const STANDARD_AMENITIES_FAIL = 'bdxlive/community_detail/amenities_utilities/standard_amenities_fail';\r\n\r\n/**\r\n * Community Community Services Requests\r\n */\r\nexport const COMMUNITY_SERVICES_REQUEST = 'bdxlive/community_detail/amenities_utilities/community_services_request';\r\nexport const COMMUNITY_SERVICES_SUCCESS = 'bdxlive/community_detail/amenities_utilities/community_services_success';\r\nexport const COMMUNITY_SERVICES_FAIL = 'bdxlive/community_detail/amenities_utilities/community_services_fail';\r\n\r\n/**\r\n * Community HOA Requests\r\n */\r\nexport const COMMUNITY_HOA_REQUEST = 'bdxlive/community_detail/amenities_utilities/community_hoa_request';\r\nexport const COMMUNITY_HOA_SUCCESS = 'bdxlive/community_detail/amenities_utilities/community_hoa_success';\r\nexport const COMMUNITY_HOA_FAIL = 'bdxlive/community_detail/amenities_utilities/community_hoa_fail';\r\n\r\n/**\r\n * Community Open Amenities Requests\r\n */\r\nexport const OPEN_AMENITIES_REQUEST = 'bdxlive/community_detail/amenities_utilities/open_amenities_request';\r\nexport const OPEN_AMENITIES_SUCCESS = 'bdxlive/community_detail/amenities_utilities/open_amenities_success';\r\nexport const OPEN_AMENITIES_FAIL = 'bdxlive/community_detail/amenities_utilities/open_amenities_fail';\r\n\r\n/**\r\n * Community Open Amenities Insert Mutation\r\n */\r\nexport const OPEN_AMENITIES_INSERT_MUTATION_REQUEST = 'bdxlive/community_detail/amenities_utilities/open_amenities_insert_mutation_request';\r\nexport const OPEN_AMENITIES_INSERT_MUTATION_SUCCESS = 'bdxlive/community_detail/amenities_utilities/open_amenities_insert_mutation_success';\r\nexport const OPEN_AMENITIES_INSERT_MUTATION_FAIL = 'bdxlive/community_detail/amenities_utilities/open_amenities_insert_mutation_fail';\r\n\r\n/**\r\n * Community Open Amenities Update Mutation\r\n */\r\nexport const OPEN_AMENITIES_UPDATE_MUTATION_REQUEST = 'bdxlive/community_detail/amenities_utilities/open_amenities_update_mutation_request';\r\nexport const OPEN_AMENITIES_UPDATE_MUTATION_SUCCESS = 'bdxlive/community_detail/amenities_utilities/open_amenities_update_mutation_success';\r\nexport const OPEN_AMENITIES_UPDATE_MUTATION_FAIL = 'bdxlive/community_detail/amenities_utilities/open_amenities_update_mutation_fail';\r\n\r\n/**\r\n * Community Open Amenities Delete Mutation\r\n */\r\nexport const OPEN_AMENITIES_DELETE_MUTATION_REQUEST = 'bdxlive/community_detail/amenities_utilities/open_amenities_delete_mutation_request';\r\nexport const OPEN_AMENITIES_DELETE_MUTATION_SUCCESS = 'bdxlive/community_detail/amenities_utilities/open_amenities_delete_mutation_success';\r\nexport const OPEN_AMENITIES_DELETE_MUTATION_FAIL = 'bdxlive/community_detail/amenities_utilities/open_amenities_delete_mutation_fail';\r\n\r\n/**\r\n * Community Utilities Requests\r\n */\r\nexport const UTILITIES_REQUEST = 'bdxlive/community_detail/amenities_utilities/utilities_request';\r\nexport const UTILITIES_SUCCESS = 'bdxlive/community_detail/amenities_utilities/utilities_success';\r\nexport const UTILITIES_FAIL = 'bdxlive/community_detail/amenities_utilities/utilities_fail';\r\n\r\n/**\r\n * Community Utilities Insert Mutation\r\n */\r\nexport const UTILITIES_INSERT_MUTATION_REQUEST = 'bdxlive/community_detail/amenities_utilities/utilities_insert_mutation_request';\r\nexport const UTILITIES_INSERT_MUTATION_SUCCESS = 'bdxlive/community_detail/amenities_utilities/utilities_insert_mutation_success';\r\nexport const UTILITIES_INSERT_MUTATION_FAIL = 'bdxlive/community_detail/amenities_utilities/utilities_insert_mutation_fail';\r\n\r\n/**\r\n * Community Utilities Update Mutation\r\n */\r\nexport const UTILITIES_UPDATE_MUTATION_REQUEST = 'bdxlive/community_detail/amenities_utilities/utilities_update_mutation_request';\r\nexport const UTILITIES_UPDATE_MUTATION_SUCCESS = 'bdxlive/community_detail/amenities_utilities/utilities_update_mutation_success';\r\nexport const UTILITIES_UPDATE_MUTATION_FAIL = 'bdxlive/community_detail/amenities_utilities/utilities_update_mutation_fail';\r\n\r\n/**\r\n * Community Utilities Delete Mutation\r\n */\r\nexport const UTILITIES_DELETE_MUTATION_REQUEST = 'bdxlive/community_detail/amenities_utilities/utilities_delete_mutation_request';\r\nexport const UTILITIES_DELETE_MUTATION_SUCCESS = 'bdxlive/community_detail/amenities_utilities/utilities_delete_mutation_success';\r\nexport const UTILITIES_DELETE_MUTATION_FAIL = 'bdxlive/community_detail/amenities_utilities/utilities_delete_mutation_fail';\r\n\r\n/**\r\n * Community Agent Commission Requests\r\n */\r\nexport const AGENT_COMMISSION_REQUEST = 'bdxlive/community_detail/amenities_utilities/agent_commission_request';\r\nexport const AGENT_COMMISSION_SUCCESS = 'bdxlive/community_detail/amenities_utilities/agent_commission_success';\r\nexport const AGENT_COMMISSION_FAIL = 'bdxlive/community_detail/amenities_utilities/agent_commission_fail';\r\n\r\n/**\r\n * Community Amenities & Utilities Mutation Request\r\n */\r\nexport const AMENITIES_UTILITIES_MUTATE_REQUEST = 'bdxlive/community_detail/amenities_utilities/community_mutation_request';\r\nexport const AMENITIES_UTILITIES_MUTATE_SUCCESS = 'bdxlive/community_detail/amenities_utilities/community_mutation_success';\r\nexport const AMENITIES_UTILITIES_MUTATE_FAIL = 'bdxlive/community_detail/amenities_utilities/community_mutation_fail';\r\n","import { empty } from '../../../../../utils/bdx-lodash-lite/empty';\r\nimport { JSONText } from '../../../../../utils/bdx-lodash-lite/json/text';\r\n\r\n/**\r\n * Standard Amenities query Fields\r\n */\r\nconst standardAmenitiesFields = `\r\n healthFitnessAmenities\r\n communityServicesAmenities\r\n socialActivitiesAmenities\r\n localAreaAmenities\r\n`;\r\n\r\n/**\r\n * Community Services query Fields\r\n */\r\nconst communityServicesFields = `\r\n communityServices {\r\n id\r\n description\r\n typeCode\r\n }\r\n`;\r\n\r\n/**\r\n * Home Owners Association query Fields\r\n */\r\nconst communityHoaFields = `\r\n totalTaxRate\r\n homeOwnerAssociation {\r\n id\r\n description\r\n monthlyFee\r\n yearlyFee\r\n }\r\n`;\r\n\r\n/**\r\n * Open Amenities query Fields\r\n */\r\n\r\nconst communityOpenAmenitiesFields = `\r\n id\r\n group\r\n groupName\r\n sequence\r\n name\r\n websiteUrl\r\n`;\r\n\r\nconst communityOpenAmenitiesOperation = `\r\n openAmenities (sortBy: {field: GroupName}) {\r\n ${communityOpenAmenitiesFields}\r\n }\r\n`;\r\n\r\n/**\r\n * Utilities query Fields\r\n */\r\nconst communityUtilitiesFields = `\r\n id\r\n type\r\n phone\r\n url\r\n description\r\n communityId\r\n`;\r\n\r\nconst communityUtilitiesOperation = `\r\n utilities {\r\n ${communityUtilitiesFields}\r\n }\r\n`;\r\n\r\n/**\r\n * Agent Commission query Fields\r\n */\r\nconst communityAgentCommissionFields = `\r\n agentCommission {\r\n commission\r\n rateType\r\n basis\r\n payoutTiming\r\n additionalComments\r\n }\r\n`;\r\n\r\n/**\r\n * Standard Amenities Request\r\n * @param { Object } requestArguments\r\n */\r\nexport const standardAmenities = ({ communityId }) => `query {\r\n communities(communityId: ${communityId}) {\r\n id\r\n ${standardAmenitiesFields}\r\n }\r\n}`;\r\n\r\n/**\r\n * Community Services Request\r\n * @param { Object } requestArguments\r\n */\r\nexport const communityServices = ({ communityId }) => `query {\r\n communities(communityId: ${communityId}) {\r\n id\r\n ${communityServicesFields}\r\n }\r\n}`;\r\n\r\n/**\r\n * Community Hoa Request\r\n * @param { Object } requestArguments\r\n */\r\nexport const communityHoa = ({ communityId }) => `query {\r\n communities(communityId: ${communityId}) {\r\n id\r\n ${communityHoaFields}\r\n }\r\n}`;\r\n\r\n/**\r\n * Community Open Amenities Request\r\n * @param { Object } requestArguments\r\n */\r\nexport const communityOpenAmenities = ({ communityId }) => `query {\r\n communities(communityId: ${communityId}) {\r\n id\r\n ${communityOpenAmenitiesOperation}\r\n }\r\n}`;\r\n\r\nexport const communityOpenAmenitiesInsertMutation = ({ builderId, communityId, name, group, groupName, sequence, websiteUrl }) => `mutation {\r\n insertCustomOpenAmenity(\r\n builderId: ${builderId},\r\n communityId: ${communityId},\r\n name: ${JSONText(name)},\r\n group: ${group},\r\n ${groupName === null ? `, groupName: ${null}` : ``}\r\n ${!empty(groupName) ? `, groupName: ${JSONText(groupName)}` : ``}\r\n ${sequence !== undefined ? `, sequence: ${sequence}` : ``}\r\n ${websiteUrl !== undefined ? `, websiteUrl: ${JSONText(websiteUrl)}` : ``}\r\n ) {\r\n ${communityOpenAmenitiesFields}\r\n }\r\n}`;\r\n\r\nexport const communityOpenAmenitiesUpdateMutation = ({ id, name, group, groupName, sequence, websiteUrl }) => `mutation {\r\n updateCustomOpenAmenity(\r\n id: ${id},\r\n group: ${group},\r\n ${name !== undefined ? `, name: ${JSONText(name)}` : ``}\r\n ${groupName === null ? `, groupName: ${null}` : ``}\r\n ${!empty(groupName) ? `, groupName: ${JSONText(groupName)}` : ``}\r\n ${sequence !== undefined ? `, sequence: ${sequence}` : ``}\r\n ${websiteUrl !== undefined ? `, websiteUrl: ${JSONText(websiteUrl)}` : ``}\r\n ) {\r\n ${communityOpenAmenitiesFields}\r\n }\r\n}`;\r\n\r\nexport const communityOpenAmenitiesDeleteMutation = ({ id, group }) => `mutation {\r\n deleteCustomOpenAmenity(id: ${id}, group: ${group})\r\n}`;\r\n\r\n/**\r\n * Community Open Utilities Request\r\n * @param { Object } requestArguments\r\n */\r\nexport const communityUtilities = ({ communityId }) => `query {\r\n communities(communityId: ${communityId}) {\r\n id\r\n ${communityUtilitiesOperation}\r\n }\r\n}`;\r\n\r\nexport const communityUtilitiesInsertMutation = ({ communityId, type, phone, description, url }) => `mutation {\r\n insertUtility(\r\n communityId: ${communityId},\r\n type: ${type},\r\n description: ${JSONText(description)},\r\n ${phone !== undefined ? `, phone: ${JSONText(phone)}` : ``}\r\n url: ${JSONText(url || '')}\r\n ) {\r\n ${communityUtilitiesFields}\r\n }\r\n}`;\r\n\r\nexport const communityUtilitiesUpdateMutation = ({ id, type, phone, description, url, communityId }) => `mutation {\r\n updateUtility(\r\n utilityId: ${id},\r\n communityId: ${communityId},\r\n ${type !== undefined ? `, type: ${type}` : ``}\r\n ${description !== undefined ? `, description: ${JSONText(description)}` : ``}\r\n ${phone !== undefined ? `, phone: ${JSONText(phone)}` : ``}\r\n ${url !== undefined ? `, url: ${JSONText(url)}` : ``}\r\n ) {\r\n ${communityUtilitiesFields}\r\n }\r\n}`;\r\n\r\nexport const communityUtilitiesDeleteMutation = ({ id, communityId }) => `mutation {\r\n deleteUtility(utilityId: ${id}, communityId: ${communityId}) {\r\n id\r\n }\r\n}`;\r\n\r\n/**\r\n * Community Agent Commission Request\r\n * @param { Object } requestArguments\r\n */\r\nexport const communityAgentCommission = ({ communityId }) => `query {\r\n communities(communityId: ${communityId}) {\r\n id\r\n ${communityAgentCommissionFields}\r\n }\r\n}`;\r\n\r\nexport const amenitiesUtilitiesMutation = ({ id, status, healthFitnessAmenities, communityServicesAmenities, socialActivitiesAmenities, localAreaAmenities, totalTaxRate, homeOwnerAssociation, agentCommission, communityServices: _communityServices }) => `mutation {\r\n updateCommunity(\r\n id: ${id}\r\n ${status !== undefined ? `, status:${status}` : ''}\r\n ${healthFitnessAmenities !== undefined ? `, healthFitnessAmenities: [${healthFitnessAmenities}]` : ``}\r\n ${communityServicesAmenities !== undefined ? `, communityServicesAmenities: [${communityServicesAmenities}]` : ``}\r\n ${socialActivitiesAmenities !== undefined ? `, socialActivitiesAmenities: [${socialActivitiesAmenities}]` : ``}\r\n ${localAreaAmenities !== undefined ? `, localAreaAmenities: [${localAreaAmenities}]` : ``}\r\n\r\n ${totalTaxRate !== undefined ? `, totalTaxRate: ${totalTaxRate}` : ``}\r\n ${homeOwnerAssociation === null ? `, homeOwnerAssociation: {}` : ``}\r\n ${\r\n !empty(homeOwnerAssociation)\r\n ? `\r\n homeOwnerAssociation: {\r\n ${homeOwnerAssociation.description !== undefined ? `, description: ${JSONText(homeOwnerAssociation.description)}` : ``}\r\n ${homeOwnerAssociation.monthlyFee !== undefined ? `, monthlyFee: ${homeOwnerAssociation.monthlyFee}` : ``}\r\n ${homeOwnerAssociation.yearlyFee !== undefined ? `, yearlyFee: ${homeOwnerAssociation.yearlyFee}` : ``}\r\n }\r\n `\r\n : ``\r\n }\r\n\r\n ${\r\n !empty(agentCommission)\r\n ? `\r\n agentCommission: {\r\n ${agentCommission.commission !== undefined ? `commission: ${agentCommission.commission},` : ``}\r\n ${agentCommission.rateType !== undefined ? `rateType: ${agentCommission.rateType},` : ``}\r\n ${agentCommission.basis !== undefined ? `basis: ${agentCommission.basis},` : ``}\r\n ${agentCommission.payoutTiming !== undefined ? `payoutTiming: ${agentCommission.payoutTiming},` : ``}\r\n ${agentCommission.additionalComments !== undefined ? `additionalComments: ${JSONText(agentCommission.additionalComments)},` : ``}\r\n }\r\n `\r\n : ``\r\n }\r\n \r\n ${\r\n _communityServices instanceof Array\r\n ? `\r\n communityServices: [\r\n ${_communityServices.map(\r\n (communityService) => `{\r\n ${communityService.description !== undefined ? `, description: ${JSONText(communityService.description)}` : ``}\r\n ${communityService.typeCode !== undefined ? `, typeCode: ${communityService.typeCode}` : ``}\r\n }`\r\n )}\r\n ]\r\n `\r\n : ``\r\n }\r\n ) {\r\n id\r\n status\r\n ${standardAmenitiesFields}\r\n ${communityOpenAmenitiesOperation}\r\n ${communityHoaFields}\r\n ${communityServicesFields}\r\n ${communityUtilitiesOperation}\r\n ${communityAgentCommissionFields}\r\n }\r\n}`;\r\n","import { STANDARD_AMENITIES_REQUEST, STANDARD_AMENITIES_SUCCESS, STANDARD_AMENITIES_FAIL, COMMUNITY_SERVICES_REQUEST, COMMUNITY_SERVICES_SUCCESS, COMMUNITY_SERVICES_FAIL, COMMUNITY_HOA_REQUEST, COMMUNITY_HOA_SUCCESS, COMMUNITY_HOA_FAIL, OPEN_AMENITIES_REQUEST, OPEN_AMENITIES_SUCCESS, OPEN_AMENITIES_FAIL, UTILITIES_REQUEST, UTILITIES_SUCCESS, UTILITIES_FAIL, AGENT_COMMISSION_REQUEST, AGENT_COMMISSION_SUCCESS, AGENT_COMMISSION_FAIL, AMENITIES_UTILITIES_MUTATE_REQUEST, AMENITIES_UTILITIES_MUTATE_SUCCESS, AMENITIES_UTILITIES_MUTATE_FAIL, OPEN_AMENITIES_INSERT_MUTATION_REQUEST, OPEN_AMENITIES_INSERT_MUTATION_SUCCESS, OPEN_AMENITIES_INSERT_MUTATION_FAIL, OPEN_AMENITIES_UPDATE_MUTATION_REQUEST, OPEN_AMENITIES_UPDATE_MUTATION_SUCCESS, OPEN_AMENITIES_UPDATE_MUTATION_FAIL, OPEN_AMENITIES_DELETE_MUTATION_REQUEST, OPEN_AMENITIES_DELETE_MUTATION_SUCCESS, OPEN_AMENITIES_DELETE_MUTATION_FAIL, UTILITIES_INSERT_MUTATION_REQUEST, UTILITIES_INSERT_MUTATION_SUCCESS, UTILITIES_DELETE_MUTATION_FAIL, UTILITIES_UPDATE_MUTATION_REQUEST, UTILITIES_UPDATE_MUTATION_SUCCESS, UTILITIES_UPDATE_MUTATION_FAIL, UTILITIES_DELETE_MUTATION_REQUEST, UTILITIES_DELETE_MUTATION_SUCCESS, UTILITIES_INSERT_MUTATION_FAIL } from './types';\r\nimport { QueryRequestAction, QuerySuccessAction, QueryFailAction } from '../../../../../@redux/models/actions';\r\nimport { standardAmenities, communityServices, communityHoa, communityOpenAmenities, communityUtilities, communityAgentCommission, amenitiesUtilitiesMutation, communityOpenAmenitiesInsertMutation, communityOpenAmenitiesUpdateMutation, communityOpenAmenitiesDeleteMutation, communityUtilitiesInsertMutation, communityUtilitiesUpdateMutation, communityUtilitiesDeleteMutation } from './api';\r\nimport { MutationRequestAction, MutationSuccessAction, MutationFailAction } from '../../../../../@redux/forms/actions';\r\n\r\n/**\r\n * Community Standard Amenities Requests\r\n */\r\nexport const standardAmenitiesRequest = QueryRequestAction(STANDARD_AMENITIES_REQUEST, standardAmenities);\r\nexport const standardAmenitiesSuccess = QuerySuccessAction(STANDARD_AMENITIES_SUCCESS);\r\nexport const standardAmenitiesFail = QueryFailAction(STANDARD_AMENITIES_FAIL);\r\n\r\n/**\r\n * Community Community Services Requests\r\n */\r\nexport const communityServicesRequest = QueryRequestAction(COMMUNITY_SERVICES_REQUEST, communityServices);\r\nexport const communityServicesSuccess = QuerySuccessAction(COMMUNITY_SERVICES_SUCCESS);\r\nexport const communityServicesFail = QueryFailAction(COMMUNITY_SERVICES_FAIL);\r\n\r\n/**\r\n * Community HOA Requests\r\n */\r\nexport const communityHoaRequest = QueryRequestAction(COMMUNITY_HOA_REQUEST, communityHoa);\r\nexport const communityHoaSuccess = QuerySuccessAction(COMMUNITY_HOA_SUCCESS);\r\nexport const communityHoaFail = QueryFailAction(COMMUNITY_HOA_FAIL);\r\n\r\n/**\r\n * Community Open Amenities Requests\r\n */\r\nexport const openAmenitiesRequest = QueryRequestAction(OPEN_AMENITIES_REQUEST, communityOpenAmenities);\r\nexport const openAmenitiesSuccess = QuerySuccessAction(OPEN_AMENITIES_SUCCESS);\r\nexport const openAmenitiesFail = QueryFailAction(OPEN_AMENITIES_FAIL);\r\n\r\n/**\r\n * Community Open Amenities Insert Mutate Request\r\n */\r\nexport const openAmenitiesInsertMutateRequest = MutationRequestAction(OPEN_AMENITIES_INSERT_MUTATION_REQUEST, communityOpenAmenitiesInsertMutation, ['group']);\r\nexport const openAmenitiesInsertMutateSuccess = MutationSuccessAction(OPEN_AMENITIES_INSERT_MUTATION_SUCCESS);\r\nexport const openAmenitiesInsertMutateFail = MutationFailAction(OPEN_AMENITIES_INSERT_MUTATION_FAIL);\r\n\r\n/**\r\n * Community Open Amenities Update Mutate Request\r\n */\r\nexport const openAmenitiesUpdateMutateRequest = MutationRequestAction(OPEN_AMENITIES_UPDATE_MUTATION_REQUEST, communityOpenAmenitiesUpdateMutation, ['group']);\r\nexport const openAmenitiesUpdateMutateSuccess = MutationSuccessAction(OPEN_AMENITIES_UPDATE_MUTATION_SUCCESS);\r\nexport const openAmenitiesUpdateMutateFail = MutationFailAction(OPEN_AMENITIES_UPDATE_MUTATION_FAIL);\r\n\r\n/**\r\n * Community Open Amenities Delete Mutate Request\r\n */\r\nexport const openAmenitiesDeleteMutateRequest = MutationRequestAction(OPEN_AMENITIES_DELETE_MUTATION_REQUEST, communityOpenAmenitiesDeleteMutation, ['group']);\r\nexport const openAmenitiesDeleteMutateSuccess = MutationSuccessAction(OPEN_AMENITIES_DELETE_MUTATION_SUCCESS);\r\nexport const openAmenitiesDeleteMutateFail = MutationFailAction(OPEN_AMENITIES_DELETE_MUTATION_FAIL);\r\n\r\n/**\r\n * Community Standard Amenities Requests\r\n */\r\nexport const utilitiesRequest = QueryRequestAction(UTILITIES_REQUEST, communityUtilities);\r\nexport const utilitiesSuccess = QuerySuccessAction(UTILITIES_SUCCESS);\r\nexport const utilitiesFail = QueryFailAction(UTILITIES_FAIL);\r\n\r\n/**\r\n * Community Utilitiest Insert Mutate Request\r\n */\r\nexport const utilitiesInsertMutateRequest = MutationRequestAction(UTILITIES_INSERT_MUTATION_REQUEST, communityUtilitiesInsertMutation);\r\nexport const utilitiesInsertMutateSuccess = MutationSuccessAction(UTILITIES_INSERT_MUTATION_SUCCESS);\r\nexport const utilitiesInsertMutateFail = MutationFailAction(UTILITIES_INSERT_MUTATION_FAIL);\r\n\r\n/**\r\n * Community Utilitiest Insert Mutate Request\r\n */\r\nexport const utilitiesUpdateMutateRequest = MutationRequestAction(UTILITIES_UPDATE_MUTATION_REQUEST, communityUtilitiesUpdateMutation, ['communityId']);\r\nexport const utilitiesUpdateMutateSuccess = MutationSuccessAction(UTILITIES_UPDATE_MUTATION_SUCCESS);\r\nexport const utilitiesUpdateMutateFail = MutationFailAction(UTILITIES_UPDATE_MUTATION_FAIL);\r\n\r\n/**\r\n * Community Utilitiest Insert Mutate Request\r\n */\r\nexport const utilitiesDeleteMutateRequest = MutationRequestAction(UTILITIES_DELETE_MUTATION_REQUEST, communityUtilitiesDeleteMutation, ['communityId']);\r\nexport const utilitiesDeleteMutateSuccess = MutationSuccessAction(UTILITIES_DELETE_MUTATION_SUCCESS);\r\nexport const utilitiesDeleteMutateFail = MutationFailAction(UTILITIES_DELETE_MUTATION_FAIL);\r\n\r\n/**\r\n * Community Agent Commission Requests\r\n */\r\nexport const agentCommissionRequest = QueryRequestAction(AGENT_COMMISSION_REQUEST, communityAgentCommission);\r\nexport const agentCommissionSuccess = QuerySuccessAction(AGENT_COMMISSION_SUCCESS);\r\nexport const agentCommissionFail = QueryFailAction(AGENT_COMMISSION_FAIL);\r\n\r\n/**\r\n * Community Amenities & Utitlies Mutation request\r\n */\r\nexport const amenitiesUtilitiesMutateRequest = MutationRequestAction(AMENITIES_UTILITIES_MUTATE_REQUEST, amenitiesUtilitiesMutation);\r\nexport const amenitiesUtilitiesMutateSuccess = MutationSuccessAction(AMENITIES_UTILITIES_MUTATE_SUCCESS);\r\nexport const amenitiesUtilitiesMutateFail = MutationFailAction(AMENITIES_UTILITIES_MUTATE_FAIL);\r\n","import { STANDARD_AMENITIES_REQUEST, AGENT_COMMISSION_REQUEST, AMENITIES_UTILITIES_MUTATE_REQUEST, UTILITIES_REQUEST, COMMUNITY_HOA_REQUEST, COMMUNITY_SERVICES_REQUEST, OPEN_AMENITIES_REQUEST, OPEN_AMENITIES_INSERT_MUTATION_REQUEST, OPEN_AMENITIES_UPDATE_MUTATION_REQUEST, OPEN_AMENITIES_DELETE_MUTATION_REQUEST, UTILITIES_INSERT_MUTATION_REQUEST, UTILITIES_DELETE_MUTATION_REQUEST, UTILITIES_UPDATE_MUTATION_REQUEST } from './types';\r\nimport { standardAmenitiesSuccess, standardAmenitiesFail, agentCommissionSuccess, agentCommissionFail, amenitiesUtilitiesMutateSuccess, amenitiesUtilitiesMutateFail, utilitiesSuccess, utilitiesFail, communityHoaSuccess, communityHoaFail, communityServicesSuccess, communityServicesFail, openAmenitiesSuccess, openAmenitiesFail, openAmenitiesInsertMutateSuccess, openAmenitiesInsertMutateFail, openAmenitiesUpdateMutateSuccess, openAmenitiesUpdateMutateFail, openAmenitiesDeleteMutateSuccess, openAmenitiesDeleteMutateFail, utilitiesInsertMutateSuccess, utilitiesInsertMutateFail, utilitiesUpdateMutateSuccess, utilitiesUpdateMutateFail, utilitiesDeleteMutateSuccess, utilitiesDeleteMutateFail } from './actions';\r\nimport { getModelsChannel } from '../../../../../@redux/models/sagas';\r\nimport { formsChannel } from '../../../../../@redux/forms/sagas';\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const amenitiesUtilitiesSagas = [\r\n /**\r\n * This generator listens to AGENT_COMMISSION_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(AGENT_COMMISSION_REQUEST, agentCommissionSuccess, agentCommissionFail),\r\n /**\r\n * This generator listens to STANDARD_AMENITIES_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(STANDARD_AMENITIES_REQUEST, standardAmenitiesSuccess, standardAmenitiesFail),\r\n /**\r\n * This generator listens to COMMUNITY_HOA_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(COMMUNITY_HOA_REQUEST, communityHoaSuccess, communityHoaFail),\r\n /**\r\n * This generator listens to COMMUNITY_HOA_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(COMMUNITY_SERVICES_REQUEST, communityServicesSuccess, communityServicesFail),\r\n /**\r\n * This generator listens to UTILITIES_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(UTILITIES_REQUEST, utilitiesSuccess, utilitiesFail),\r\n /**\r\n * This generator listens to OPEN_AMENITIES_INSERT_MUTATION_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n formsChannel(UTILITIES_INSERT_MUTATION_REQUEST, utilitiesInsertMutateSuccess, utilitiesInsertMutateFail),\r\n /**\r\n * This generator listens to OPEN_AMENITIES_UPDATE_MUTATION_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n formsChannel(UTILITIES_UPDATE_MUTATION_REQUEST, utilitiesUpdateMutateSuccess, utilitiesUpdateMutateFail),\r\n /**\r\n * This generator listens to OPEN_AMENITIES_DELETE_MUTATION_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n formsChannel(UTILITIES_DELETE_MUTATION_REQUEST, utilitiesDeleteMutateSuccess, utilitiesDeleteMutateFail),\r\n /**\r\n * This generator listens to UTILITIES_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(OPEN_AMENITIES_REQUEST, openAmenitiesSuccess, openAmenitiesFail),\r\n /**\r\n * This generator listens to OPEN_AMENITIES_INSERT_MUTATION_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n formsChannel(OPEN_AMENITIES_INSERT_MUTATION_REQUEST, openAmenitiesInsertMutateSuccess, openAmenitiesInsertMutateFail),\r\n /**\r\n * This generator listens to OPEN_AMENITIES_UPDATE_MUTATION_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n formsChannel(OPEN_AMENITIES_UPDATE_MUTATION_REQUEST, openAmenitiesUpdateMutateSuccess, openAmenitiesUpdateMutateFail),\r\n /**\r\n * This generator listens to OPEN_AMENITIES_DELETE_MUTATION_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n formsChannel(OPEN_AMENITIES_DELETE_MUTATION_REQUEST, openAmenitiesDeleteMutateSuccess, openAmenitiesDeleteMutateFail),\r\n /**\r\n * This generator listens to AMENITIES_UTILITIES_MUTATE_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n formsChannel(AMENITIES_UTILITIES_MUTATE_REQUEST, amenitiesUtilitiesMutateSuccess, amenitiesUtilitiesMutateFail),\r\n];\r\n","/* eslint-disable no-nested-ternary */\r\nimport apiClient from '@/utils/api/api';\r\n\r\nimport { JSONText, empty, isNullish } from '@/lodash/';\r\nimport { dataLocksFields } from '@/constants/bdx-lookups';\r\n\r\n/**\r\n * Community testimonials\r\n */\r\nexport const CommunityTestimonialsSearch = ({ entityId: communityId }) => `query {\r\n communities(communityId: ${communityId}) {\r\n id\r\n textTestimonials: testimonials {\r\n id\r\n sequence\r\n attribution\r\n description\r\n }\r\n videoTestimonials: images(typeCodes: CVT, status: Active) {\r\n id: imageId\r\n sequence: imageSequence\r\n originalPath\r\n }\r\n }\r\n}`;\r\n\r\n/**\r\n * Builder (division) testimonials\r\n */\r\nexport const BuilderTestimonialsSearch = ({ builderId }) => `query {\r\n builders(builderId: ${builderId}) {\r\n builderId\r\n parentBuilderId\r\n textTestimonials: testimonials {\r\n id\r\n sequence\r\n attribution\r\n description\r\n }\r\n videoTestimonials: images(typeCodes: BVT, status: Active) {\r\n id: imageId\r\n sequence: imageSequence\r\n originalPath\r\n }\r\n }\r\n}`;\r\n\r\nexport const communityTestimonialInsertMutation = ({ type, sequence, builderId, communityId, description, attribution }) => {\r\n switch (type) {\r\n case 'Text':\r\n return textTestimonialInsert(sequence, builderId, communityId, description, attribution);\r\n case 'Video':\r\n return videoTestimonialInsert(sequence, builderId, communityId, description);\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport const communityTestimonialUpdateMutation = ({ id, type, sequence, description, attribution }) => {\r\n switch (type) {\r\n case 'Text':\r\n return textTestimonialUpdate(id, sequence, description, attribution);\r\n case 'Video':\r\n return videoTestimonialUpdate(id, sequence, description);\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nexport const communityTestimonialDeleteMutation = ({ id, type }) => {\r\n switch (type) {\r\n case 'Text':\r\n return textTestimonialsDelete(id);\r\n case 'Video':\r\n return videoTestimonialsDelete(id);\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nconst textTestimonialInsert = (sequence, builderId, communityId, description, attribution) => `mutation {\r\n insertCommunityTestimonial(builderId: ${builderId}, communityId: ${communityId}, sequence: ${sequence || 1}, description: ${JSONText(description)}, attribution: ${JSONText(attribution)}) {\r\n id\r\n sequence\r\n attribution\r\n description\r\n }\r\n}`;\r\nconst videoTestimonialInsert = (sequence, builderId, communityId, description) => `mutation {\r\n insertImage(builderId: ${builderId}, communityId: ${communityId}, imageSequence: ${sequence || 1}, originalPath: ${JSONText(description)}, imageTypeCode: CVT) {\r\n imageId\r\n imageSequence\r\n originalPath\r\n }\r\n}`;\r\n\r\nconst textTestimonialUpdate = (id, sequence, description, attribution) => ` mutation {\r\n updateCommunityTestimonial(id: ${id}\r\n ${!empty(sequence) ? `,sequence: ${sequence}` : ''}\r\n ${!empty(description) ? `,description: ${JSONText(description)}` : ''}\r\n ${!empty(attribution) ? `,attribution: ${JSONText(attribution)}` : ''}\r\n ) {\r\n id\r\n sequence\r\n attribution\r\n description\r\n }\r\n}`;\r\nconst videoTestimonialUpdate = (id, sequence, description) => ` mutation {\r\n updateImage(imageId: ${id}\r\n ${!empty(sequence) ? `,imageSequence: ${sequence}` : ''}\r\n ${!empty(description) ? `,originalPath: ${JSONText(description)}` : ''}) {\r\n imageId\r\n imageSequence\r\n originalPath\r\n }\r\n}`;\r\n\r\nconst textTestimonialsDelete = (id) => ` mutation {\r\n deleteCommunityTestimonials(id: ${id}) {\r\n id\r\n }\r\n}\r\n`;\r\nconst videoTestimonialsDelete = (id) => ` mutation {\r\n updateImage(imageId: ${id}, loadStatusId: 2) {\r\n imageId\r\n }\r\n}\r\n`;\r\n\r\n/**\r\n * Community & Plan brochures\r\n */\r\nexport const CommunityBrochuresSearch = ({ entityId: communityId }) => `query {\r\n communities(communityId: ${communityId}) {\r\n id\r\n includeBrochureWithHome\r\n brochures {\r\n id\r\n title\r\n sequence\r\n localPath\r\n url\r\n thumbnailUrl\r\n }\r\n }\r\n}`;\r\n\r\nexport const communityBrochureInsertMutation = ({ builderId, communityId, planId, title, url, sequence, type }, formData) => `\r\n mutation${formData ? `($file: Upload)` : ``} {\r\n insertBrochure(builderId: ${builderId} ${communityId ? `,communityId: ${communityId}` : ''} ${planId ? `,planId: ${planId}` : ''}\r\n ${!empty(title) ? `,title: ${JSONText(title)}` : ''}\r\n ${!empty(sequence) ? `,sequence: ${sequence}` : ''}\r\n ${type === 'Website' && !empty(url) ? `,isWebsite: true` : !empty(url) ? ',isWebsite: false' : ''}\r\n ${!empty(url) && !formData ? `,url: ${JSONText(url)}` : ''}\r\n ${formData ? `,file: $file` : ''}\r\n ) {\r\n id\r\n title\r\n sequence\r\n localPath\r\n url\r\n thumbnailUrl\r\n }\r\n}`;\r\n\r\nexport const communityBrochureUpdateMutation = ({ id, sequence, title, url, type }, formData) => `\r\n mutation${formData ? `($file: Upload)` : ``} {\r\n updateBrochure(id: ${id}\r\n ${!empty(title) ? `,title: ${JSONText(title)}` : ''}\r\n ${!empty(sequence) ? `,sequence: ${sequence}` : ''}\r\n ${!empty(url) && !formData ? `,url: ${JSONText(url)}` : ''}\r\n ${type === 'Website' && !empty(url) ? `,isWebsite: true` : !empty(url) ? ',isWebsite: false' : ''}\r\n ${formData ? `,file: $file` : ''}\r\n ) {\r\n id\r\n title\r\n sequence\r\n localPath\r\n url\r\n thumbnailUrl\r\n }\r\n}`;\r\n\r\nexport const communityBrochureDeleteMutation = ({ id }) => `mutation {\r\n deleteBrochure(id: ${id})\r\n}`;\r\n\r\nexport const communityIncludeBrochureWithHomeUpdateMutation = ({ id, includeBrochureWithHome }) => `mutation {\r\n updateCommunity(id: ${id}, includeBrochureWithHome: ${includeBrochureWithHome || false}) {\r\n id\r\n includeBrochureWithHome\r\n }\r\n}`;\r\n\r\n/**\r\n * Community promotions\r\n */\r\nexport const CommunityPromotionsSearch = ({ entityId: communityId }) => `query {\r\n communities(communityId: ${communityId}) {\r\n id\r\n promotions(status: Active) {\r\n results {\r\n homeShopperIncentive\r\n ${PromoEventFragment}\r\n }\r\n }\r\n dataLocks{\r\n agentPromos\r\n webArchPromos\r\n consumerPromos\r\n }\r\n ${BuilderFragment}\r\n }\r\n}`;\r\n\r\nexport const communityPromotionInsertMutation = ({ isDivisional, builder, type, title, description, endDate, startDate, websiteUrl, communities, isDataFeedBuilder, homeShopperIncentive }, formData) => `\r\nmutation${formData ? `($file: Upload)` : ``} {\r\n insertPromotion(\r\n builderId: ${builder}\r\n ,type: ${type}\r\n ${!isNullish(homeShopperIncentive) ? `,homeShopperIncentive: ${homeShopperIncentive}` : ''}\r\n ${!empty(description) ? `,description: ${JSONText(description)}` : ''}\r\n ${!empty(startDate) ? `,startDate: \"${setupDateFormat(startDate)}\"` : ''}\r\n ${!empty(endDate) ? `,endDate: \"${setupDateFormat(endDate)}\"` : ''}\r\n ${!empty(title) ? `,title: ${JSONText(title)}` : ''}\r\n ${!empty(websiteUrl) ? `,websiteUrl: \"${websiteUrl}\"` : ''}\r\n ${handleCommsAssociation(communities, isDivisional)}\r\n ${formData ? `,file: $file` : ''}\r\n ) \r\n {\r\n homeShopperIncentive\r\n ${PromoEventFragment}\r\n }\r\n ${communityPromoLockHandler(type, communities, isDivisional, isDataFeedBuilder)}\r\n}`;\r\n\r\nexport const communityPromotionUpdateMutation = ({ id, isDivisional, description, type, endDate, startDate, title, websiteUrl, communities, deleteAssociatedFile, isDataFeedBuilder, homeShopperIncentive }, formData) => `\r\nmutation${formData ? `($file: Upload)` : ``} {\r\n updatePromotion(\r\n id: ${id}\r\n ${!empty(type) ? `,type: ${type}` : ''}\r\n ${!isNullish(homeShopperIncentive) ? `,homeShopperIncentive: ${homeShopperIncentive}` : ''}\r\n ${!empty(description) ? `,description: ${JSONText(description)}` : ''}\r\n ${!empty(startDate) ? `,startDate: \"${setupDateFormat(startDate)}\"` : ''}\r\n ${!empty(endDate) ? `,endDate: \"${setupDateFormat(endDate)}\"` : ''}\r\n ${!empty(title) ? `,title: ${JSONText(title)}` : ''}\r\n ${websiteUrl !== undefined && websiteUrl !== null ? `,websiteUrl: ${JSONText(websiteUrl)}` : ''}\r\n ${handleCommsAssociation(communities, isDivisional)}\r\n ${deleteAssociatedFile && !formData ? ',deleteAssociatedFile: true' : ''}\r\n ${formData ? `,file: $file` : ''}\r\n ) \r\n {\r\n homeShopperIncentive\r\n ${PromoEventFragment}\r\n }\r\n ${communityPromoLockHandler(type, communities, isDivisional, isDataFeedBuilder)}\r\n }\r\n `;\r\n\r\nexport const communityPromotionDeleteMutation = ({ id }) => `mutation {\r\n deletePromotions(ids: [${id}]){\r\n id\r\n deleted\r\n }\r\n}`;\r\n\r\n/**\r\n * Community events\r\n */\r\nexport const CommunityEventsSearch = ({ entityId: communityId }) => `query {\r\n communities(communityId: ${communityId}) {\r\n id\r\n events(status: Active) {\r\n results {\r\n ${PromoEventFragment}\r\n location\r\n }\r\n }\r\n dataLocks {\r\n events\r\n }\r\n ${BuilderFragment}\r\n }\r\n}`;\r\n\r\nexport const communityEventInsertMutation = ({ isDivisional, builder, type, title, description, location, eventDate, startTime, endTime, websiteUrl, communities, isDataFeedBuilder }, formData) => {\r\n const date = setupDateFormat(eventDate);\r\n\r\n return `mutation${formData ? `($file: Upload)` : ``} {\r\n insertEvent(\r\n builderId: ${builder}\r\n ,type: ${type}\r\n ${!empty(description) ? `,description: ${JSONText(description)}` : ''}\r\n ${!empty(location) ? `,location: ${JSONText(location)}` : ''}\r\n ${!empty(eventDate) ? `,startDate: \"${date}T${startTime}\", endDate: \"${date}T${endTime}\"` : ''}\r\n ${!empty(title) ? `,title: ${JSONText(title)}` : ''}\r\n ${!empty(websiteUrl) ? `,websiteUrl: ${JSONText(websiteUrl)}` : ''}\r\n ${handleCommsAssociation(communities, isDivisional)}\r\n ${formData ? `,file: $file` : ''}\r\n ) \r\n {\r\n ${PromoEventFragment}\r\n }\r\n ${communityEventLockHandler(communities, isDivisional, isDataFeedBuilder)}\r\n }\r\n `;\r\n};\r\n\r\nexport const communityEventUpdateMutation = ({ id, isDivisional, type, description, location, eventDate, startTime, endTime, title, websiteUrl, communities, deleteAssociatedFile, isDataFeedBuilder }, formData) => {\r\n const date = setupDateFormat(eventDate);\r\n\r\n return `mutation${formData ? `($file: Upload)` : ``} {\r\n updateEvent(\r\n id: ${id}\r\n ${!empty(type) ? `,type: ${type}` : ''}\r\n ${!empty(description) ? `,description: ${JSONText(description)}` : ''}\r\n ${!empty(location) ? `,location: ${JSONText(location)}` : ''}\r\n ${!empty(eventDate) ? `,startDate: \"${date}T${startTime}\", endDate: \"${date}T${endTime}\"` : ''}\r\n ${!empty(title) ? `,title: ${JSONText(title)}` : ''}\r\n ${websiteUrl !== undefined && websiteUrl !== null ? `,websiteUrl: ${JSONText(websiteUrl)}` : ''}\r\n ${handleCommsAssociation(communities, isDivisional)}\r\n ${deleteAssociatedFile && !formData ? ',deleteAssociatedFile: true' : ''}\r\n ${formData ? `,file: $file` : ''}\r\n ) \r\n {\r\n ${PromoEventFragment}\r\n }\r\n ${communityEventLockHandler(communities, isDivisional, isDataFeedBuilder)}\r\n }\r\n `;\r\n};\r\n\r\nexport const communityEventDeleteMutation = ({ id }) => `mutation {\r\n deleteEvents(ids: [${id}]){\r\n id\r\n deleted\r\n }\r\n}`;\r\n\r\n/**\r\n * =========================================================\r\n * Community green programs requests and mutations. - START\r\n * =========================================================\r\n */\r\n\r\nexport const CommunityGreenProgramsSearch = ({ entityId: communityId }) => `query {\r\n communities(communityId: ${communityId}) {\r\n id\r\n greenPrograms {\r\n ${GreenFragment}\r\n }\r\n }\r\n}`;\r\n\r\nexport const GreenProgramUpdateMutation = ({ id: programId, communities }) => `mutation {\r\n updateGreenProgram(programId: ${programId}, communityIds: [${!empty(communities) ? communities.map(({ id: commId }) => commId) : ''}]) {\r\n id: programId\r\n communities {\r\n id\r\n }\r\n }\r\n}`;\r\n\r\nexport const BuilderGreenProgramsSearch = (builderId) =>\r\n apiClient.post(null, {\r\n query: `query {\r\n greenPrograms(builderId: ${builderId}) {\r\n ${GreenFragment}\r\n builder {\r\n builderId\r\n }\r\n }\r\n }`,\r\n });\r\n\r\n/**\r\n * ==========================================================\r\n * Community green programs requests and mutations. - FINISH\r\n * ==========================================================\r\n */\r\n\r\n/**\r\n * =================\r\n * AUXILIARY METHODS\r\n * =================\r\n */\r\n\r\nconst handleCommsAssociation = (communities, isDivisional) => {\r\n if (isDivisional) {\r\n return ',isDivisional: true, communityIds: []';\r\n }\r\n return !empty(communities) ? `,communityIds: [${communities.map(({ id }) => id)}]` : '';\r\n};\r\n\r\nconst setupDateFormat = ({ day, month, year } = {}) => {\r\n return `${year}/${month}/${day}`;\r\n};\r\n\r\nconst communityEventLockHandler = (communities, isDivisional, isDataFeedBuilder) => {\r\n return isDataFeedBuilder && !isDivisional && !empty(communities)\r\n ? `\r\n ${communities.map(\r\n ({ id: communityId }) => `\r\n ,mutation${communityId}: updateCommunity(id: ${communityId}, dataLocks: { events: true }) {\r\n id,\r\n dataLocks {\r\n events\r\n }\r\n }`\r\n )}`\r\n : '';\r\n};\r\n\r\nconst communityPromoLockHandler = (type, communities, isDivisional, isDataFeedBuilder) => {\r\n return isDataFeedBuilder && !isDivisional && !empty(communities)\r\n ? `\r\n ${communities.map(\r\n ({ id: communityId }) => `\r\n ,mutation${communityId}: updateCommunity(id: ${communityId}, dataLocks: { ${getPromoLockType(type)}: true }) {\r\n id,\r\n dataLocks {\r\n agentPromos,\r\n consumerPromos,\r\n webArchPromos\r\n }\r\n }`\r\n )}`\r\n : '';\r\n};\r\n\r\nconst getPromoLockType = (type) => {\r\n switch (type) {\r\n case 'Consumer':\r\n return dataLocksFields.Community.ConsumerPromos;\r\n case 'WebArchitect':\r\n return dataLocksFields.Community.WebArchPromos;\r\n case 'Agent':\r\n return dataLocksFields.Community.AgentPromos;\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nconst GreenFragment = `\r\n id: programId\r\n internalName\r\n displayName\r\n greenUrl\r\n flyer {\r\n filePath\r\n }\r\n communities {\r\n id\r\n }\r\n`;\r\n\r\nconst PromoEventFragment = `\r\n id\r\n status\r\n isDivisional\r\n assignedToAllCommunities\r\n title\r\n description\r\n websiteUrl\r\n type\r\n startDate\r\n endDate\r\n createdBy\r\n flyer {\r\n filePath\r\n flyerImages {\r\n thumbnail\r\n }\r\n }\r\n builder {\r\n parentBuilderId\r\n builderId\r\n builderName\r\n partner {\r\n partnerId\r\n partnerName\r\n } \r\n parentBuilder {\r\n builderId\r\n builderName\r\n }\r\n }\r\n communities {\r\n id\r\n name\r\n }\r\n`;\r\n\r\nconst BuilderFragment = `\r\n builder {\r\n builderId\r\n displayChannelSelection {\r\n displayOnWebArch\r\n }\r\n }\r\n`;\r\n","/* eslint-disable object-curly-newline */\r\nimport { QueryRequestAction, QuerySuccessAction, QueryFailAction } from '@/redux/models/actions';\r\nimport { MutationRequestAction, MutationSuccessAction, MutationFailAction } from '@/redux/forms/actions';\r\nimport { empty } from '@/lodash/';\r\nimport { CommunityGreenProgramsSearch, communityEventInsertMutation, communityPromotionInsertMutation, CommunityTestimonialsSearch, BuilderTestimonialsSearch, CommunityBrochuresSearch, CommunityPromotionsSearch, CommunityEventsSearch, communityBrochureDeleteMutation, communityBrochureInsertMutation, communityBrochureUpdateMutation, communityTestimonialDeleteMutation, communityTestimonialUpdateMutation, communityTestimonialInsertMutation, communityIncludeBrochureWithHomeUpdateMutation, communityPromotionUpdateMutation, communityPromotionDeleteMutation, communityEventUpdateMutation, communityEventDeleteMutation, GreenProgramUpdateMutation } from './api';\r\nimport {\r\n COMMUNITY_BROCHURES_DELETE_MUTATION_FAIL,\r\n COMMUNITY_BROCHURES_DELETE_MUTATION_SUCCESS,\r\n COMMUNITY_BROCHURES_DELETE_MUTATION_REQUEST,\r\n COMMUNITY_TESTIMONIALS_REQUEST,\r\n COMMUNITY_TESTIMONIALS_FAIL,\r\n COMMUNITY_TESTIMONIALS_SUCCESS,\r\n BUILDER_TESTIMONIALS_REQUEST,\r\n BUILDER_TESTIMONIALS_SUCCESS,\r\n BUILDER_TESTIMONIALS_FAIL,\r\n COMMUNITY_BROCHURES_REQUEST,\r\n COMMUNITY_BROCHURES_SUCCESS,\r\n COMMUNITY_BROCHURES_FAIL,\r\n COMMUNITY_BROCHURES_INSERT_MUTATION_REQUEST,\r\n COMMUNITY_BROCHURES_INSERT_MUTATION_SUCCESS,\r\n COMMUNITY_BROCHURES_INSERT_MUTATION_FAIL,\r\n COMMUNITY_BROCHURES_UPDATE_MUTATION_REQUEST,\r\n COMMUNITY_BROCHURES_UPDATE_MUTATION_SUCCESS,\r\n COMMUNITY_BROCHURES_UPDATE_MUTATION_FAIL,\r\n COMMUNITY_TESTIMONIALS_INSERT_MUTATION_SUCCESS,\r\n COMMUNITY_TESTIMONIALS_INSERT_MUTATION_REQUEST,\r\n COMMUNITY_TESTIMONIALS_INSERT_MUTATION_FAIL,\r\n COMMUNITY_TESTIMONIALS_UPDATE_MUTATION_REQUEST,\r\n COMMUNITY_TESTIMONIALS_UPDATE_MUTATION_SUCCESS,\r\n COMMUNITY_TESTIMONIALS_UPDATE_MUTATION_FAIL,\r\n COMMUNITY_TESTIMONIALS_DELETE_MUTATION_REQUEST,\r\n COMMUNITY_TESTIMONIALS_DELETE_MUTATION_SUCCESS,\r\n COMMUNITY_TESTIMONIALS_DELETE_MUTATION_FAIL,\r\n COMMUNITY_INCLUDE_BROCHURE_UPDATE_MUTATION_FAIL,\r\n COMMUNITY_INCLUDE_BROCHURE_UPDATE_MUTATION_SUCCESS,\r\n COMMUNITY_INCLUDE_BROCHURE_UPDATE_MUTATION_REQUEST,\r\n COMMUNITY_PROMOTIONS_REQUEST,\r\n COMMUNITY_PROMOTIONS_SUCCESS,\r\n COMMUNITY_PROMOTIONS_FAIL,\r\n COMMUNITY_EVENTS_REQUEST,\r\n COMMUNITY_EVENTS_SUCCESS,\r\n COMMUNITY_EVENTS_FAIL,\r\n COMMUNITY_PROMOTIONS_UPDATE_MUTATION_REQUEST,\r\n COMMUNITY_PROMOTIONS_UPDATE_MUTATION_SUCCESS,\r\n COMMUNITY_PROMOTIONS_UPDATE_MUTATION_FAIL,\r\n COMMUNITY_PROMOTIONS_DELETE_MUTATION_REQUEST,\r\n COMMUNITY_PROMOTIONS_DELETE_MUTATION_SUCCESS,\r\n COMMUNITY_PROMOTIONS_DELETE_MUTATION_FAIL,\r\n COMMUNITY_EVENTS_UPDATE_MUTATION_REQUEST,\r\n COMMUNITY_EVENTS_UPDATE_MUTATION_SUCCESS,\r\n COMMUNITY_EVENTS_UPDATE_MUTATION_FAIL,\r\n COMMUNITY_EVENTS_DELETE_MUTATION_REQUEST,\r\n COMMUNITY_EVENTS_DELETE_MUTATION_SUCCESS,\r\n COMMUNITY_EVENTS_DELETE_MUTATION_FAIL,\r\n COMMUNITY_PROMOTIONS_INSERT_MUTATION_REQUEST,\r\n COMMUNITY_PROMOTIONS_INSERT_MUTATION_SUCCESS,\r\n COMMUNITY_PROMOTIONS_INSERT_MUTATION_FAIL,\r\n COMMUNITY_EVENTS_INSERT_MUTATION_REQUEST,\r\n COMMUNITY_EVENTS_INSERT_MUTATION_SUCCESS,\r\n COMMUNITY_EVENTS_INSERT_MUTATION_FAIL,\r\n COMMUNITY_GREEN_PROGRAMS_FAIL,\r\n COMMUNITY_GREEN_PROGRAMS_SUCCESS,\r\n COMMUNITY_GREEN_PROGRAMS_REQUEST,\r\n BUILDER_GREEN_PROGRAMS_REQUEST,\r\n BUILDER_GREEN_PROGRAMS_SUCCESS,\r\n BUILDER_GREEN_PROGRAMS_FAIL,\r\n GREEN_PROGRAM_UPDATE_MUTATION_REQUEST,\r\n GREEN_PROGRAM_UPDATE_MUTATION_SUCCESS,\r\n GREEN_PROGRAM_UPDATE_MUTATION_FAIL,\r\n} from './types';\r\n\r\n/**\r\n * Community Testimonials Request/Insert/Update/Delete Mutate Requests\r\n */\r\nexport const communityTestimonialsRequest = QueryRequestAction(COMMUNITY_TESTIMONIALS_REQUEST, CommunityTestimonialsSearch);\r\nexport const communityTestimonialsSuccess = QuerySuccessAction(COMMUNITY_TESTIMONIALS_SUCCESS);\r\nexport const communityTestimonialsFail = QueryFailAction(COMMUNITY_TESTIMONIALS_FAIL);\r\n\r\nexport const communityTestimonialsInsertMutateRequest = MutationRequestAction(COMMUNITY_TESTIMONIALS_INSERT_MUTATION_REQUEST, communityTestimonialInsertMutation, ['type']);\r\nexport const communityTestimonialsInsertMutateSuccess = MutationSuccessAction(COMMUNITY_TESTIMONIALS_INSERT_MUTATION_SUCCESS);\r\nexport const communityTestimonialsInsertMutateFail = MutationFailAction(COMMUNITY_TESTIMONIALS_INSERT_MUTATION_FAIL);\r\n\r\nexport const communityTestimonialsUpdateMutateRequest = MutationRequestAction(COMMUNITY_TESTIMONIALS_UPDATE_MUTATION_REQUEST, communityTestimonialUpdateMutation, ['type']);\r\nexport const communityTestimonialsUpdateMutateSuccess = MutationSuccessAction(COMMUNITY_TESTIMONIALS_UPDATE_MUTATION_SUCCESS);\r\nexport const communityTestimonialsUpdateMutateFail = MutationFailAction(COMMUNITY_TESTIMONIALS_UPDATE_MUTATION_FAIL);\r\n\r\nexport const communityTestimonialsDeleteMutateRequest = MutationRequestAction(COMMUNITY_TESTIMONIALS_DELETE_MUTATION_REQUEST, communityTestimonialDeleteMutation, ['type']);\r\nexport const communityTestimonialsDeleteMutateSuccess = MutationSuccessAction(COMMUNITY_TESTIMONIALS_DELETE_MUTATION_SUCCESS);\r\nexport const communityTestimonialsDeleteMutateFail = MutationFailAction(COMMUNITY_TESTIMONIALS_DELETE_MUTATION_FAIL);\r\n\r\n/**\r\n * Builder (Division) Testimonials\r\n */\r\nexport const builderTestimonialsRequest = QueryRequestAction(BUILDER_TESTIMONIALS_REQUEST, BuilderTestimonialsSearch);\r\nexport const builderTestimonialsSuccess = QuerySuccessAction(BUILDER_TESTIMONIALS_SUCCESS);\r\nexport const builderTestimonialsFail = QueryFailAction(BUILDER_TESTIMONIALS_FAIL);\r\n\r\nconst COMMUNITY_MARKETING_FAIL_ERROR = 'Error saving the brochure information, please try again';\r\n/**\r\n * Error transformers (conver what the API message says in an operation to something friendly for the app client)\r\n */\r\n\r\n/**\r\n * Based on the posible errors returned by the community mutation, choose the proper error message for the UI\r\n */\r\nconst convertBrochureErrorMessage = (error) => {\r\n if (empty(error)) return COMMUNITY_MARKETING_FAIL_ERROR;\r\n if (error.includes('(404) Not Found')) return 'Error. The pdf url specified is invalid or is not available at this moment.';\r\n if (error.includes('No such host is known')) return 'Error. The website specified is not valid or is not accessible at this moment.';\r\n if (error.includes('Invalid Brochure URL')) return 'Error. The website specified is not valid or is not accessible at this moment.';\r\n return COMMUNITY_MARKETING_FAIL_ERROR;\r\n};\r\n\r\n/**\r\n * Community Brochures Request/Insert/Update/Delete Mutate Requests\r\n */\r\nexport const communityBrochuresRequest = QueryRequestAction(COMMUNITY_BROCHURES_REQUEST, CommunityBrochuresSearch);\r\nexport const communityBrochuresSuccess = QuerySuccessAction(COMMUNITY_BROCHURES_SUCCESS);\r\nexport const communityBrochuresFail = QueryFailAction(COMMUNITY_BROCHURES_FAIL);\r\n\r\nexport const communityBrochuresInsertMutateRequest = MutationRequestAction(COMMUNITY_BROCHURES_INSERT_MUTATION_REQUEST, communityBrochureInsertMutation);\r\nexport const communityBrochuresInsertMutateSuccess = MutationSuccessAction(COMMUNITY_BROCHURES_INSERT_MUTATION_SUCCESS);\r\nexport const communityBrochuresInsertMutateFail = MutationFailAction(COMMUNITY_BROCHURES_INSERT_MUTATION_FAIL, COMMUNITY_MARKETING_FAIL_ERROR, convertBrochureErrorMessage);\r\n\r\nexport const communityBrochuresUpdateMutateRequest = MutationRequestAction(COMMUNITY_BROCHURES_UPDATE_MUTATION_REQUEST, communityBrochureUpdateMutation, ['sequence']);\r\nexport const communityBrochuresUpdateMutateSuccess = MutationSuccessAction(COMMUNITY_BROCHURES_UPDATE_MUTATION_SUCCESS);\r\nexport const communityBrochuresUpdateMutateFail = MutationFailAction(COMMUNITY_BROCHURES_UPDATE_MUTATION_FAIL, COMMUNITY_MARKETING_FAIL_ERROR, convertBrochureErrorMessage);\r\n\r\nexport const communityBrochuresDeleteMutateRequest = MutationRequestAction(COMMUNITY_BROCHURES_DELETE_MUTATION_REQUEST, communityBrochureDeleteMutation);\r\nexport const communityBrochuresDeleteMutateSuccess = MutationSuccessAction(COMMUNITY_BROCHURES_DELETE_MUTATION_SUCCESS);\r\nexport const communityBrochuresDeleteMutateFail = MutationFailAction(COMMUNITY_BROCHURES_DELETE_MUTATION_FAIL);\r\n\r\nexport const communityIncludeBrochureWithHomeUpdateMutationRequest = MutationRequestAction(COMMUNITY_INCLUDE_BROCHURE_UPDATE_MUTATION_REQUEST, communityIncludeBrochureWithHomeUpdateMutation, ['includeBrochureWithHome']);\r\nexport const communityIncludeBrochureWithHomeUpdateMutationSuccess = MutationSuccessAction(COMMUNITY_INCLUDE_BROCHURE_UPDATE_MUTATION_SUCCESS);\r\nexport const communityIncludeBrochureWithHomeUpdateMutationFail = MutationFailAction(COMMUNITY_INCLUDE_BROCHURE_UPDATE_MUTATION_FAIL);\r\n\r\n/**\r\n * Community Promotions Request/Insert/Update/Delete Mutate Requests\r\n */\r\nexport const communityPromotionsRequest = QueryRequestAction(COMMUNITY_PROMOTIONS_REQUEST, CommunityPromotionsSearch);\r\nexport const communityPromotionsSuccess = QuerySuccessAction(COMMUNITY_PROMOTIONS_SUCCESS);\r\nexport const communityPromotionsFail = QueryFailAction(COMMUNITY_PROMOTIONS_FAIL);\r\n\r\nexport const communityPromotionsInsertMutateRequest = MutationRequestAction(COMMUNITY_PROMOTIONS_INSERT_MUTATION_REQUEST, communityPromotionInsertMutation, ['type', 'isDivisional']);\r\nexport const communityPromotionsInsertMutateSuccess = MutationSuccessAction(COMMUNITY_PROMOTIONS_INSERT_MUTATION_SUCCESS);\r\nexport const communityPromotionsInsertMutateFail = MutationFailAction(COMMUNITY_PROMOTIONS_INSERT_MUTATION_FAIL);\r\n\r\nexport const communityPromotionsUpdateMutateRequest = MutationRequestAction(COMMUNITY_PROMOTIONS_UPDATE_MUTATION_REQUEST, communityPromotionUpdateMutation, ['type', 'isDivisional']);\r\nexport const communityPromotionsUpdateMutateSuccess = MutationSuccessAction(COMMUNITY_PROMOTIONS_UPDATE_MUTATION_SUCCESS);\r\nexport const communityPromotionsUpdateMutateFail = MutationFailAction(COMMUNITY_PROMOTIONS_UPDATE_MUTATION_FAIL);\r\n\r\nexport const communityPromotionsDeleteMutateRequest = MutationRequestAction(COMMUNITY_PROMOTIONS_DELETE_MUTATION_REQUEST, communityPromotionDeleteMutation);\r\nexport const communityPromotionsDeleteMutateSuccess = MutationSuccessAction(COMMUNITY_PROMOTIONS_DELETE_MUTATION_SUCCESS);\r\nexport const communityPromotionsDeleteMutateFail = MutationFailAction(COMMUNITY_PROMOTIONS_DELETE_MUTATION_FAIL);\r\n\r\n/**\r\n * Community Events Request/Insert/Update/Delete Mutate Requests\r\n */\r\nexport const communityEventsRequest = QueryRequestAction(COMMUNITY_EVENTS_REQUEST, CommunityEventsSearch);\r\nexport const communityEventsSuccess = QuerySuccessAction(COMMUNITY_EVENTS_SUCCESS);\r\nexport const communityEventsFail = QueryFailAction(COMMUNITY_EVENTS_FAIL);\r\n\r\nexport const communityEventsInsertMutateRequest = MutationRequestAction(COMMUNITY_EVENTS_INSERT_MUTATION_REQUEST, communityEventInsertMutation, ['type', 'isDivisional']);\r\nexport const communityEventsInsertMutateSuccess = MutationSuccessAction(COMMUNITY_EVENTS_INSERT_MUTATION_SUCCESS);\r\nexport const communityEventsInsertMutateFail = MutationFailAction(COMMUNITY_EVENTS_INSERT_MUTATION_FAIL);\r\n\r\nexport const communityEventsUpdateMutateRequest = MutationRequestAction(COMMUNITY_EVENTS_UPDATE_MUTATION_REQUEST, communityEventUpdateMutation, ['type', 'isDivisional']);\r\nexport const communityEventsUpdateMutateSuccess = MutationSuccessAction(COMMUNITY_EVENTS_UPDATE_MUTATION_SUCCESS);\r\nexport const communityEventsUpdateMutateFail = MutationFailAction(COMMUNITY_EVENTS_UPDATE_MUTATION_FAIL);\r\n\r\nexport const communityEventsDeleteMutateRequest = MutationRequestAction(COMMUNITY_EVENTS_DELETE_MUTATION_REQUEST, communityEventDeleteMutation);\r\nexport const communityEventsDeleteMutateSuccess = MutationSuccessAction(COMMUNITY_EVENTS_DELETE_MUTATION_SUCCESS);\r\nexport const communityEventsDeleteMutateFail = MutationFailAction(COMMUNITY_EVENTS_DELETE_MUTATION_FAIL);\r\n\r\n/**\r\n * Community Green Programs Request/Insert/Update/Delete Mutate Requests\r\n */\r\nexport const communityGreenProgramsRequest = QueryRequestAction(COMMUNITY_GREEN_PROGRAMS_REQUEST, CommunityGreenProgramsSearch);\r\nexport const communityGreenProgramsSuccess = QuerySuccessAction(COMMUNITY_GREEN_PROGRAMS_SUCCESS);\r\nexport const communityGreenProgramsFail = QueryFailAction(COMMUNITY_GREEN_PROGRAMS_FAIL);\r\n\r\nexport const builderGreenProgramsRequest = (builderId) => ({ type: BUILDER_GREEN_PROGRAMS_REQUEST, data: builderId });\r\nexport const builderGreenProgramsSuccess = (greens, meta) => ({ type: BUILDER_GREEN_PROGRAMS_SUCCESS, data: { result: greens }, meta });\r\nexport const builderGreenProgramsFail = (error) => ({ type: BUILDER_GREEN_PROGRAMS_FAIL, error: true, data: empty(error) ? { appMessage: 'Possible timeout error.', errorMessage: 'Possible timeout error.' } : error });\r\n\r\nexport const greenProgramUpdateMutateRequest = MutationRequestAction(GREEN_PROGRAM_UPDATE_MUTATION_REQUEST, GreenProgramUpdateMutation);\r\nexport const greenProgramUpdateMutateSuccess = MutationSuccessAction(GREEN_PROGRAM_UPDATE_MUTATION_SUCCESS);\r\nexport const greenProgramUpdateMutateFail = MutationFailAction(GREEN_PROGRAM_UPDATE_MUTATION_FAIL);\r\n","import { takeLatest, call, put } from 'redux-saga/effects';\r\nimport { formsChannel } from '@/redux/forms/sagas';\r\nimport { modelRequestSchema } from '@/app/app.entities';\r\nimport { getModelsChannel } from '../../../../../@redux/models/sagas';\r\nimport { COMMUNITY_TESTIMONIALS_REQUEST, BUILDER_TESTIMONIALS_REQUEST, COMMUNITY_BROCHURES_REQUEST, COMMUNITY_BROCHURES_DELETE_MUTATION_REQUEST, COMMUNITY_BROCHURES_INSERT_MUTATION_REQUEST, COMMUNITY_BROCHURES_UPDATE_MUTATION_REQUEST, COMMUNITY_TESTIMONIALS_INSERT_MUTATION_REQUEST, COMMUNITY_TESTIMONIALS_UPDATE_MUTATION_REQUEST, COMMUNITY_TESTIMONIALS_DELETE_MUTATION_REQUEST, COMMUNITY_INCLUDE_BROCHURE_UPDATE_MUTATION_REQUEST, COMMUNITY_PROMOTIONS_REQUEST, COMMUNITY_EVENTS_REQUEST, COMMUNITY_PROMOTIONS_INSERT_MUTATION_REQUEST, COMMUNITY_PROMOTIONS_UPDATE_MUTATION_REQUEST, COMMUNITY_PROMOTIONS_DELETE_MUTATION_REQUEST, COMMUNITY_EVENTS_INSERT_MUTATION_REQUEST, COMMUNITY_EVENTS_UPDATE_MUTATION_REQUEST, COMMUNITY_EVENTS_DELETE_MUTATION_REQUEST, COMMUNITY_GREEN_PROGRAMS_REQUEST, BUILDER_GREEN_PROGRAMS_REQUEST, GREEN_PROGRAM_UPDATE_MUTATION_REQUEST } from './types';\r\nimport {\r\n communityTestimonialsSuccess,\r\n communityTestimonialsFail,\r\n builderTestimonialsSuccess,\r\n builderTestimonialsFail,\r\n communityBrochuresSuccess,\r\n communityBrochuresFail,\r\n communityBrochuresDeleteMutateSuccess,\r\n communityBrochuresDeleteMutateFail,\r\n communityBrochuresInsertMutateFail,\r\n communityBrochuresInsertMutateSuccess,\r\n communityBrochuresUpdateMutateFail,\r\n communityBrochuresUpdateMutateSuccess,\r\n communityTestimonialsInsertMutateSuccess,\r\n communityTestimonialsUpdateMutateSuccess,\r\n communityTestimonialsDeleteMutateSuccess,\r\n communityTestimonialsDeleteMutateFail,\r\n communityTestimonialsUpdateMutateFail,\r\n communityTestimonialsInsertMutateFail,\r\n communityIncludeBrochureWithHomeUpdateMutationSuccess,\r\n communityIncludeBrochureWithHomeUpdateMutationFail,\r\n communityPromotionsSuccess,\r\n communityPromotionsFail,\r\n communityEventsFail,\r\n communityEventsSuccess,\r\n communityPromotionsInsertMutateSuccess,\r\n communityPromotionsInsertMutateFail,\r\n communityPromotionsUpdateMutateFail,\r\n communityPromotionsDeleteMutateFail,\r\n communityPromotionsUpdateMutateSuccess,\r\n communityPromotionsDeleteMutateSuccess,\r\n communityEventsDeleteMutateFail,\r\n communityEventsUpdateMutateFail,\r\n communityEventsInsertMutateFail,\r\n communityEventsInsertMutateSuccess,\r\n communityEventsUpdateMutateSuccess,\r\n communityEventsDeleteMutateSuccess,\r\n communityGreenProgramsSuccess,\r\n communityGreenProgramsFail,\r\n builderGreenProgramsSuccess,\r\n builderGreenProgramsFail,\r\n greenProgramUpdateMutateFail,\r\n greenProgramUpdateMutateSuccess,\r\n} from './actions';\r\nimport { BuilderGreenProgramsSearch } from './api';\r\n\r\nfunction* getBuilderGreenProgramsResults({ data: builderId }) {\r\n try {\r\n const { data: { Result: programs = {} } = {} } = yield call(BuilderGreenProgramsSearch, builderId);\r\n yield put(builderGreenProgramsSuccess(programs, modelRequestSchema));\r\n } catch (error) {\r\n yield put(builderGreenProgramsFail(error));\r\n }\r\n}\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const communityMarketingSagas = [\r\n takeLatest(BUILDER_GREEN_PROGRAMS_REQUEST, getBuilderGreenProgramsResults),\r\n getModelsChannel(COMMUNITY_GREEN_PROGRAMS_REQUEST, communityGreenProgramsSuccess, communityGreenProgramsFail),\r\n getModelsChannel(COMMUNITY_TESTIMONIALS_REQUEST, communityTestimonialsSuccess, communityTestimonialsFail),\r\n getModelsChannel(BUILDER_TESTIMONIALS_REQUEST, builderTestimonialsSuccess, builderTestimonialsFail),\r\n getModelsChannel(COMMUNITY_BROCHURES_REQUEST, communityBrochuresSuccess, communityBrochuresFail),\r\n getModelsChannel(COMMUNITY_PROMOTIONS_REQUEST, communityPromotionsSuccess, communityPromotionsFail),\r\n getModelsChannel(COMMUNITY_EVENTS_REQUEST, communityEventsSuccess, communityEventsFail),\r\n formsChannel(GREEN_PROGRAM_UPDATE_MUTATION_REQUEST, greenProgramUpdateMutateSuccess, greenProgramUpdateMutateFail),\r\n formsChannel(COMMUNITY_PROMOTIONS_INSERT_MUTATION_REQUEST, communityPromotionsInsertMutateSuccess, communityPromotionsInsertMutateFail),\r\n formsChannel(COMMUNITY_PROMOTIONS_UPDATE_MUTATION_REQUEST, communityPromotionsUpdateMutateSuccess, communityPromotionsUpdateMutateFail),\r\n formsChannel(COMMUNITY_PROMOTIONS_DELETE_MUTATION_REQUEST, communityPromotionsDeleteMutateSuccess, communityPromotionsDeleteMutateFail),\r\n formsChannel(COMMUNITY_EVENTS_INSERT_MUTATION_REQUEST, communityEventsInsertMutateSuccess, communityEventsInsertMutateFail),\r\n formsChannel(COMMUNITY_EVENTS_UPDATE_MUTATION_REQUEST, communityEventsUpdateMutateSuccess, communityEventsUpdateMutateFail),\r\n formsChannel(COMMUNITY_EVENTS_DELETE_MUTATION_REQUEST, communityEventsDeleteMutateSuccess, communityEventsDeleteMutateFail),\r\n formsChannel(COMMUNITY_TESTIMONIALS_INSERT_MUTATION_REQUEST, communityTestimonialsInsertMutateSuccess, communityTestimonialsInsertMutateFail),\r\n formsChannel(COMMUNITY_TESTIMONIALS_UPDATE_MUTATION_REQUEST, communityTestimonialsUpdateMutateSuccess, communityTestimonialsUpdateMutateFail),\r\n formsChannel(COMMUNITY_TESTIMONIALS_DELETE_MUTATION_REQUEST, communityTestimonialsDeleteMutateSuccess, communityTestimonialsDeleteMutateFail),\r\n formsChannel(COMMUNITY_BROCHURES_INSERT_MUTATION_REQUEST, communityBrochuresInsertMutateSuccess, communityBrochuresInsertMutateFail),\r\n formsChannel(COMMUNITY_BROCHURES_UPDATE_MUTATION_REQUEST, communityBrochuresUpdateMutateSuccess, communityBrochuresUpdateMutateFail),\r\n formsChannel(COMMUNITY_BROCHURES_DELETE_MUTATION_REQUEST, communityBrochuresDeleteMutateSuccess, communityBrochuresDeleteMutateFail),\r\n formsChannel(COMMUNITY_INCLUDE_BROCHURE_UPDATE_MUTATION_REQUEST, communityIncludeBrochureWithHomeUpdateMutationSuccess, communityIncludeBrochureWithHomeUpdateMutationFail),\r\n];\r\n","import { empty } from '@/lodash/';\r\n\r\nexport const communityAvailableLibraryPlans = ({ communityId, builderId, search, pageNumber = 0, pageSize = 15, countOnly = false }) => `\r\n query {\r\n ${\r\n !countOnly\r\n ? `\r\n plans(\r\n top: ${pageSize}, \r\n page: ${pageNumber - 1},\r\n builderId: ${builderId}, \r\n assignableTo: ${communityId},\r\n sortBy: [{field: Name, order: Asc}],\r\n ${!empty(search) ? `search: \"${search}\"` : ``}\r\n libraryStatus: All\r\n ) {\r\n id\r\n name\r\n number\r\n beds\r\n baths\r\n halfBaths\r\n garages\r\n stories\r\n squareFeet\r\n }`\r\n : ``\r\n }\r\n planCount(builderId: ${builderId}, ${!empty(search) ? `search: \"${search}\"` : ``}, assignableTo: ${communityId}, libraryStatus: All)\r\n }\r\n`;\r\n","import { QueryRequestAction, QuerySuccessAction, QueryFailAction } from '@/redux/models/actions';\r\nimport { Community } from '@/models/Community';\r\nimport { Plan } from '@/models/Plan';\r\nimport { COMMUNITY_AVAILABLE_LIBRARY_PLANS_REQUEST, COMMUNITY_AVAILABLE_LIBRARY_PLANS_SUCCESS, COMMUNITY_AVAILABLE_LIBRARY_PLANS_FAIL } from './types';\r\nimport { communityAvailableLibraryPlans } from './api';\r\n\r\n/**\r\n * Get the available plan library items for a community\r\n * This should get the list of plans assignable to a community, this list is composed by:\r\n * - All standlone plans that aren't in the community (for library used flag in corporate it should be all, for division it should be only under the same division the community is in)\r\n * - Any corportate or division plan library (based on the library used flag) that is not assigned to the community already\r\n */\r\nexport const standaloneAvailableLibraryPlansRequest = (entity, data) => QueryRequestAction(COMMUNITY_AVAILABLE_LIBRARY_PLANS_REQUEST, communityAvailableLibraryPlans, Plan())(data);\r\nexport const communityAvailableLibraryPlansRequest = (entity, data) => QueryRequestAction(COMMUNITY_AVAILABLE_LIBRARY_PLANS_REQUEST, communityAvailableLibraryPlans, Community())(data);\r\nexport const communityAvailableLibraryPlansSuccess = QuerySuccessAction(COMMUNITY_AVAILABLE_LIBRARY_PLANS_SUCCESS);\r\nexport const communityAvailableLibraryPlansFail = QueryFailAction(COMMUNITY_AVAILABLE_LIBRARY_PLANS_FAIL);\r\n","import { takeLatest } from 'redux-saga/effects';\r\nimport { getModels } from '@/redux/models/sagas';\r\nimport { communityAvailableLibraryPlansFail, communityAvailableLibraryPlansSuccess } from './actions';\r\nimport { COMMUNITY_AVAILABLE_LIBRARY_PLANS_REQUEST } from './types';\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const fromPlanLibrary = [\r\n /**\r\n * This generator listens to COMMUNITY_AVAILABLE_LIBRARY_PLANS_REQUEST\r\n * and perform sequencial api calls\r\n * @param { Number } communityId retrieve the school district and schools data for this community\r\n */\r\n takeLatest(COMMUNITY_AVAILABLE_LIBRARY_PLANS_REQUEST, getModels, communityAvailableLibraryPlansSuccess, communityAvailableLibraryPlansFail),\r\n];\r\n","/**\r\n * Linked to videos insert mutation\r\n */\r\nexport const LINKED_TO_VIDEOS_INSERT_MUTATION_REQUEST = 'bdxlive/community_detail/videos/linked_to_videos_insert_mutation_request';\r\nexport const LINKED_TO_VIDEOS_INSERT_MUTATION_SUCCESS = 'bdxlive/community_detail/videos/linked_to_videos_insert_mutation_success';\r\nexport const LINKED_TO_VIDEOS_INSERT_MUTATION_FAIL = 'bdxlive/community_detail/videos/linked_to_videos_insert_mutation_fail';\r\n\r\n/**\r\n * Linked to videos update mutations\r\n */\r\nexport const LINKED_TO_VIDEOS_UPDATE_MUTATION_REQUEST = 'bdxlive/community_detail/videos/linked_to_videos_update_mutation_request';\r\nexport const LINKED_TO_VIDEOS_UPDATE_MUTATION_SUCCESS = 'bdxlive/community_detail/videos/linked_to_videos_update_mutation_success';\r\nexport const LINKED_TO_VIDEOS_UPDATE_MUTATION_FAIL = 'bdxlive/community_detail/videos/linked_to_videos_update_mutation_fail';\r\n\r\n/**\r\n * Linked to videos delete mutations\r\n */\r\nexport const LINKED_TO_VIDEOS_DELETE_MUTATION_REQUEST = 'bdxlive/community_detail/videos/linked_to_videos_delete_mutation_request';\r\nexport const LINKED_TO_VIDEOS_DELETE_MUTATION_SUCCESS = 'bdxlive/community_detail/videos/linked_to_videos_delete_mutation_success';\r\nexport const LINKED_TO_VIDEOS_DELETE_MUTATION_FAIL = 'bdxlive/community_detail/videos/linked_to_videos_delete_mutation_fail';\r\n","import { MutationRequestAction, MutationSuccessAction, MutationFailAction } from '@/redux/forms/actions';\r\nimport { ImagesInsertMutation, ImagesUpdateMutation } from '@/redux/images/api';\r\nimport { LINKED_TO_VIDEOS_INSERT_MUTATION_REQUEST, LINKED_TO_VIDEOS_INSERT_MUTATION_SUCCESS, LINKED_TO_VIDEOS_INSERT_MUTATION_FAIL, LINKED_TO_VIDEOS_UPDATE_MUTATION_REQUEST, LINKED_TO_VIDEOS_UPDATE_MUTATION_SUCCESS, LINKED_TO_VIDEOS_UPDATE_MUTATION_FAIL, LINKED_TO_VIDEOS_DELETE_MUTATION_REQUEST, LINKED_TO_VIDEOS_DELETE_MUTATION_SUCCESS, LINKED_TO_VIDEOS_DELETE_MUTATION_FAIL } from './types';\r\n\r\n/**\r\n * Form Methods\r\n */\r\n/**\r\n * Community Utilitiest Insert Mutate Request\r\n */\r\nexport const linkedToVideosInsertMutateRequest = MutationRequestAction(LINKED_TO_VIDEOS_INSERT_MUTATION_REQUEST, ImagesInsertMutation);\r\nexport const linkedToVideosInsertMutateSuccess = MutationSuccessAction(LINKED_TO_VIDEOS_INSERT_MUTATION_SUCCESS);\r\nexport const linkedToVideosInsertMutateFail = MutationFailAction(LINKED_TO_VIDEOS_INSERT_MUTATION_FAIL);\r\n\r\n/**\r\n * Community Utilitiest Insert Mutate Request\r\n */\r\nexport const linkedToVideosUpdateMutateRequest = MutationRequestAction(LINKED_TO_VIDEOS_UPDATE_MUTATION_REQUEST, ImagesUpdateMutation);\r\nexport const linkedToVideosUpdateMutateSuccess = MutationSuccessAction(LINKED_TO_VIDEOS_UPDATE_MUTATION_SUCCESS);\r\nexport const linkedToVideosUpdateMutateFail = MutationFailAction(LINKED_TO_VIDEOS_UPDATE_MUTATION_FAIL);\r\n\r\n/**\r\n * Community Utilitiest Insert Mutate Request\r\n */\r\nexport const linkedToVideosDeleteMutateRequest = MutationRequestAction(LINKED_TO_VIDEOS_DELETE_MUTATION_REQUEST, ImagesUpdateMutation);\r\nexport const linkedToVideosDeleteMutateSuccess = MutationSuccessAction(LINKED_TO_VIDEOS_DELETE_MUTATION_SUCCESS);\r\nexport const linkedToVideosDeleteMutateFail = MutationFailAction(LINKED_TO_VIDEOS_DELETE_MUTATION_FAIL);\r\n","import { formsChannel } from '@/redux/forms/sagas';\r\nimport { LINKED_TO_VIDEOS_INSERT_MUTATION_REQUEST, LINKED_TO_VIDEOS_UPDATE_MUTATION_REQUEST, LINKED_TO_VIDEOS_DELETE_MUTATION_REQUEST } from './types';\r\nimport { linkedToVideosInsertMutateSuccess, linkedToVideosInsertMutateFail, linkedToVideosUpdateMutateSuccess, linkedToVideosUpdateMutateFail, linkedToVideosDeleteMutateSuccess, linkedToVideosDeleteMutateFail } from './actions';\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const videos = [\r\n /**\r\n * This form channel saga listens to LINKED_TO_VIDEOS_INSERT_MUTATION_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened on request\r\n * @param { string } success the success action creator\r\n * @param { string } failure the failure action creator\r\n */\r\n formsChannel(LINKED_TO_VIDEOS_INSERT_MUTATION_REQUEST, linkedToVideosInsertMutateSuccess, linkedToVideosInsertMutateFail),\r\n /**\r\n * This form channel saga listens to LINKED_TO_VIDEOS_UPDATE_MUTATION_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened on request\r\n * @param { string } success the success action creator\r\n * @param { string } failure the failure action creator\r\n */\r\n formsChannel(LINKED_TO_VIDEOS_UPDATE_MUTATION_REQUEST, linkedToVideosUpdateMutateSuccess, linkedToVideosUpdateMutateFail),\r\n /**\r\n * This form channel saga listens to LINKED_TO_VIDEOS_DELETE_MUTATION_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened on request\r\n * @param { string } success the success action creator\r\n * @param { string } failure the failure action creator\r\n */\r\n formsChannel(LINKED_TO_VIDEOS_DELETE_MUTATION_REQUEST, linkedToVideosDeleteMutateSuccess, linkedToVideosDeleteMutateFail),\r\n];\r\n","export const MPC_LINKED_COMMUNITIES_REQUEST = 'bdxlive/community_detail/linked_communities_request';\r\nexport const MPC_LINKED_COMMUNITIES_SUCCESS = 'bdxlive/community_detail/linked_communities_success';\r\nexport const MPC_LINKED_COMMUNITIES_FAIL = 'bdxlive/community_detail/linked_communities_fail';\r\n\r\nexport const MPC_LINKED_COMMUNITIES_UNLINK_MUTATION_REQUEST = 'bdxlive/community_detail/unlink_mutation_request';\r\nexport const MPC_LINKED_COMMUNITIES_UNLINK_MUTATION_SUCCESS = 'bdxlive/community_detail/unlink_mutation_success';\r\nexport const MPC_LINKED_COMMUNITIES_UNLINK_MUTATION_FAIL = 'bdxlive/community_detail/unlink_mutation_fail';\r\n\r\nexport const COMMUNITIES_BY_MILES_REQUEST = 'bdxlive/mpc_detail/communities_by_miles_request';\r\nexport const COMMUNITIES_BY_MILES_SUCCESS = 'bdxlive/mpc_detail/communities_by_miles_success';\r\nexport const COMMUNITIES_BY_MILES_FAIL = 'bdxlive/mpc_detail/communities_by_miles_fail';\r\n\r\nexport const ASSIGN_TO_MASTER_PLANNED_COMMUNITY_REQUEST = 'bdxlive/mpc_detail/assign_to_master_planned_community_request';\r\nexport const ASSIGN_TO_MASTER_PLANNED_COMMUNITY_SUCCESS = 'bdxlive/mpc_detail/assign_to_master_planned_community_success';\r\nexport const ASSIGN_TO_MASTER_PLANNED_COMMUNITY_FAIL = 'bdxlive/mpc_detail/assign_to_master_planned_community_fail';\r\n","import { empty, JSONText } from '@/lodash/';\r\n\r\nexport const mpcLinkedCommunities = ({ entityId: communityId }) => `\r\n query {\r\n communities(communityId: ${communityId}) {\r\n id\r\n childCommunities(status: [Approved, Inactive]) {\r\n id\r\n name\r\n number\r\n status\r\n distance\r\n displayBrandName\r\n zips {\r\n postalCode\r\n state\r\n city\r\n }\r\n builder {\r\n builderId\r\n builderName\r\n orgTypeCode\r\n autoFeedFlag\r\n partner {\r\n partnerName\r\n partnerId\r\n }\r\n brands {\r\n brandId\r\n brandName\r\n }\r\n parentBuilderId\r\n parentBuilder {\r\n displayGuidedToursOnNhs\r\n builderId\r\n builderName\r\n canadianData\r\n }\r\n }\r\n planCount(status: Active)\r\n specCount(status: Active)\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const assignToMasterPlannedCommunity = ({ id, changes }) => `\r\n mutation {\r\n assignToMasterPlannedCommunity(parentCommunityId: ${id},\r\n communityIds: [${!empty(changes) ? changes : ''}])\r\n }\r\n`;\r\n\r\nexport const mpcUnlinkCommunities = ({ id, childCommunities }) => `\r\n mutation {\r\n assignToMasterPlannedCommunity(parentCommunityId: ${id},\r\n communityIds: [${!empty(childCommunities) ? childCommunities.map((community) => community) : ''}])\r\n }\r\n`;\r\n\r\nexport const communitiesByMiles = ({ id, distance, status, sorts, search, pageNumber, pageSize, firstRequest }) => `\r\n query {\r\n communities(\r\n ${!empty(search) ? `search: ${JSONText(search?.trim())}` : ''}\r\n nearCommunity: { id: ${id}, miles: ${distance > 0 ? distance : 0} }\r\n ${!empty(status) ? `status: [${status.join()}]` : ''}\r\n ${!empty(sorts) ? `sortBy: [${Object.entries(sorts).map(([path, direction]) => `{field: ${path}, order: ${direction === -1 ? 'Desc' : 'Asc'}}`)}]` : ''}\r\n orgTypeCodes: PRD\r\n page: ${pageNumber - 1 || 0}\r\n top: ${pageSize || 15}\r\n ) {\r\n ...Community\r\n }\r\n ${\r\n firstRequest\r\n ? `\r\n communityCount(\r\n ${!empty(search) ? `search: ${JSONText(search?.trim())}` : ''}\r\n nearCommunity: { id: ${id}, miles: ${distance > 0 ? distance : 0} }\r\n ${!empty(status) ? `status: [${status.join()}]` : ''}\r\n orgTypeCodes: PRD\r\n )\r\n `\r\n : ''\r\n }\r\n\r\n }\r\n\r\n fragment Community on Community {\r\n id\r\n name\r\n number\r\n planCount(status: Active)\r\n specCount(status: Active)\r\n status\r\n distance\r\n marketName\r\n zips {\r\n postalCode\r\n state\r\n city\r\n }\r\n builder {\r\n builderId\r\n builderName\r\n parentBuilderId\r\n brands {\r\n brandId\r\n brandName\r\n }\r\n partner {\r\n partnerId\r\n partnerName\r\n }\r\n }\r\n }\r\n`;\r\n","import { MPC_LINKED_COMMUNITIES_REQUEST, MPC_LINKED_COMMUNITIES_SUCCESS, MPC_LINKED_COMMUNITIES_FAIL, MPC_LINKED_COMMUNITIES_UNLINK_MUTATION_REQUEST, MPC_LINKED_COMMUNITIES_UNLINK_MUTATION_SUCCESS, MPC_LINKED_COMMUNITIES_UNLINK_MUTATION_FAIL, COMMUNITIES_BY_MILES_REQUEST, COMMUNITIES_BY_MILES_SUCCESS, COMMUNITIES_BY_MILES_FAIL, ASSIGN_TO_MASTER_PLANNED_COMMUNITY_REQUEST, ASSIGN_TO_MASTER_PLANNED_COMMUNITY_SUCCESS, ASSIGN_TO_MASTER_PLANNED_COMMUNITY_FAIL } from './types';\r\nimport { MutationFailAction, MutationRequestAction, MutationSuccessAction } from '@/redux/forms/actions';\r\nimport { QueryFailAction, QueryRequestAction, QuerySuccessAction } from '@/redux/models/actions';\r\n\r\nimport { communitiesByMiles, mpcLinkedCommunities, mpcUnlinkCommunities, assignToMasterPlannedCommunity } from './api';\r\n\r\nexport const mpcLinkedCommunitiesRequest = QueryRequestAction(MPC_LINKED_COMMUNITIES_REQUEST, mpcLinkedCommunities);\r\nexport const mpcLinkedCommunitiesSuccess = QuerySuccessAction(MPC_LINKED_COMMUNITIES_SUCCESS);\r\nexport const mpcLinkedCommunitiesFail = QueryFailAction(MPC_LINKED_COMMUNITIES_FAIL);\r\n\r\nexport const mpcLinkedCommunitiesUnlinkRequest = MutationRequestAction(MPC_LINKED_COMMUNITIES_UNLINK_MUTATION_REQUEST, mpcUnlinkCommunities);\r\nexport const mpcLinkedCommunitiesUnlinkSuccess = MutationSuccessAction(MPC_LINKED_COMMUNITIES_UNLINK_MUTATION_SUCCESS);\r\nexport const mpcLinkedCommunitiesUnlinkFail = MutationFailAction(MPC_LINKED_COMMUNITIES_UNLINK_MUTATION_FAIL);\r\n\r\nexport const communitiesByMilesRequest = QueryRequestAction(COMMUNITIES_BY_MILES_REQUEST, communitiesByMiles);\r\nexport const communitiesByMilesSuccess = QuerySuccessAction(COMMUNITIES_BY_MILES_SUCCESS);\r\nexport const communitiesByMilesFail = QueryFailAction(COMMUNITIES_BY_MILES_FAIL);\r\n\r\nexport const assignToMasterPlannedCommunityRequest = (params) => ({\r\n type: ASSIGN_TO_MASTER_PLANNED_COMMUNITY_REQUEST,\r\n mutation: assignToMasterPlannedCommunity(params),\r\n noEntity: true,\r\n});\r\nexport const assignToMasterPlannedCommunitySuccess = MutationSuccessAction(ASSIGN_TO_MASTER_PLANNED_COMMUNITY_SUCCESS);\r\nexport const assignToMasterPlannedCommunityFail = MutationFailAction(ASSIGN_TO_MASTER_PLANNED_COMMUNITY_FAIL);\r\n","import { formsChannel } from '@/redux/forms/sagas';\r\nimport { getModels } from '@/redux/models/sagas';\r\nimport { takeLatest } from 'redux-saga/effects';\r\n\r\nimport { ASSIGN_TO_MASTER_PLANNED_COMMUNITY_REQUEST, COMMUNITIES_BY_MILES_REQUEST, MPC_LINKED_COMMUNITIES_REQUEST, MPC_LINKED_COMMUNITIES_UNLINK_MUTATION_REQUEST } from './types';\r\nimport { assignToMasterPlannedCommunityFail, assignToMasterPlannedCommunitySuccess, communitiesByMilesFail, communitiesByMilesSuccess, mpcLinkedCommunitiesFail, mpcLinkedCommunitiesSuccess, mpcLinkedCommunitiesUnlinkFail, mpcLinkedCommunitiesUnlinkSuccess } from './actions';\r\n\r\nexport const mpcLinkedCommunitiesSagas = [\r\n /**\r\n * This generator listens to MPC_LINKED_COMMUNITIES_REQUEST\r\n * and perform preferential api calls\r\n */\r\n takeLatest(MPC_LINKED_COMMUNITIES_REQUEST, getModels, mpcLinkedCommunitiesSuccess, mpcLinkedCommunitiesFail),\r\n /**\r\n * This generator listens to COMMUNITIES_BY_MILES_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(COMMUNITIES_BY_MILES_REQUEST, getModels, communitiesByMilesSuccess, communitiesByMilesFail),\r\n /**\r\n * This generator listens to MPC_LINKED_COMMUNITIES_UNLINK_MUTATION_REQUEST\r\n * and perform preferential api calls\r\n */\r\n formsChannel(MPC_LINKED_COMMUNITIES_UNLINK_MUTATION_REQUEST, mpcLinkedCommunitiesUnlinkSuccess, mpcLinkedCommunitiesUnlinkFail),\r\n /**\r\n * This generator listens to ASSIGN_TO_MASTER_PLANNED_COMMUNITY_REQUEST\r\n * and perform preferential api calls\r\n */\r\n formsChannel(ASSIGN_TO_MASTER_PLANNED_COMMUNITY_REQUEST, assignToMasterPlannedCommunitySuccess, assignToMasterPlannedCommunityFail),\r\n];\r\n","// Community Detail Sagas\r\n// These are Ajax Calls (side effects handled with Saga Middleware) to the Api\r\nimport { takeLatest, call, put } from 'redux-saga/effects';\r\nimport { COMMUNITY_DETAIL_REQUEST, COMMUNITY_DETAIL_SAVE_REQUEST, COMMUNITY_DISPLAY_REQUEST, COMMUNITY_IMAGES_QUERY_REQUEST, COMMUNITY_VIDEOS_QUERY_REQUEST, MARKET_SCHOOL_DISTRICTS_REQUEST, COMMUNITY_SCHOOLS_REQUEST, COMMUNITY_INTERACTIVE_MEDIA_QUERY_REQUEST, COMMUNITY_PERFORMANCE_REQUEST, COMMUNITY_PARTNER_REQUEST, MLS_NAMES_REQUEST, COMMUNITY_STATUS_UPDATE_REQUEST } from './types';\r\nimport { requestCommunityApi, requestCommunityDisplayOnApi, requestMarketSchoolDistrict, requestCommunityPerformanceApi, CommunityPartnersQuery } from './api';\r\nimport { communityDetailSuccess, communityDetailFail, communitySaveSuccess, communitySaveFail, communityDisplayChannelRequest, communityDisplayChannelSuccess, communityDisplayChannelFail, communityImagesQuerySuccess, communityImagesQueryFail, communityVideosQuerySuccess, marketSchoolDistrictsQuerySuccess, marketSchoolDistrictsQueryFail, communitySchoolsQuerySuccess, communitySchoolsQueryFail, communityInteractiveMediaQuerySuccess, communityInteractiveMediaQueryFail, communityPerformanceFail, communityPerformanceSuccess, communityPartnerFail, mlsNamesSuccess, mlsNamesFail, updateCommunityStatusFail, updateCommunityStatusSuccess } from './actions';\r\nimport { formsChannel } from '../../../../@redux/forms/sagas';\r\nimport { getModelsChannel, getModels } from '../../../../@redux/models/sagas';\r\nimport { searchZipRequest } from '../../../../@redux/location/actions';\r\nimport { InvalidEntityError } from '../../../../utils/error-handling/types';\r\nimport { empty } from '../../../../utils/bdx-lodash-lite';\r\nimport { manageHomesSagas } from './manage-homes/sagas';\r\nimport { amenitiesUtilitiesSagas } from './amenities-utilities/sagas';\r\nimport { communityMarketingSagas } from './marketing/sagas';\r\nimport { fromPlanLibrary } from './planLibrary/sagas';\r\nimport { videos } from './videos/sagas';\r\nimport { mpcLinkedCommunitiesSagas } from '../../mpc-detail/components/mpc-linked-communities/@redux/sagas';\r\n\r\n/*\r\n Handles the retrive of Community Details information for community Details page.\r\n*/\r\nfunction* requestCommunity({ data: { communityId, loadZipLocations } }) {\r\n try {\r\n const response = yield call(requestCommunityApi, communityId, false);\r\n\r\n if (response?.data?.Result?.communities?.length > 0) {\r\n const { ownerPartnerId, location = {}, salesOffice = {}, billingStatus, squareFeetLow, squareFeetHigh, priceLow, priceHigh, displayBrandName } = response.data.Result.communities[0];\r\n if (salesOffice === null) {\r\n response.data.Result.communities[0].salesOffice = undefined;\r\n }\r\n if (empty(location)) {\r\n response.data.Result.communities[0].location = {};\r\n }\r\n if (billingStatus === null) {\r\n response.data.Result.communities[0].billingStatus = 'None';\r\n }\r\n if (squareFeetLow === null) {\r\n response.data.Result.communities[0].squareFeetLow = 0;\r\n }\r\n if (squareFeetHigh === null) {\r\n response.data.Result.communities[0].squareFeetHigh = 0;\r\n }\r\n if (priceLow === null) {\r\n response.data.Result.communities[0].priceLow = 0;\r\n }\r\n if (priceHigh === null) {\r\n response.data.Result.communities[0].priceHigh = 0;\r\n }\r\n if (displayBrandName === undefined) {\r\n response.data.Result.communities[0].displayBrandName = false;\r\n }\r\n\r\n if (loadZipLocations) {\r\n // request locations for the community sales office zip code, incase we need to display the combobox at the ui\r\n const { zip } = salesOffice;\r\n // request locations for the community location zip code\r\n const { zip: zipLocation } = location || {};\r\n\r\n if (!empty(zipLocation) || !empty(zip)) yield put(searchZipRequest({ zips: [...new Set([zip, zipLocation])].filter(Boolean), partnerId: ownerPartnerId }));\r\n }\r\n\r\n const responseDisplay = yield call(requestCommunityDisplayOnApi, communityId);\r\n\r\n yield put(communityDetailSuccess(response.data.Result, communityId));\r\n\r\n const { displayChannelSelection } = responseDisplay?.data?.Result || {};\r\n\r\n yield put(communityDetailSuccess({ communities: [{ ...{ id: parseInt(communityId) }, channelDisplay: { ...displayChannelSelection } }] }, communityId));\r\n\r\n const responsePerformance = yield call(requestCommunityPerformanceApi, communityId);\r\n\r\n const lisingPerformanceSelection = responsePerformance?.data?.Result || {};\r\n\r\n yield put(communityDetailSuccess({ communities: [{ ...{ id: parseInt(communityId) }, listingPerformance: { ...lisingPerformanceSelection } }] }, communityId));\r\n } else throw new InvalidEntityError('Invalid Community, this community id is not valid anymore');\r\n } catch (error) {\r\n // Show error message in case any error in the authentication process\r\n yield put(communityDetailFail(error, communityId));\r\n }\r\n}\r\n\r\n/*\r\n Handles the retrive of Community Channel Display information\r\n*/\r\nfunction* requestCommunityChannelDisplay({ data: { communityId } }) {\r\n try {\r\n const responseDisplay = yield call(requestCommunityDisplayOnApi, communityId);\r\n\r\n const { displayChannelSelection } = responseDisplay?.data?.Result || {};\r\n\r\n yield put(communityDisplayChannelSuccess({ communities: [{ ...{ id: parseInt(communityId) }, channelDisplay: { ...displayChannelSelection } }] }, communityId));\r\n } catch (error) {\r\n // Show error message in case any error in the authentication process\r\n yield put(communityDisplayChannelFail(error, communityId));\r\n }\r\n}\r\n\r\n/*\r\n Handles the retrive of Community Performance section information\r\n*/\r\nfunction* requestCommunityPerformance({ data: { communityId } }) {\r\n try {\r\n const response = yield call(requestCommunityPerformanceApi, communityId);\r\n\r\n yield put(communityPerformanceSuccess(response.data.Result, communityId));\r\n } catch (error) {\r\n yield put(communityPerformanceFail(error, communityId));\r\n }\r\n}\r\n\r\nfunction* requestSchoolDistricts({ data: { marketId, zip }, meta }) {\r\n try {\r\n const response = yield call(requestMarketSchoolDistrict, marketId, zip);\r\n\r\n transformSchoolsResults(response.data.Result, { marketId, zip });\r\n\r\n yield put(marketSchoolDistrictsQuerySuccess(response.data.Result, meta));\r\n } catch (error) {\r\n // Show error message in case any error in the authentication process\r\n yield put(marketSchoolDistrictsQueryFail(error));\r\n }\r\n}\r\n\r\n/**\r\n * Add extra information to the results retrieved from API for School and School districts\r\n */\r\nfunction transformSchoolsResults(results, { marketId, zip }) {\r\n if (results?.schoolDistricts?.length) {\r\n results.schoolDistricts.forEach((d) => {\r\n d.marketId = marketId;\r\n });\r\n }\r\n\r\n // if we ask for the district for a zip code in the same query, set for the corresponding district the zip\r\n // so we can know for that community what is the Schooldistrict for their zip (defaul if no schools selected for the community (system derived feature))\r\n if (results?.schoolDistrictsByZip) {\r\n const zipDistrictsIds = results.schoolDistrictsByZip.map((d) => d.id);\r\n results.schoolDistricts.forEach((sd) => {\r\n sd.zip = zipDistrictsIds.includes(sd.id) ? zip : 0;\r\n });\r\n } else {\r\n results.schoolDistricts.forEach((d) => {\r\n d.zip = 0;\r\n });\r\n }\r\n}\r\n\r\nfunction* requestCommunityPartners({ data: { communityId } }) {\r\n try {\r\n const response = yield call(CommunityPartnersQuery, communityId);\r\n\r\n if (response.data.Result.communityPartners.length > 0) {\r\n const communityPartnersSelection = response?.data?.Result || {};\r\n\r\n yield put(communityDetailSuccess({ communities: [{ ...{ id: parseInt(communityId) }, ...communityPartnersSelection }] }, communityId));\r\n } else throw new InvalidEntityError('Invalid Community, this community id is not valid anymore');\r\n } catch (error) {\r\n yield put(communityPartnerFail(error, communityId));\r\n }\r\n}\r\n\r\n// Saga Watcher for Comm Detail Module\r\nexport const communityDetailSagas = [\r\n /**\r\n * Handle the Community request information listening to the COMMUNITY_DETAIL_REQUEST Action type\r\n */\r\n takeLatest(COMMUNITY_DETAIL_REQUEST, requestCommunity),\r\n\r\n takeLatest(COMMUNITY_PERFORMANCE_REQUEST, requestCommunityPerformance),\r\n\r\n takeLatest(COMMUNITY_DISPLAY_REQUEST, requestCommunityChannelDisplay),\r\n\r\n takeLatest(MARKET_SCHOOL_DISTRICTS_REQUEST, requestSchoolDistricts),\r\n\r\n takeLatest(COMMUNITY_PARTNER_REQUEST, requestCommunityPartners),\r\n\r\n /**\r\n * Handle the Community Save listening to the COMMUNITY_DETAIL_SAVE_REQUEST Action type\r\n */\r\n formsChannel(COMMUNITY_DETAIL_SAVE_REQUEST, communitySaveSuccess, communitySaveFail, null, communityDisplayChannelRequest),\r\n /**\r\n * This generator listens to IMAGES_QUERY_SUCCESS\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(COMMUNITY_IMAGES_QUERY_REQUEST, getModels, communityImagesQuerySuccess, communityImagesQueryFail),\r\n /**\r\n * This generator listens to IMAGES_QUERY_SUCCESS\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(COMMUNITY_VIDEOS_QUERY_REQUEST, communityVideosQuerySuccess, communityImagesQueryFail),\r\n /**\r\n * This generator listens to MARKET_SCHOOL_DISTRICTS_REQUEST\r\n * and perform sequencial api calls\r\n * @param { Number } marketId market to to retrieve all the school districts\r\n */\r\n // getModelsChannel(MARKET_SCHOOL_DISTRICTS_REQUEST, marketSchoolDistrictsQuerySuccess, marketSchoolDistrictsQueryFail),\r\n /**\r\n * This generator listens to COMMUNITY_SCHOOLS_REQUEST\r\n * and perform sequencial api calls\r\n * @param { Number } communityId retrieve the school district and schools data for this community\r\n */\r\n getModelsChannel(COMMUNITY_SCHOOLS_REQUEST, communitySchoolsQuerySuccess, communitySchoolsQueryFail, null, transformSchoolsResults),\r\n /**\r\n * This generator listens to COMMUNITY_INTERACTIVE_MEDIA_QUERY_REQUEST\r\n * and perform sequencial api calls\r\n * @param { Number } communityId retrieve the school district and schools data for this community\r\n */\r\n getModelsChannel(COMMUNITY_INTERACTIVE_MEDIA_QUERY_REQUEST, communityInteractiveMediaQuerySuccess, communityInteractiveMediaQueryFail),\r\n /**\r\n * This generator listens to MLS_NAMES_REQUEST\r\n * and perform sequencial api calls\r\n */\r\n getModelsChannel(MLS_NAMES_REQUEST, mlsNamesSuccess, mlsNamesFail),\r\n /**\r\n * This generator listens to COMMUNITY_STATUS_UPDATE_REQUEST\r\n * and perform sequencial api calls\r\n */\r\n formsChannel(COMMUNITY_STATUS_UPDATE_REQUEST, updateCommunityStatusSuccess, updateCommunityStatusFail),\r\n /**\r\n * Amenities & Utilities Sagas\r\n */\r\n ...amenitiesUtilitiesSagas,\r\n /**\r\n * Manage Homes Sagas\r\n */\r\n ...manageHomesSagas,\r\n /**\r\n * From plan library\r\n */\r\n ...fromPlanLibrary,\r\n /**\r\n * Videos\r\n */\r\n ...videos,\r\n /**\r\n * Testimonials Sagas\r\n */\r\n ...communityMarketingSagas,\r\n /**\r\n * MPC Linked Communities\r\n */\r\n ...mpcLinkedCommunitiesSagas,\r\n];\r\n","// Community Detail Sagas\r\n// These are Ajax Calls (side effects handled with Saga Middleware) to the Api\r\nimport { takeLatest, call, put } from 'redux-saga/effects';\r\nimport { USER_ROLES_REQUEST, USER_PERMISSIONS_REQUEST, USER_DETAIL_REQUEST, USER_DETAIL_SAVE_REQUEST, UPDATE_USER_SERVICE_REQUEST } from './types';\r\nimport { requestPermissionsInformation, requestUserInformation, requestRolesInformation } from './api';\r\nimport { userDetailSuccess, userDetailFail, userPermissionsSuccess, userPermissionsFail, userSaveFail, userSaveSuccess, userRolesSuccess, userRolesFail, userDetailRequest, updateUserServiceFail, updateUserServiceSuccess } from './actions';\r\nimport { InvalidEntityError } from '../../../utils/error-handling/types';\r\nimport { formsChannel } from '@/redux/forms/sagas';\r\nimport { loginRequestSuccess } from '@/modules/auth/@redux/actions';\r\nimport { getModelsChannel } from '@/redux/models/sagas';\r\nimport { empty, orderBy } from '../../../utils/bdx-lodash-lite';\r\n/*\r\n Handles the retrive of User Details information for user Details page.\r\n*/\r\nfunction* requestUser({ data: { userId, updatePermissionsAndServices } }) {\r\n try {\r\n const response = yield call(requestUserInformation, userId);\r\n\r\n if (response.data.Result?.users?.length > 0) {\r\n response.data.Result.users.forEach((p) => {\r\n p.userDivisions = p.builders ? p.builders[0]?.divisions : null;\r\n p.password = null;\r\n p.passwordConfirm = null;\r\n p.emailConfirm = p.email;\r\n if (p.userPermissions?.[0]?.displayOrder) {\r\n p.userPermissions = orderBy(p.userPermissions || [], ['displayOrder']); // order permissions by display order\r\n }\r\n });\r\n\r\n yield put(userDetailSuccess(response.data.Result, userId));\r\n\r\n if (updatePermissionsAndServices) {\r\n const { userName, firstName, lastName, email, dateCreated, dateLastChanged, userPermissions, services } = response.data.Result?.users[0];\r\n yield put(\r\n loginRequestSuccess(\r\n {\r\n userId,\r\n userName,\r\n firstName,\r\n lastName,\r\n email,\r\n dateCreated,\r\n dateLastChanged,\r\n },\r\n userPermissions,\r\n services\r\n )\r\n );\r\n return;\r\n }\r\n\r\n try {\r\n const responseRoles = yield call(requestRolesInformation);\r\n\r\n if (responseRoles.data.Result.roleGroups.length > 0) {\r\n yield put(userRolesSuccess(responseRoles.data.Result));\r\n }\r\n } catch (error) {\r\n yield put(userRolesFail(error));\r\n }\r\n } else throw new InvalidEntityError('Invalid User, this user id is not valid anymore');\r\n } catch (error) {\r\n yield put(userDetailFail(error, userId));\r\n }\r\n}\r\n\r\n/*\r\n Handles the retrive of Data locks information for user Details page.\r\n*/\r\nfunction* requestPermissions({ data: { roleId } }) {\r\n try {\r\n const response = yield call(requestPermissionsInformation, roleId);\r\n\r\n if (response.data.Result.permissions.length > 0) {\r\n // inject role Id to the results from api\r\n response.data.Result.permissions.forEach((p) => {\r\n p.roleId = parseInt(roleId);\r\n });\r\n\r\n yield put(userPermissionsSuccess(response.data.Result));\r\n } else throw new InvalidEntityError('Invalid role, this role id is not valid anymore');\r\n } catch (error) {\r\n yield put(userPermissionsFail(error, roleId));\r\n }\r\n}\r\n\r\nfunction* requestRoles() {\r\n try {\r\n const response = yield call(requestRolesInformation);\r\n\r\n if (response.data.Result.roleGroups.length > 0) {\r\n yield put(userRolesSuccess(response.data.Result));\r\n }\r\n } catch (error) {\r\n yield put(userRolesFail(error));\r\n }\r\n}\r\n\r\n/**\r\n * Re format the resuts from builder service so we can add them to the builder entity\r\n */\r\nfunction transformUserServiceResults(results, { currentUserId }) {\r\n if (!empty(results[`updateUser${currentUserId}`])) {\r\n results.services = results[`updateUser${currentUserId}`].services;\r\n }\r\n Object.keys(results).forEach((k) => {\r\n if (k !== `updateUser${currentUserId}`) {\r\n delete results[`updateUser${currentUserId}`];\r\n }\r\n });\r\n}\r\n\r\n// Saga Watcher for User Detail Module\r\nexport const userDetailSagas = [\r\n /**\r\n *\r\n * @param { string } pattern action type to be listened to.\r\n * @param { function } saga operation to be executed.\r\n * @param { Array } args arguments to be passed to the started task.\r\n */\r\n takeLatest(USER_DETAIL_REQUEST, requestUser),\r\n takeLatest(USER_PERMISSIONS_REQUEST, requestPermissions),\r\n takeLatest(USER_ROLES_REQUEST, requestRoles),\r\n getModelsChannel(UPDATE_USER_SERVICE_REQUEST, updateUserServiceSuccess, updateUserServiceFail, null, transformUserServiceResults),\r\n formsChannel(USER_DETAIL_SAVE_REQUEST, userSaveSuccess, userSaveFail, null, (data) => userDetailRequest(data.updateUser.userId)),\r\n];\r\n","/*\r\nThis file contains string literals for your action types.\r\nThis provides an easy reference for the actions available.\r\nThese strings are exported as an object literal which can then be imported\r\ninto your reducers and action creators instead of hard-coding them.\r\nAlthough maintaining a separate file containing just your action\r\ntypes is optional, it is highly recommended.\r\n*/\r\n\r\n// ACTION TYPES\r\nexport const PLAN_DETAIL_REQUEST = 'bdxlive/plan_detail/info_request';\r\nexport const PLAN_DETAIL_SUCCESS = 'bdxlive/plan_detail/info_success';\r\nexport const PLAN_DETAIL_FAIL = 'bdxlive/plan_detail/info_fail';\r\n\r\nexport const PLAN_DETAIL_SAVE_REQUEST = 'bdxlive/plan_detail/save_request';\r\nexport const PLAN_DETAIL_SAVE_SUCCESS = 'bdxlive/plan_detail/save_success';\r\nexport const PLAN_DETAIL_SAVE_FAIL = 'bdxlive/plan_detail/save_fail';\r\n\r\nexport const PLAN_DETAIL_BREAK_INHERITANCE_REQUEST = 'bdxlive/plan_detail/break_inheritance_request';\r\nexport const PLAN_DETAIL_BREAK_INHERITANCE_SUCCESS = 'bdxlive/plan_detail/break_inheritance_success';\r\nexport const PLAN_DETAIL_BREAK_INHERITANCE_FAIL = 'bdxlive/plan_detail/break_inheritance_fail';\r\n\r\nexport const PLAN_DISTRIBUTION_REQUEST = 'bdxlive/plan_detail/distribution_request';\r\nexport const PLAN_DISTRIBUTION_SUCCESS = 'bdxlive/plan_detail/distribution_success';\r\nexport const PLAN_DISTRIBUTION_FAIL = 'bdxlive/plan_detail/distribution_fail';\r\n\r\n/**\r\n * Generic Image Request\r\n */\r\nexport const PLAN_IMAGES_QUERY_REQUEST = 'bdxlive/plan_detail/images/images_query_request';\r\nexport const PLAN_IMAGES_QUERY_SUCCESS = 'bdxlive/plan_detail/images/images_query_success';\r\nexport const PLAN_IMAGES_QUERY_FAIL = 'bdxlive/plan_detail/images/images_query_fail';\r\n\r\n/**\r\n * Generic Video Request\r\n */\r\nexport const PLAN_VIDEOS_QUERY_REQUEST = 'bdxlive/plan_detail/videos/videos_query_request';\r\nexport const PLAN_VIDEOS_QUERY_SUCCESS = 'bdxlive/plan_detail/videos/videos_query_success';\r\nexport const PLAN_VIDEOS_QUERY_FAIL = 'bdxlive/plan_detail/videos/videos_query_fail';\r\n\r\n/**\r\n * Generic Interactive Media Request\r\n */\r\nexport const PLAN_INTERACTIVE_MEDIA_QUERY_REQUEST = 'bdxlive/plan_detail/interactive_media/interactive_media_query_request';\r\nexport const PLAN_INTERACTIVE_MEDIA_QUERY_SUCCESS = 'bdxlive/plan_detail/interactive_media/interactive_media_query_success';\r\nexport const PLAN_INTERACTIVE_MEDIA_QUERY_FAIL = 'bdxlive/plan_detail/interactive_media/interactive_media_query_fail';\r\n\r\nexport const PLAN_OPTIONS_QUERY_REQUEST = 'bdxlive/plan_detail/plan_options/plan_options_query_request';\r\nexport const PLAN_OPTIONS_QUERY_SUCCESS = 'bdxlive/plan_detail/plan_options/plan_options_query_success';\r\nexport const PLAN_OPTIONS_QUERY_FAIL = 'bdxlive/plan_detail/plan_options/plan_options_query_fail';\r\n","/**\r\n This is where you define your action creators. All action creators must be functions\r\n that return an object with at least the type property. We do not define any async\r\n logic in this file.\r\n*/\r\nimport { QueryRequestAction, QuerySuccessAction, QueryFailAction } from '@/redux/models/actions';\r\nimport { PLAN_DETAIL_REQUEST, PLAN_DETAIL_SUCCESS, PLAN_DETAIL_FAIL, PLAN_DETAIL_SAVE_REQUEST, PLAN_DETAIL_SAVE_SUCCESS, PLAN_DETAIL_SAVE_FAIL, PLAN_DISTRIBUTION_REQUEST, PLAN_DISTRIBUTION_SUCCESS, PLAN_DISTRIBUTION_FAIL, PLAN_IMAGES_QUERY_REQUEST, PLAN_IMAGES_QUERY_SUCCESS, PLAN_IMAGES_QUERY_FAIL, PLAN_VIDEOS_QUERY_REQUEST, PLAN_VIDEOS_QUERY_SUCCESS, PLAN_VIDEOS_QUERY_FAIL, PLAN_INTERACTIVE_MEDIA_QUERY_REQUEST, PLAN_INTERACTIVE_MEDIA_QUERY_SUCCESS, PLAN_INTERACTIVE_MEDIA_QUERY_FAIL, PLAN_OPTIONS_QUERY_REQUEST, PLAN_OPTIONS_QUERY_SUCCESS, PLAN_OPTIONS_QUERY_FAIL, PLAN_DETAIL_BREAK_INHERITANCE_REQUEST, PLAN_DETAIL_BREAK_INHERITANCE_SUCCESS, PLAN_DETAIL_BREAK_INHERITANCE_FAIL } from './types';\r\nimport { Plan } from '@/models/Plan';\r\nimport { modelRequestSchema, modelMutateSchema } from '../../../../app.entities';\r\nimport { updatePlanMutation, insertPlanMutation, API_GET_PLAN_DISTRIBUTION_QUERY, PlanImagesQuery, PlanVideosQuery, PlanInteractiveMediaQuery, fixApiPlan, PlanOptionsQuery, breakInheritanceMutation } from './api';\r\n\r\nexport const planDetailRequest = (planId, getCommunityLocation = false) => ({ type: PLAN_DETAIL_REQUEST, data: { planId, entityId: planId, getCommunityLocation }, meta: { model: Plan() } });\r\nexport const planDetailSuccess = (plans, planId) => ({ type: PLAN_DETAIL_SUCCESS, data: { entityId: planId, entities: plans }, meta: { model: Plan(), schema: modelRequestSchema } });\r\nexport const planDetailFail = (error, planId) => ({ type: PLAN_DETAIL_FAIL, error: true, data: { entityId: planId, appMessage: 'Error loading Plan detail information', errorMessage: error.message }, meta: { model: Plan() } });\r\n\r\nexport const planDistributionFieldsRequest = (planId) => ({ type: PLAN_DISTRIBUTION_REQUEST, query: API_GET_PLAN_DISTRIBUTION_QUERY(planId), meta: { schema: modelRequestSchema } });\r\nexport const planDistributionFieldsSuccess = (entities, meta) => ({ type: PLAN_DISTRIBUTION_SUCCESS, data: { entities }, meta });\r\nexport const planDistributionFieldsFail = (error) => ({ type: PLAN_DISTRIBUTION_FAIL, error: true, data: error });\r\n\r\nexport const planSaveRequest = (planId, formData, isNew) => ({ type: PLAN_DETAIL_SAVE_REQUEST, data: { entityId: planId }, mutation: isNew ? insertPlanMutation : updatePlanMutation, meta: { formData, model: Plan(), schema: modelMutateSchema } });\r\nexport const planSaveSuccess = (entities, meta, planId) => ({ type: PLAN_DETAIL_SAVE_SUCCESS, data: { entityId: planId, entities: { plans: [fixApiPlan(entities.updatePlan) || fixApiPlan(entities.insertPlan)] } }, meta: { model: Plan(), schema: modelRequestSchema } });\r\nexport const planSaveFail = (error, planId) => ({ type: PLAN_DETAIL_SAVE_FAIL, error: true, data: { entityId: planId, appMessage: convertPlanErrorMessage(error), errorMessage: error.message }, meta: { model: Plan() } });\r\n\r\nexport const planBreakInheritance = (plan) => ({ type: PLAN_DETAIL_BREAK_INHERITANCE_REQUEST, data: { id: plan.id }, mutation: breakInheritanceMutation(plan), meta: { model: Plan(), schema: modelMutateSchema } });\r\nexport const planBreakInheritanceSuccess = (entities, meta, planId) => ({ type: PLAN_DETAIL_BREAK_INHERITANCE_SUCCESS, data: { entityId: planId, entities: { plans: entities.breakParentPlanInheritance.map(fixApiPlan) } }, meta: { model: Plan(), schema: modelRequestSchema } });\r\nexport const planBreakInheritanceFail = (error, planId) => ({ type: PLAN_DETAIL_BREAK_INHERITANCE_FAIL, error: true, data: { entityId: planId, appMessage: `Server Error breaking plan inheritance`, errorMessage: error.message }, meta: { model: Plan() } });\r\n\r\n/**\r\n * Based on the posible errors returned by the community mutation, choose the proper error message for the UI\r\n */\r\nconst convertPlanErrorMessage = (error) => {\r\n if (error.message.includes('another plan with the same plan number') || (error.message.includes('Invalid plan number') && error.message.includes('is already in the community'))) {\r\n return \"There's another plan with the same plan number in this Community. Please update it to be unique.\";\r\n }\r\n if (error.message.includes('Invalid Brochure URL')) return 'Error. The Website specified for the brochure is not valid or is not accessible at this moment.';\r\n return 'Error saving the plan information, please try again';\r\n};\r\n\r\n/**\r\n * Plan Image Request\r\n */\r\n/**\r\n * Model Request Action Creator Images\r\n * @param {*} requestArguments api request\r\n */\r\nexport const planImagesQueryRequest = QueryRequestAction(PLAN_IMAGES_QUERY_REQUEST, PlanImagesQuery);\r\n/**\r\n * Model success action creator for Images\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const planImagesQuerySuccess = QuerySuccessAction(PLAN_IMAGES_QUERY_SUCCESS);\r\n\r\n/**\r\n * Model request fail action creator for Images\r\n * @param {*} error cause\r\n */\r\nexport const planImagesQueryFail = QueryFailAction(PLAN_IMAGES_QUERY_FAIL);\r\n\r\n/**\r\n * Plan video Request\r\n */\r\n/**\r\n * Model Request Action Creator Videos\r\n * @param {*} requestArguments api request\r\n */\r\nexport const planVideosQueryRequest = QueryRequestAction(PLAN_VIDEOS_QUERY_REQUEST, PlanVideosQuery);\r\n/**\r\n * Model success action creator for Videos\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const planVideosQuerySuccess = QuerySuccessAction(PLAN_VIDEOS_QUERY_SUCCESS);\r\n\r\n/**\r\n * Model request fail action creator for Videos\r\n * @param {*} error cause\r\n */\r\nexport const planVideosQueryFail = QueryFailAction(PLAN_VIDEOS_QUERY_FAIL);\r\n\r\n/**\r\n * Plan Interactive Media Request\r\n */\r\n/**\r\n * Model Request Action Creator Interactive Media\r\n * @param {*} requestArguments api request\r\n */\r\nexport const planInteractiveMediaQueryRequest = QueryRequestAction(PLAN_INTERACTIVE_MEDIA_QUERY_REQUEST, PlanInteractiveMediaQuery);\r\n/**\r\n * Model success action creator for Interactive Media\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const planInteractiveMediaQuerySuccess = QuerySuccessAction(PLAN_INTERACTIVE_MEDIA_QUERY_SUCCESS);\r\n\r\n/**\r\n * Model request fail action creator for Interactive Media\r\n * @param {*} error cause\r\n */\r\nexport const planInteractiveMediaQueryFail = QueryFailAction(PLAN_INTERACTIVE_MEDIA_QUERY_FAIL);\r\n\r\nexport const planOptionsQueryRequest = (requestArguments = {}) => ({ type: PLAN_OPTIONS_QUERY_REQUEST, query: PlanOptionsQuery(requestArguments), meta: { schema: modelRequestSchema } });\r\nexport const planOptionsQuerySuccess = (entities, meta) => ({ type: PLAN_OPTIONS_QUERY_SUCCESS, data: { entities }, meta });\r\nexport const planOptionsQueryFail = (error) => ({ type: PLAN_OPTIONS_QUERY_FAIL, error: true, data: error });\r\n","export const PLAN_DETAIL_RESYNC_REQUEST = 'bdxlive/plan_detail/resync_request';\r\nexport const PLAN_DETAIL_RESYNC_SUCCESS = 'bdxlive/plan_detail/resync_success';\r\nexport const PLAN_DETAIL_RESYNC_FAIL = 'bdxlive/plan_detail/resync_fail';\r\n\r\nexport const SYNC_STANDALONE_TO_LIBRARY_REQUEST = 'bdxlive/plan_detail/sync_modal/sync_standalone_to_library_request';\r\nexport const SYNC_STANDALONE_TO_LIBRARY_SUCCESS = 'bdxlive/plan_detail/sync_modal/sync_standalone_to_library_success';\r\nexport const SYNC_STANDALONE_TO_LIBRARY_FAIL = 'bdxlive/plan_detail/sync_modal/sync_standalone_to_library_fail';\r\n","import { API_GET_PLAN_FIELDS, BASIC_PLAN_FIELDS } from '../api';\r\n\r\nexport const resyncPlanMutation = (id) => `\r\nmutation {\r\n resyncPlan(planId: ${id}, section: All){\r\n ${API_GET_PLAN_FIELDS}\r\n }\r\n}\r\n`;\r\n\r\nexport const syncStandaloneToLibraryMutation = (standaloneId, libraryId) => `\r\nmutation {\r\n associateParentPlan (planId: ${standaloneId}, parentPlanId: ${libraryId}) {\r\n id\r\n dateLastChanged\r\n parentFlag\r\n parentPlanId\r\n parentFlag\r\n childPlansCount\r\n childPlans{\r\n parentPlan{\r\n ${API_GET_PLAN_FIELDS}\r\n }\r\n ${BASIC_PLAN_FIELDS}\r\n }\r\n }\r\n}\r\n`;\r\n","import { modelRequestSchema } from '@/app/app.entities';\r\nimport { Plan } from '@/models/Plan';\r\nimport { PLAN_DETAIL_RESYNC_REQUEST, PLAN_DETAIL_RESYNC_SUCCESS, PLAN_DETAIL_RESYNC_FAIL, SYNC_STANDALONE_TO_LIBRARY_REQUEST, SYNC_STANDALONE_TO_LIBRARY_SUCCESS, SYNC_STANDALONE_TO_LIBRARY_FAIL } from './types';\r\nimport { resyncPlanMutation, syncStandaloneToLibraryMutation } from './api';\r\nimport { fixApiPlan } from '../api';\r\n\r\nexport const planResyncRequest = (planId) => ({ type: PLAN_DETAIL_RESYNC_REQUEST, data: { entityId: planId }, query: resyncPlanMutation(planId), meta: { model: Plan() } });\r\nexport const planResyncSuccess = (entities, planId) => ({ type: PLAN_DETAIL_RESYNC_SUCCESS, data: { entityId: planId, entities: { plans: [fixApiPlan(entities.resyncPlan)] } }, meta: { model: Plan(), schema: modelRequestSchema } });\r\nexport const planResyncFail = (error, planId) => ({ type: PLAN_DETAIL_RESYNC_FAIL, error: true, data: { entityId: planId, appMessage: `There was an error trying to resync the plan information`, errorMessage: error.message }, meta: { model: Plan() } });\r\n\r\nconst standAloneSyncError = 'There was an error trying to sync the plan information';\r\nexport const syncStandaloneToLibraryRequest = (standaloneId, libraryId) => ({ type: SYNC_STANDALONE_TO_LIBRARY_REQUEST, data: { entityId: standaloneId }, query: syncStandaloneToLibraryMutation(standaloneId, libraryId), meta: { model: Plan() } });\r\nexport const syncStandaloneToLibrarySuccess = (entities, planId) => ({ type: SYNC_STANDALONE_TO_LIBRARY_SUCCESS, data: { entityId: planId, entities: { plans: [fixApiPlan(entities.associateParentPlan)] } }, meta: { model: Plan(), schema: modelRequestSchema } });\r\nexport const syncStandaloneToLibraryFail = (error, planId) => ({ type: SYNC_STANDALONE_TO_LIBRARY_FAIL, error: true, data: { entityId: planId, appMessage: error?.message || standAloneSyncError, errorMessage: error?.message || standAloneSyncError }, meta: { model: Plan() } });\r\n","import { call, put, takeLatest } from 'redux-saga/effects';\r\nimport { commitEntity } from '@/redux/forms/api';\r\nimport { editEntity } from '@/redux/forms/actions';\r\nimport { Plan } from '@/models/Plan';\r\nimport { planResyncSuccess, planResyncFail, syncStandaloneToLibrarySuccess, syncStandaloneToLibraryFail } from './actions';\r\nimport { PLAN_DETAIL_RESYNC_REQUEST, SYNC_STANDALONE_TO_LIBRARY_REQUEST } from './types';\r\n\r\nfunction* requestPlanSync(success, fail, { data: { entityId: planId }, query }) {\r\n try {\r\n const response = yield call(commitEntity, query);\r\n yield put(success(response.data.Result, planId));\r\n } catch (error) {\r\n yield put(fail(error, planId));\r\n } finally {\r\n yield put(editEntity(planId, Plan()));\r\n }\r\n}\r\n\r\nexport const planSyncSagas = [takeLatest(PLAN_DETAIL_RESYNC_REQUEST, requestPlanSync, planResyncSuccess, planResyncFail), takeLatest(SYNC_STANDALONE_TO_LIBRARY_REQUEST, requestPlanSync, syncStandaloneToLibrarySuccess, syncStandaloneToLibraryFail)];\r\n","export default \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAoHBwkHBgoJCAkLCwoMDxkQDw4ODx4WFxIZJCAmJSMgIyIoLTkwKCo2KyIjMkQyNjs9QEBAJjBGS0U+Sjk/QD3/2wBDAQsLCw8NDx0QEB09KSMpPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT3/wgARCAGMAoADAREAAhEBAxEB/8QAGwABAQADAQEBAAAAAAAAAAAAAAUBAwQCBgf/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAD9SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgB3gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHggA+gPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJRPBQKoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpIABkvG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQ5QAdRbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOMjAAAsnYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYIBqAABtL5kAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8nKcxpPJk2HQdZtBNJgAAAKZSAAAAAAAAAAAAAAAAAAAAAAAAAAAAPJOJ55AAAB1neRzyAAAD0XzYAAAAAAAAAAAAAAAAAAAAAAAAAAAc5GNYAAAABXNRNAAAAO0sAAAAAAAAAAAAAAAAAAAAAAAAAAA5CMYAAAAAOgug4SQAAAAXDpAAAAAAAAAAAAAAAAAAAAAAAAABoIRgAAAAAF06ACcSwAAAby6ZAAAAAAAAAAAAAAAAAAAAAAAABggmkAAAAAHcVwACGcwAAAKx3gAAAAAAAAAAAAAAAAAAAAAAAAnkoAAAAAHovmwAA0EEAAAHs+gPQAAAAAAAAAAAAAAAAAAAAAAAB8+agAAAAAVCiAAAQzmAAABQKoAAAAAAAAAAAAAAAAAAAAAAANBBAAAAABuLxkAAAnkoAAAGS8bgAAAAAAAAAAAAAAAAAAAAAACeSgAAAAAWjrAAABoIIAAAB1FsAAAAAAAAAAAAAAAAAAAAAAAlk4AAAAA6y0AAAAeD50AAAAFk7AAAAAAAAAAAAAAAAAAAAAAASTgAAAAAOo2gAAAA3gAAAA2HWAAAAAAAAAAAAAAAAAAAAAACUTwAAAAAAAAAD0fRgAAAAAAAAAAAAAAAAAAAAAAAAAAAE8lAAAAAAAAAAG8vAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgggAAAAAAAAAHeVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAfPmoAAAAAAAAAFs6gAAAAAAAAAAAAAAAAAAAAAAAAAAAATyUAAAAAAAAAbi8ZAAAAAAAAAAAAAAAAAAAAAAAAAAAABggmkAAAAAAAAFo6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc5DMAAAAAAAAoFUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHIRjAAAAAAAOwsGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADmI5rAAAAABRKZkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8k04DyAAADqKZ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHk5DmNR4Mmw6DrNwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//xAA3EAACAQEEBwYFAwQDAAAAAAABAgMEAAUhMRESEyIwU2EUFTJQUXEgQEFgoRAzUkKBkNFygrL/2gAIAQEAAT8A/wAfw+z7zqdnFslO8+fQWuyp2kWyY7yZe32dJIsUbO2QFppWmlZ2zNoZWhlV1zFo3WWNXXIj7NvSp1m2K5DFv1uup1WMLZHFfsyqnFPAz/XIDrYksSTiT+oJUgg6CLUs4qIA/wBcj7/ZdfU7ecgHcTAfDd9TsJ9DHcfA/ZV41Oxg1VO+/wCB8d3VO3g1WO+mB+yGYIpZjoAxNqmc1E7Of7D0Hx005p5w4/v1FlYOoZTpBGkeeMyoNLMAPU2kvOBMF0uelnvdz4I1HvY3lUnJwPYW7fU802F41PM/Ast6zDxBGtHe0Z/cRl9sbRVMU37bg9Pr+t6VOgCBT1bg3XU6QYGOWK+dO6xqWdgoH1Nqi9c1gH/Y2kkeVtLsWPXgwXjNDgx119DYXjC0DODio8Jzs7mRy7Zk6TwUcxuHXAg2gmWeFZF+vnFVWJTL6ucltPUSVD60h9h9BxLupQkBdwCXGR9LVd25vTj3T/XCuyp2UuzY7r/g+b1taKZdVcZD+LMzOxZiSTmeJQ0/aJwD4Fxb9a6gEwMkWEn1HrbLg0VR2iAE+NcG81q6kU0JbNjgos7s7lnOkniC1HT9mgCnxHFvgvKj1gZ4xiPEODRVHZpwx8Jwaw8zJCgknQBaqqDUzFzlko6cW7KbaS7Vhupl7/FXU3Z590bjYjg3ZU7SIxMd5Muo8zvWfUjES5tifbixxtLIEXMm0MQhiVFyA+Ksg7RTsv8AUMV4MMrQyq65i0brLGrrkR5lVTbeod+uHtxbrptVTMwxOC+3Ar4dlVt6NvDg3XU6rGFsjivmNZJsqSRumgcWlgNROE+mZPSwAUAAaAOBe0emFJP4nRwQSpBB0EWpZxUQB/rkR18wvZ9ECL6txbvpthBpYb74ng1qa9HKOmnhXfU7CfQx3HwPmF7nfiHQ8S7qbbz6zDcTE9TwpBrROPUHh3dU7eDVY76fkeX3v++n/HiQXg9PEESNLd7S8tLd7S8tLd7S8tLd7S8tLd7S8tLd7S8tLd7S8tLd7S8tLd7S8tLd7S8tLd0xcx7d0Rcx7d0Rcx7d0Rcx7d0Rcx7d0Rcx7d0Rcx7d0Rcx7d0Rcx7d0Rcx7QXelPKHSR/L73G/Eeh+WjGmRR6kedXsmmFG9G+Wok16yMddPnVbHtaSRRmBpHy10x6Z3f8AiNHndTFsKh09Dh7fK3dDsqQer7x87vWDWjEwzXA+3ylJB2ioVPpmfbzxlDKVYaQcDaqgNNOUOWYPqPk6Cm7PBpYb74nz2rphUw6MnGKmzKUYqw0EZ/I3bR65E0g3R4R6+f1tEKldZMJB+bMpRirAgjMcehoTOQ8mEf8A6sAANAGgfYFVRJUjTk4ya00EkD6sg0eh9eIATaju3J6geyf7sBowH2E8aSoVdQwtUXURjAdI/ibPG8barqVPXgwXfNNiRqL6tanooqbFRpf+R+xnRZBodQw62kuuB/BpQ9LPdMg8DqfxY3dUj+gH2It2Gp5LWFBU8o2S6pznqLaO6FH7khPQWipYYfAgB9cz/lK//8QAFBEBAAAAAAAAAAAAAAAAAAAAsP/aAAgBAgEBPwB6D//EABQRAQAAAAAAAAAAAAAAAAAAALD/2gAIAQMBAT8Aeg//2Q==\"","export default \"__VITE_ASSET__2lwLGQ$K__\"","import noImage from '@/assets/images/thumbnails/image-preview-med@2x.jpg';\r\nimport processingImage from '@/assets/images/thumbnails/imgBeingProcessed.png';\r\nimport { empty } from '../bdx-lodash-lite';\r\n\r\nconst enviromentsPrefixes = ['sprint', 'test', 'stage', 'dev'];\r\n\r\nconst clearEnviromentPrefixes = (url) => {\r\n enviromentsPrefixes.forEach((str) => {\r\n url = url.replace(new RegExp(`${str}-`, 'g'), '').replace(new RegExp(`-${str}`, 'g'), '');\r\n });\r\n\r\n return url;\r\n};\r\n/**\r\n * Centralize images urls formation, so we can play with sizes and source based in the enviroment\r\n */\r\nexport const formatImageUrl = (imageUrl, size, forceProd) => {\r\n let url = imageUrl;\r\n\r\n url = `${url}?progressive=true`;\r\n\r\n if (size) {\r\n url = `${url}&width=${size}`;\r\n }\r\n\r\n if (url && ((document.location.search && document.location.search.toLowerCase().includes('prodimages')) || forceProd)) {\r\n url = clearEnviromentPrefixes(url);\r\n }\r\n\r\n return url;\r\n};\r\n\r\n/**\r\n * Check a image object and if the url is not valid fallback with a default or processing image\r\n * @param {*} image\r\n */\r\nexport const transformListingImage = (image) => {\r\n let newImage = null;\r\n\r\n // Preferred Image\r\n if (!image) {\r\n newImage = noImage;\r\n } else if (empty(image.localPath)) {\r\n newImage = processingImage;\r\n } else {\r\n newImage = image.localPath;\r\n }\r\n\r\n return newImage;\r\n};\r\n\r\n/**\r\n * Takes the error event of any img element and try to load the image from other enviroments\r\n * @param {Object} target Destructuring of the event for any image html element\r\n */\r\nexport const handleInvalidBHIImages = ({ target }) => {\r\n // if image doesnt exists on sprint, try to load it from prod, else default image place holder\r\n target.src = clearEnviromentPrefixes(target.src);\r\n target.addEventListener('error', (e) => {\r\n e.target.src = noImage;\r\n });\r\n};\r\n","import { getPlanById } from '@/redux/entities';\r\nimport { schemaDenormalizer } from '@/redux/models/selectors';\r\nimport { empty } from '../../../../utils/bdx-lodash-lite';\r\nimport { planSchema, partnerSchema } from '../../../../app.entities';\r\nimport { transformListingImage } from '../../../../utils/images/image-url';\r\nimport { Plan } from '@/models/Plan';\r\nimport { editEntitySelector } from '../../../../@redux/forms/selectors';\r\n\r\nexport const planLoadedSelector = (state, planId) => {\r\n return !empty(state.app.entities.plans[planId]);\r\n};\r\n\r\nexport const planEntitySelector = schemaDenormalizer((state, planId) => planId, planSchema);\r\n\r\nexport const partnerEntitySelector = schemaDenormalizer((state, partnerId) => partnerId, partnerSchema);\r\n\r\nexport const planFullLoadedSelector = (state, planId) => {\r\n return state.app.entities.plans && !empty(state.app.entities.plans[planId]) && state.app.entities.plans[planId].dateLastChanged;\r\n};\r\n\r\nexport const planEditBrochuresSelector = (state, planId) => {\r\n const entityEdit = editEntitySelector(state, planId, Plan().name);\r\n return ((entityEdit && entityEdit.entity) || {}).brochures || [];\r\n};\r\n\r\nexport const planInfoSelector = (state, planId) => {\r\n const entityEdit = editEntitySelector(state, planId, Plan().name);\r\n const originalPlan = planEntitySelector(state, planId) || null;\r\n const plan = (entityEdit && entityEdit.entity) || originalPlan;\r\n\r\n if (!empty(plan)) {\r\n /**\r\n * When community is null it means the value has actually been set to such value\r\n * That means that the element actually has no community (it should be either a division or corporate plan library entry)\r\n */\r\n if (originalPlan == null || originalPlan.community !== null) {\r\n const planData = originalPlan || plan;\r\n const { name: planName, community: { id: communityId, name: communityName, status: communityStatus, channelDisplay = {} } = {}, parentPlan = null, parentPlanId } = planData;\r\n const { builderId, builderName: divisionName, partner: { partnerId, partnerName } = {} } = planData.builder || planData.community?.builder || {};\r\n const { builderId: parentBuilderId, builderName, planLibraryType, autoFeedFlag, divisionsCount } = planData.builder?.parentBuilder || planData.community?.builder?.parentBuilder || {};\r\n\r\n return transformPlan(state, {\r\n ...plan,\r\n community: originalPlan ? originalPlan.community : plan.community, // plan (from editEntitySelector) community property sometimes comes as id number only and it causes issues, original entity community property value is more reliable\r\n ...{\r\n planName,\r\n planId,\r\n communityId,\r\n communityName,\r\n communityStatus,\r\n partnerId,\r\n builderId,\r\n divisionName,\r\n partnerName,\r\n parentBuilderId,\r\n builderName,\r\n channelDisplay,\r\n planLibraryType,\r\n autoFeedFlag,\r\n divisionsCount,\r\n parentPlan,\r\n parentPlanId,\r\n },\r\n });\r\n }\r\n if (originalPlan.builder && originalPlan.builder.parentBuilder !== null) {\r\n /**\r\n * This works for plan library items that are division plan libraries\r\n */\r\n const { builder: { builderId, builderName: divisionName, partner: { partnerId, partnerName } = {}, parentBuilder: { builderId: parentBuilderId, builderName, planLibraryType, autoFeedFlag, divisionsCount } = {} } = {} } = originalPlan;\r\n return transformPlan(\r\n state,\r\n {\r\n ...plan,\r\n ...{\r\n partnerId,\r\n builderId,\r\n divisionName,\r\n partnerName,\r\n parentBuilderId,\r\n builderName,\r\n planLibraryType,\r\n autoFeedFlag,\r\n divisionsCount,\r\n },\r\n },\r\n true\r\n );\r\n }\r\n\r\n if (originalPlan.builder !== null) {\r\n /**\r\n * This works for plan library items that are corporate plan libraries\r\n */\r\n const { builder: { builderId: parentBuilderId, builderName, partner: { partnerId, partnerName } = {}, planLibraryType, autoFeedFlag, divisionsCount } = {} } = originalPlan;\r\n return transformPlan(\r\n state,\r\n {\r\n ...plan,\r\n ...{\r\n partnerId,\r\n partnerName,\r\n parentBuilderId,\r\n builderName,\r\n planLibraryType,\r\n autoFeedFlag,\r\n divisionsCount,\r\n },\r\n },\r\n true\r\n );\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * Transform the plan objecto to be returned, setting some properties that need to be re formated before pass it t o the UI\r\n * @param {Object} state app state\r\n * @param {Object} plan to be transformed\r\n * @param {Boolean} noCommunity when a division or corporation plan library is selected\r\n */\r\nconst transformPlan = (state, plan, builderPlanLibrary) => {\r\n // check if the full community object was already retrieved\r\n // date field is only present when full community info is requested\r\n if (!plan.dateLastChanged || (!builderPlanLibrary ? empty(plan.channelDisplay) : false)) {\r\n plan.loading = true;\r\n return plan;\r\n }\r\n\r\n if (!plan.image) {\r\n plan.image = { src: transformListingImage(plan.thumbnail) };\r\n }\r\n\r\n if (!empty(plan.brochures)) {\r\n plan.brochures = plan.brochures.map((brochure) => {\r\n if (empty(brochure.type)) {\r\n const type = brochure.localPath ? 'PDF' : 'Website';\r\n return { ...brochure, file: {}, type, method: type };\r\n }\r\n return brochure;\r\n });\r\n }\r\n\r\n plan.loading = false;\r\n\r\n return plan;\r\n};\r\n\r\nexport const planOptionsSelector = (state, planId) => (getPlanById(state, planId) || {}).planOptions || [];\r\n","export const PLAN_ASSIGNABLE_COMMUNITIES_REQUEST = 'bdxlive/plan_library/plan_assignable_communities_request';\r\nexport const PLAN_ASSIGNABLE_COMMUNITIES_SUCCESS = 'bdxlive/plan_library/plan_assignable_communities_success';\r\nexport const PLAN_ASSIGNABLE_COMMUNITIES_FAIL = 'bdxlive/plan_library/plan_assignable_communities_fail';\r\n","import { empty } from '@/lodash/empty';\r\n\r\nexport const planAssignableCommunities = ({ id, divisionIds }) => `\r\n query {\r\n communities(\r\n assignableTo: ${id},\r\n status: [Approved, Inactive],\r\n top: 500,\r\n ${!empty(divisionIds) ? `builderIds: [${divisionIds}],` : ''}\r\n ) {\r\n id\r\n name\r\n number\r\n assignableByPlanNumber\r\n builder{\r\n builderId\r\n builderName\r\n }\r\n }\r\n }\r\n`;\r\n","import { QueryRequestAction, QuerySuccessAction, QueryFailAction } from '@/redux/models/actions';\r\nimport { PLAN_ASSIGNABLE_COMMUNITIES_REQUEST, PLAN_ASSIGNABLE_COMMUNITIES_SUCCESS, PLAN_ASSIGNABLE_COMMUNITIES_FAIL } from './types';\r\nimport { planAssignableCommunities } from './api';\r\nimport { Plan } from '@/models/Plan';\r\n\r\nexport const planAssignableCommunitiesRequest = QueryRequestAction(PLAN_ASSIGNABLE_COMMUNITIES_REQUEST, planAssignableCommunities, Plan());\r\nexport const planAssignableCommunitiesSuccess = QuerySuccessAction(PLAN_ASSIGNABLE_COMMUNITIES_SUCCESS);\r\nexport const planAssignableCommunitiesFail = QueryFailAction(PLAN_ASSIGNABLE_COMMUNITIES_FAIL);\r\n","import { takeLatest } from 'redux-saga/effects';\r\nimport { getModels } from '@/redux/models/sagas';\r\nimport { PLAN_ASSIGNABLE_COMMUNITIES_REQUEST } from './types';\r\nimport { planAssignableCommunitiesSuccess, planAssignableCommunitiesFail } from './actions';\r\n\r\nexport const communityAssignSagas = [\r\n /**\r\n * This generator listens to PLAN_ASSIGNABLE_COMMUNITIES_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(PLAN_ASSIGNABLE_COMMUNITIES_REQUEST, getModels, planAssignableCommunitiesSuccess, planAssignableCommunitiesFail),\r\n];\r\n","// Plan Detail Sagas\r\n// These are Ajax Calls (side effects handled with Saga Middleware) to the Api\r\nimport { takeLatest, call, put, actionChannel, select, take } from 'redux-saga/effects';\r\nimport { searchZipRequest } from '@/app/@redux/location/actions';\r\nimport { empty } from '@/lodash/';\r\nimport { PLAN_DETAIL_REQUEST, PLAN_DETAIL_SAVE_REQUEST, PLAN_DISTRIBUTION_REQUEST, PLAN_IMAGES_QUERY_REQUEST, PLAN_VIDEOS_QUERY_REQUEST, PLAN_INTERACTIVE_MEDIA_QUERY_REQUEST, PLAN_OPTIONS_QUERY_REQUEST, PLAN_DETAIL_BREAK_INHERITANCE_REQUEST } from './types';\r\nimport { requestPlanApi, fixApiPlan } from './api';\r\nimport { requestCommunityDisplayOnApi } from '../../community-detail/@redux/api';\r\nimport { communityDetailSuccess } from '../../community-detail/@redux/actions';\r\nimport { planDetailSuccess, planDetailFail, planSaveSuccess, planSaveFail, planDistributionFieldsSuccess, planDistributionFieldsFail, planImagesQuerySuccess, planImagesQueryFail, planVideosQuerySuccess, planVideosQueryFail, planInteractiveMediaQuerySuccess, planInteractiveMediaQueryFail, planOptionsQueryFail, planOptionsQuerySuccess, planBreakInheritanceSuccess, planBreakInheritanceFail } from './actions';\r\nimport { formsChannel, mutateModels } from '../../../../@redux/forms/sagas';\r\nimport { getModelsChannel, getModels } from '../../../../@redux/models/sagas';\r\nimport { InvalidEntityError } from '../../../../utils/error-handling/types';\r\nimport { planSyncSagas } from './plan-sync/sagas';\r\nimport { cancelEdit, editEntity } from '@/redux/forms/actions';\r\nimport { Plan } from '@/models/Plan';\r\nimport { editEntitySelector } from '@/redux/forms/selectors';\r\nimport { planInfoSelector } from './selectors';\r\nimport { modelsEntityFlush } from '@/redux/models/actions';\r\nimport { communityAssignSagas } from './community-assign/sagas';\r\n\r\n/*\r\n Handles the retrive of Plan Details information for plan Details page.\r\n*/\r\nfunction* requestPlan({ data: { planId, getCommunityLocation } }) {\r\n try {\r\n const response = yield call(requestPlanApi, planId, getCommunityLocation);\r\n\r\n if (response.data.Result && response.data.Result.plans && response.data.Result.plans.length > 0) {\r\n // Data fixes, some times api dont return data as we expect, so we define proper defaults or sorts here.\r\n fixApiPlan(response.data.Result.plans[0]);\r\n\r\n const isEditing = yield select(editEntitySelector, planId, Plan().name);\r\n yield put(planDetailSuccess(response.data.Result, planId));\r\n\r\n if (isEditing) {\r\n yield put(cancelEdit(planId, Plan()));\r\n yield put(editEntity(planId, Plan()));\r\n }\r\n\r\n /**\r\n * If there's a community value then proceed with pulling the channelDisplay\r\n */\r\n const { community: planCommunity } = response.data.Result.plans[0];\r\n if (!empty(planCommunity)) {\r\n const { id: communityId, ownerPartnerId: partnerId, location, salesOffice } = planCommunity;\r\n\r\n // in case we request the zip code for the plan, request also locations for that zip code (used in insert specs )\r\n const zipLocation = location && location.zip;\r\n const zipCode = zipLocation || (salesOffice && salesOffice.zip);\r\n if (getCommunityLocation && partnerId && zipCode) yield put(searchZipRequest({ zips: [zipCode], partnerId }));\r\n\r\n const responseDisplay = yield call(requestCommunityDisplayOnApi, communityId);\r\n const { displayChannelSelection } = responseDisplay?.data?.Result || {};\r\n yield put(communityDetailSuccess({ communities: [{ ...{ id: parseInt(communityId) }, channelDisplay: { ...displayChannelSelection } }] }, communityId));\r\n }\r\n } else throw new InvalidEntityError('Invalid Plan, this plan id is not valid anymore');\r\n } catch (error) {\r\n // Show error message in case any error in the authentication process\r\n yield put(planDetailFail(error, planId));\r\n }\r\n}\r\n\r\nexport function* breakInheritance(success, fail, action, continueWith) {\r\n const { data: { id } = {}, meta } = action;\r\n try {\r\n const plan = yield select(planInfoSelector, id) || {};\r\n if (!empty(plan?.parentPlan?.id)) {\r\n yield put(modelsEntityFlush([plan?.parentPlan?.id], Plan()));\r\n }\r\n yield mutateModels(success, fail, action, continueWith);\r\n } catch (error) {\r\n // On fail dispatch the respective action\r\n yield put(fail(error, id, meta));\r\n }\r\n}\r\n\r\nexport function* breakInheritanceChannel(actionTake, success, fail, continueWith) {\r\n // Listen to MODEL_REQUEST_CHANNEL actions\r\n const channel = yield actionChannel(actionTake);\r\n while (true) {\r\n // On next channel capture take the action\r\n const action = yield take(channel);\r\n // Call the saga with the respective handlers and action\r\n yield breakInheritance(success, fail, action, continueWith);\r\n }\r\n}\r\n\r\n// Saga Watcher for Comm Detail Module\r\nexport const planDetailSagas = [\r\n takeLatest(PLAN_DETAIL_REQUEST, requestPlan),\r\n formsChannel(PLAN_DETAIL_SAVE_REQUEST, planSaveSuccess, planSaveFail),\r\n getModelsChannel(PLAN_DISTRIBUTION_REQUEST, planDistributionFieldsSuccess, planDistributionFieldsFail),\r\n\r\n /**\r\n * This generator listens to IMAGES_QUERY_SUCCESS\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(PLAN_IMAGES_QUERY_REQUEST, getModels, planImagesQuerySuccess, planImagesQueryFail),\r\n /**\r\n * This generator listens to IMAGES_QUERY_SUCCESS\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(PLAN_VIDEOS_QUERY_REQUEST, planVideosQuerySuccess, planVideosQueryFail),\r\n getModelsChannel(PLAN_INTERACTIVE_MEDIA_QUERY_REQUEST, planInteractiveMediaQuerySuccess, planInteractiveMediaQueryFail),\r\n getModelsChannel(PLAN_OPTIONS_QUERY_REQUEST, planOptionsQuerySuccess, planOptionsQueryFail),\r\n breakInheritanceChannel(PLAN_DETAIL_BREAK_INHERITANCE_REQUEST, planBreakInheritanceSuccess, planBreakInheritanceFail),\r\n\r\n ...planSyncSagas,\r\n ...communityAssignSagas,\r\n];\r\n","/*\r\nThis file contains string literals for your action types.\r\nThis provides an easy reference for the actions available.\r\nThese strings are exported as an object literal which can then be imported\r\ninto your reducers and action creators instead of hard-coding them.\r\nAlthough maintaining a separate file containing just your action\r\ntypes is optional, it is highly recommended.\r\n*/\r\n\r\n// ACTION TYPES\r\nexport const SPEC_DETAIL_REQUEST = 'bdxlive/spec_detail/info_request';\r\nexport const SPEC_DETAIL_SUCCESS = 'bdxlive/spec_detail/info_success';\r\nexport const SPEC_DETAIL_FAIL = 'bdxlive/spec_detail/info_fail';\r\n\r\nexport const SPEC_DETAIL_SAVE_REQUEST = 'bdxlive/spec_detail/save_request';\r\nexport const SPEC_DETAIL_SAVE_SUCCESS = 'bdxlive/spec_detail/save_success';\r\nexport const SPEC_DETAIL_SAVE_FAIL = 'bdxlive/spec_detail/save_fail';\r\n\r\n/**\r\n * Generic Image Request\r\n */\r\nexport const SPEC_IMAGES_QUERY_REQUEST = 'bdxlive/spec_detail/images/images_query_request';\r\nexport const SPEC_IMAGES_QUERY_SUCCESS = 'bdxlive/spec_detail/images/images_query_success';\r\nexport const SPEC_IMAGES_QUERY_FAIL = 'bdxlive/spec_detail/images/images_query_fail';\r\n\r\n/**\r\n * Generic Video Request\r\n */\r\nexport const SPEC_VIDEOS_QUERY_REQUEST = 'bdxlive/spec_detail/videos/videos_query_request';\r\nexport const SPEC_VIDEOS_QUERY_SUCCESS = 'bdxlive/spec_detail/videos/videos_query_success';\r\nexport const SPEC_VIDEOS_QUERY_FAIL = 'bdxlive/spec_detail/videos/videos_query_fail';\r\n\r\n/**\r\n * Generic Interactive Media Request\r\n */\r\nexport const SPEC_INTERACTIVE_MEDIA_QUERY_REQUEST = 'bdxlive/spec_detail/interactive_media/interactive_media_query_request';\r\nexport const SPEC_INTERACTIVE_MEDIA_QUERY_SUCCESS = 'bdxlive/spec_detail/interactive_media/interactive_media_query_success';\r\nexport const SPEC_INTERACTIVE_MEDIA_QUERY_FAIL = 'bdxlive/spec_detail/interactive_media/interactive_media_query_fail';\r\n","/**\r\n This is where you define your action creators. All action creators must be functions\r\n that return an object with at least the type property. We do not define any async\r\n logic in this file.\r\n*/\r\nimport { QueryRequestAction, QuerySuccessAction, QueryFailAction } from '@/redux/models/actions';\r\nimport { SPEC_DETAIL_REQUEST, SPEC_DETAIL_SUCCESS, SPEC_DETAIL_FAIL, SPEC_DETAIL_SAVE_REQUEST, SPEC_DETAIL_SAVE_SUCCESS, SPEC_DETAIL_SAVE_FAIL, SPEC_IMAGES_QUERY_FAIL, SPEC_IMAGES_QUERY_SUCCESS, SPEC_IMAGES_QUERY_REQUEST, SPEC_VIDEOS_QUERY_REQUEST, SPEC_VIDEOS_QUERY_SUCCESS, SPEC_VIDEOS_QUERY_FAIL, SPEC_INTERACTIVE_MEDIA_QUERY_REQUEST, SPEC_INTERACTIVE_MEDIA_QUERY_SUCCESS, SPEC_INTERACTIVE_MEDIA_QUERY_FAIL } from './types';\r\nimport { Spec } from '@/models/Spec';\r\nimport { modelRequestSchema, modelMutateSchema } from '../../../../app.entities';\r\nimport { insertSpecMutation, updateSpecMutation, SpecImagesQuery, SpecVideosQuery, SpecInteractiveMediaQuery } from './api';\r\n\r\nexport const specDetailRequest = (specId) => ({ type: SPEC_DETAIL_REQUEST, data: { specId, entityId: specId }, meta: { model: Spec() } });\r\n\r\nexport const specDetailSuccess = (specs, specId) => ({ type: SPEC_DETAIL_SUCCESS, data: { entityId: specId, entities: specs }, meta: { model: Spec(), schema: modelRequestSchema } });\r\n\r\nexport const specDetailFail = (error, specId) => ({ type: SPEC_DETAIL_FAIL, error: true, data: { entityId: specId, appMessage: 'Error loading Spec detail information', errorMessage: error.message }, meta: { model: Spec() } });\r\n\r\n/**\r\n * Generic Specification Mutations Actions\r\n */\r\nexport const specSaveRequest = (specId, formData, isNew) => ({ type: SPEC_DETAIL_SAVE_REQUEST, data: { entityId: specId }, mutation: isNew ? insertSpecMutation : updateSpecMutation, meta: { formData, model: Spec(), schema: modelMutateSchema } });\r\n\r\nexport const specSaveSuccess = (entities, meta, specId) => ({ type: SPEC_DETAIL_SAVE_SUCCESS, data: { entityId: specId, entities: { specs: [entities.updateSpec || entities.insertSpec] } }, meta: { model: Spec(), schema: modelRequestSchema } });\r\n\r\nexport const specSaveFail = (error, specId) => ({ type: SPEC_DETAIL_SAVE_FAIL, error: true, data: { entityId: specId, appMessage: convertSpecErrorMessage(error), errorMessage: error.message }, meta: { model: Spec() } });\r\n\r\n/**\r\n * Based on the posible errors returned by the community mutation, choose the proper error message for the UI\r\n */\r\nconst convertSpecErrorMessage = (error) => {\r\n if (error.message.includes('geo-coordinates are not within the city')) return 'Your geocoordinates for this spec are not within the city associated with the ZIP you entered, please check them again';\r\n if (error.message.includes('spec number already exists')) return 'A spec with the same number already exists in this builder subdivision. Please use a different spec number.';\r\n if (error.message.includes('Invalid Brochure URL')) return 'Error. The Website specified for the brochure is not valid or is not accessible at this moment.';\r\n return 'Error saving the spec information, please try again';\r\n};\r\n\r\n/**\r\n * Spec Image Request\r\n */\r\n/**\r\n * Model Request Action Creator Images\r\n * @param {*} requestArguments api request\r\n */\r\nexport const specImagesQueryRequest = QueryRequestAction(SPEC_IMAGES_QUERY_REQUEST, SpecImagesQuery);\r\n/**\r\n * Model success action creator for Images\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const specImagesQuerySuccess = QuerySuccessAction(SPEC_IMAGES_QUERY_SUCCESS);\r\n\r\n/**\r\n * Model request fail action creator for Images\r\n * @param {*} error cause\r\n */\r\nexport const specImagesQueryFail = QueryFailAction(SPEC_IMAGES_QUERY_FAIL);\r\n\r\n/**\r\n * Spec video Request\r\n */\r\n/**\r\n * Model Request Action Creator Videos\r\n * @param {*} requestArguments api request\r\n */\r\nexport const specVideosQueryRequest = QueryRequestAction(SPEC_VIDEOS_QUERY_REQUEST, SpecVideosQuery);\r\n/**\r\n * Model success action creator for Videos\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const specVideosQuerySuccess = QuerySuccessAction(SPEC_VIDEOS_QUERY_SUCCESS);\r\n\r\n/**\r\n * Model request fail action creator for Videos\r\n * @param {*} error cause\r\n */\r\nexport const specVideosQueryFail = QueryFailAction(SPEC_VIDEOS_QUERY_FAIL);\r\n\r\n/**\r\n * Spec Interactive Media Request\r\n */\r\n/**\r\n * Model Request Action Creator Interactive Media\r\n * @param {*} requestArguments api request\r\n */\r\nexport const specInteractiveMediaQueryRequest = QueryRequestAction(SPEC_INTERACTIVE_MEDIA_QUERY_REQUEST, SpecInteractiveMediaQuery);\r\n/**\r\n * Model success action creator for Interactive Media\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const specInteractiveMediaQuerySuccess = QuerySuccessAction(SPEC_INTERACTIVE_MEDIA_QUERY_SUCCESS);\r\n\r\n/**\r\n * Model request fail action creator for Interactive Media\r\n * @param {*} error cause\r\n */\r\nexport const specInteractiveMediaQueryFail = QueryFailAction(SPEC_INTERACTIVE_MEDIA_QUERY_FAIL);\r\n","// Plan Detail Sagas\r\n// These are Ajax Calls (side effects handled with Saga Middleware) to the Api\r\nimport { takeLatest, call, put } from 'redux-saga/effects';\r\nimport { SPEC_DETAIL_REQUEST, SPEC_DETAIL_SAVE_REQUEST, SPEC_IMAGES_QUERY_REQUEST, SPEC_VIDEOS_QUERY_REQUEST, SPEC_INTERACTIVE_MEDIA_QUERY_REQUEST } from './types';\r\nimport { requestSpecApi } from './api';\r\nimport { requestCommunityDisplayOnApi } from '../../community-detail/@redux/api';\r\nimport { communityDetailSuccess } from '../../community-detail/@redux/actions';\r\nimport { specDetailSuccess, specDetailFail, specSaveSuccess, specSaveFail, specImagesQuerySuccess, specImagesQueryFail, specVideosQuerySuccess, specVideosQueryFail, specInteractiveMediaQuerySuccess, specInteractiveMediaQueryFail } from './actions';\r\nimport { formsChannel } from '../../../../@redux/forms/sagas';\r\nimport { getModelsChannel, getModels } from '../../../../@redux/models/sagas';\r\nimport { searchZipRequest } from '../../../../@redux/location/actions';\r\nimport { InvalidEntityError } from '../../../../utils/error-handling/types';\r\nimport { empty } from '../../../../utils/bdx-lodash-lite';\r\n\r\n/*\r\n Handles the retrive of Plan Details information for plan Details page.\r\n*/\r\nfunction* requestSpec({ data: { specId } }) {\r\n try {\r\n const response = yield call(requestSpecApi, specId);\r\n\r\n if (response.data.Result && response.data.Result.specs && response.data.Result.specs.length > 0) {\r\n // Redefine some defaults from the api, so we can assign defauls in the ui with destructuring (we should ask Api team to return undefined as default if not set in the db)\r\n const { community: { id: communityId, ownerPartnerId: partnerId } = {}, zip: { postalCode } = {}, price, guidedTour, lotSqFt, previousPrice, yearBuilt, moveInDate, distributionOnlyFields: { fireplaces } = {} } = response.data.Result.specs[0];\r\n\r\n // we need to fix this at store side bc Api returns some numeric items as null\r\n if (lotSqFt === null) response.data.Result.specs[0].lotSqFt = 0;\r\n if (previousPrice === null) response.data.Result.specs[0].previousPrice = 0;\r\n if (price % 1 !== 0) response.data.Result.specs[0].price = parseInt(price);\r\n if (yearBuilt === null) response.data.Result.specs[0].yearBuilt = '';\r\n if (!moveInDate) response.data.Result.specs[0].moveInDate = '';\r\n if (fireplaces === null) response.data.Result.specs[0].distributionOnlyFields.fireplaces = 0;\r\n if (guidedTour === null) response.data.Result.specs[0].guidedTour = { builderProvided: true };\r\n\r\n if (!empty(postalCode)) yield put(searchZipRequest({ zips: [postalCode.trim()], partnerId }));\r\n\r\n if (communityId) {\r\n const responseDisplay = yield call(requestCommunityDisplayOnApi, communityId);\r\n\r\n const { displayChannelSelection } = responseDisplay?.data?.Result || {};\r\n\r\n yield put(communityDetailSuccess({ communities: [{ ...{ id: parseInt(communityId) }, channelDisplay: { ...displayChannelSelection } }] }, communityId));\r\n }\r\n\r\n yield put(specDetailSuccess(response.data.Result, specId));\r\n } else throw new InvalidEntityError('Invalid Spec, this spec id is not valid anymore');\r\n } catch (error) {\r\n // Show error message in case any error in the authentication process\r\n yield put(specDetailFail(error, specId));\r\n }\r\n}\r\n\r\n// Saga Watcher for Comm Detail Module\r\nexport const specDetailSagas = [\r\n takeLatest(SPEC_DETAIL_REQUEST, requestSpec),\r\n formsChannel(SPEC_DETAIL_SAVE_REQUEST, specSaveSuccess, specSaveFail),\r\n\r\n /**\r\n * This generator listens to IMAGES_QUERY_SUCCESS\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(SPEC_IMAGES_QUERY_REQUEST, getModels, specImagesQuerySuccess, specImagesQueryFail),\r\n\r\n /**\r\n * This generator listens to IMAGES_QUERY_SUCCESS\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(SPEC_VIDEOS_QUERY_REQUEST, specVideosQuerySuccess, specVideosQueryFail),\r\n getModelsChannel(SPEC_INTERACTIVE_MEDIA_QUERY_REQUEST, specInteractiveMediaQuerySuccess, specInteractiveMediaQueryFail),\r\n];\r\n","/**\r\n * Generic Image Request\r\n */\r\nexport const IMAGES_QUERY_REQUEST = 'bdxlive/images/images_query_request';\r\nexport const IMAGES_QUERY_SUCCESS = 'bdxlive/images/images_query_success';\r\nexport const IMAGES_QUERY_FAIL = 'bdxlive/images/images_query_fail';\r\n\r\n/**\r\n * Generic Image Mutation\r\n */\r\nexport const IMAGES_MUTATE_REQUEST = 'bdxlive/images/images_mutate_request';\r\nexport const IMAGES_MUTATE_SUCCESS = 'bdxlive/images/images_mutate_success';\r\nexport const IMAGES_MUTATE_FAIL = 'bdxlive/images/images_mutate_fail';\r\n\r\n/**\r\n * Generic Image Insert\r\n */\r\nexport const IMAGES_INSERT_REQUEST = 'bdxlive/images/images_insert_request';\r\nexport const IMAGES_INSERT_SUCCESS = 'bdxlive/images/images_insert_success';\r\nexport const IMAGES_INSERT_FAIL = 'bdxlive/images/images_insert_fail';\r\n\r\n/**\r\n * Generic Image Copy\r\n */\r\nexport const IMAGES_COPY_REQUEST = 'bdxlive/images/images_copy_request';\r\nexport const IMAGES_COPY_SUCCESS = 'bdxlive/images/images_copy_success';\r\nexport const IMAGES_COPY_FAIL = 'bdxlive/images/images_copy_fail';\r\n","import { ImagesQuery, ImagesUpdateMutation, ImagesUpdateBulkMutation, ImagesInsertBulkMutation } from './api';\r\nimport { IMAGES_QUERY_REQUEST, IMAGES_QUERY_SUCCESS, IMAGES_QUERY_FAIL, IMAGES_MUTATE_REQUEST, IMAGES_MUTATE_SUCCESS, IMAGES_MUTATE_FAIL, IMAGES_INSERT_REQUEST, IMAGES_INSERT_SUCCESS, IMAGES_INSERT_FAIL, IMAGES_COPY_REQUEST, IMAGES_COPY_SUCCESS, IMAGES_COPY_FAIL } from './types';\r\nimport { modelMutateSchema } from '../../app.entities';\r\nimport { QuerySuccessAction, QueryFailAction, QueryRequestAction } from '../models/actions';\r\n\r\n/**\r\n * Generic Image Request\r\n */\r\n/**\r\n * Model Request Action Creator Images\r\n * @param {*} requestArguments api request\r\n */\r\nexport const imagesQueryRequest = QueryRequestAction(IMAGES_QUERY_REQUEST, ImagesQuery);\r\n/**\r\n * Model success action creator for Images\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const imagesQuerySuccess = QuerySuccessAction(IMAGES_QUERY_SUCCESS);\r\n\r\n/**\r\n * Model request fail action creator for Images\r\n * @param {*} error cause\r\n */\r\nexport const imagesQueryFail = QueryFailAction(IMAGES_QUERY_FAIL);\r\n\r\n/**\r\n * Generic Image Mutation\r\n */\r\n/**\r\n * Model Mutation Action Creator Images\r\n * @param {*} requestArguments api request\r\n */\r\nexport const imagesMutationRequest = (entityId, model, changes, items) => ({ type: IMAGES_MUTATE_REQUEST, mutation: changes ? ImagesUpdateMutation(changes) : (items && ImagesUpdateBulkMutation(items)) || ImagesUpdateMutation, data: { entityId }, meta: { model, schema: modelMutateSchema, loadingByEntity: false } });\r\n/**\r\n * Model Mutation success action creator for Images\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const imagesMutationSuccess = (entities, meta) => ({ type: IMAGES_MUTATE_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model Mutation fail action creator for Images\r\n * @param {*} error cause\r\n */\r\nexport const imagesMutationFail = (error) => ({ type: IMAGES_MUTATE_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Generic Image Mutation\r\n */\r\n/**\r\n * Model Mutation Action Creator Images\r\n * @param {*} requestArguments api request\r\n */\r\nexport const imagesInsertRequest = (items) => ({ type: IMAGES_INSERT_REQUEST, mutation: ImagesInsertBulkMutation(items), meta: { schema: modelMutateSchema, loadingByEntity: false } });\r\n/**\r\n * Model Mutation success action creator for Images\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const imagesInsertSuccess = (entities, meta) => ({ type: IMAGES_INSERT_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model Mutation fail action creator for Images\r\n * @param {*} error cause\r\n */\r\nexport const imagesInsertFail = (error) => ({ type: IMAGES_INSERT_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Generic Image Mutation\r\n */\r\n/**\r\n * Model Mutation Action Creator Images\r\n * @param {*} requestArguments api request\r\n */\r\nexport const imagesCopyRequest = (data = {}, query) => ({ type: IMAGES_COPY_REQUEST, query, data, meta: { schema: modelMutateSchema, loadingByEntity: false } });\r\n/**\r\n * Model Mutation success action creator for Images\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const imagesCopySuccess = (entities, meta) => ({ type: IMAGES_COPY_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model Mutation fail action creator for Images\r\n * @param {*} error cause\r\n */\r\nexport const imagesCopyFail = (error) => ({ type: IMAGES_COPY_FAIL, error: true, data: { appMessage: convertImageErrorMessage(error), errorMessage: error.message } });\r\n\r\n/**\r\n * Based on the posible errors returned by the video mutation, choose the proper error message for the UI\r\n */\r\nconst convertImageErrorMessage = (error) => {\r\n if (error.message.includes('Not Found')) return 'The image you are trying to copy is not fisically found in the server, so can not be copied, try with another one.';\r\n return 'Error cloning the existing image for the Brand, please try again';\r\n};\r\n","import { call, put, actionChannel, take } from 'redux-saga/effects';\r\nimport { IMAGES_QUERY_REQUEST, IMAGES_MUTATE_REQUEST, IMAGES_INSERT_REQUEST, IMAGES_COPY_REQUEST } from './types';\r\nimport { imagesQuerySuccess, imagesQueryFail, imagesMutationSuccess, imagesMutationFail, imagesInsertSuccess, imagesInsertFail, imagesCopySuccess, imagesCopyFail } from './actions';\r\nimport { getModelsChannel } from '../models/sagas';\r\nimport { formsChannel } from '../forms/sagas';\r\nimport { requestModel } from '../models/api';\r\nimport { commitEntity } from '../forms/api';\r\nimport { ImagesCopyBulkMutation } from './api';\r\nimport { empty, objectPath } from '../../utils/bdx-lodash-lite';\r\nimport { imageType } from '../../constants/bdx-lookups';\r\n\r\n/**\r\n * This Saga is incharged of performing GraphQLQuery calls to the API\r\n * and handling the response\r\n *\r\n * @param { function } success success action to be executed\r\n * @param { function } fail fail action to be executed\r\n * @param { GraphQlQuery } action.query query to be executed\r\n * @param { Object } action.meta action additional data containing the schema\r\n */\r\nexport function* cloneImages({ query, data: { items = [], typeCodes, path = 'plans.0.images', overrides = {} }, meta }) {\r\n try {\r\n /**\r\n * Get the images\r\n */\r\n let images = items;\r\n if (empty(items) && !empty(typeCodes)) {\r\n const { data: { Result = {} } = {} } = yield call(requestModel, query);\r\n images = objectPath(Result).get(path);\r\n images.forEach((i) => {\r\n if (i.imageTypeCode.toLowerCase() !== imageType.BAA.toLowerCase() && i.imageTypeCode.toLowerCase() !== imageType.BRD.toLowerCase() && i.brandId) {\r\n i.brandId = null; // image records that arent brand images, shouldnt have brand id, bc they will be treated as so when try to insert\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Copy the images\r\n */\r\n images = images.map((image) => ({ ...image, ...overrides }));\r\n const copied = yield call(commitEntity, ImagesCopyBulkMutation(images));\r\n\r\n yield put(imagesCopySuccess(copied.data.Result, meta));\r\n } catch (error) {\r\n // On fail dispatch the respective action\r\n yield put(imagesCopyFail(error));\r\n }\r\n}\r\n\r\nexport function* cloneImagesChannel(actionTake) {\r\n // Listen to MODEL_REQUEST_CHANNEL actions\r\n const channel = yield actionChannel(actionTake);\r\n while (true) {\r\n // On next channel capture take the action\r\n const action = yield take(channel);\r\n // Call the saga with the respective handlers and action\r\n yield cloneImages(action);\r\n }\r\n}\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const imageSagas = [\r\n /**\r\n * This generator listens to IMAGES_QUERY_SUCCESS\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(IMAGES_QUERY_REQUEST, imagesQuerySuccess, imagesQueryFail),\r\n /**\r\n * This generator listens to IMAGES_MUTATE_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n formsChannel(IMAGES_MUTATE_REQUEST, imagesMutationSuccess, imagesMutationFail),\r\n /**\r\n * This generator listens to IMAGES_MUTATE_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n formsChannel(IMAGES_INSERT_REQUEST, imagesInsertSuccess, imagesInsertFail),\r\n /**\r\n * This generator listens to IMAGES_COPY_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n cloneImagesChannel(IMAGES_COPY_REQUEST),\r\n];\r\n","/**\r\n * Videos Request\r\n */\r\nexport const VIDEOS_QUERY_REQUEST = 'bdxlive/videos/videos_request';\r\nexport const VIDEOS_QUERY_SUCCESS = 'bdxlive/videos/videos_success';\r\nexport const VIDEOS_QUERY_FAIL = 'bdxlive/videos/videos_fail';\r\n\r\n/**\r\n * Videos Mutation\r\n */\r\nexport const VIDEOS_MUTATE_REQUEST = 'bdxlive/videos/videos_mutate_request';\r\nexport const VIDEOS_MUTATE_SUCCESS = 'bdxlive/videos/videos_mutate_success';\r\nexport const VIDEOS_MUTATE_FAIL = 'bdxlive/videos/videos_mutate_fail';\r\n\r\n/**\r\n * Generic Image Insert\r\n */\r\nexport const VIDEOS_INSERT_REQUEST = 'bdxlive/videos/videos_insert_request';\r\nexport const VIDEOS_INSERT_SUCCESS = 'bdxlive/videos/videos_insert_success';\r\nexport const VIDEOS_INSERT_FAIL = 'bdxlive/videos/videos_insert_fail';\r\n\r\n/**\r\n * Generic Image Copy\r\n */\r\nexport const VIDEOS_COPY_REQUEST = 'bdxlive/videos/videos_copy_request';\r\nexport const VIDEOS_COPY_SUCCESS = 'bdxlive/videos/videos_copy_success';\r\nexport const VIDEOS_COPY_FAIL = 'bdxlive/videos/videos_copy_fail';\r\n","import { VideosQuery, VideosUpdateMutation, VideosUpdateBulkMutation, VideosInsertBulkMutation } from './api';\r\nimport { VIDEOS_QUERY_REQUEST, VIDEOS_QUERY_SUCCESS, VIDEOS_QUERY_FAIL, VIDEOS_MUTATE_REQUEST, VIDEOS_MUTATE_SUCCESS, VIDEOS_MUTATE_FAIL, VIDEOS_COPY_REQUEST, VIDEOS_COPY_SUCCESS, VIDEOS_COPY_FAIL, VIDEOS_INSERT_REQUEST, VIDEOS_INSERT_SUCCESS, VIDEOS_INSERT_FAIL } from './types';\r\nimport { modelMutateSchema } from '../../app.entities';\r\nimport { QuerySuccessAction, QueryFailAction, QueryRequestAction } from '../models/actions';\r\n\r\n/**\r\n * Model Request Action Creator Videos\r\n * @param {*} requestArguments api request\r\n */\r\nexport const videosQueryRequest = QueryRequestAction(VIDEOS_QUERY_REQUEST, VideosQuery);\r\n/**\r\n * Model success action creator for Videos\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const videosQuerySuccess = QuerySuccessAction(VIDEOS_QUERY_SUCCESS);\r\n\r\n/**\r\n * Model request fail action creator for Videos\r\n * @param {*} error cause\r\n */\r\nexport const videosQueryFail = QueryFailAction(VIDEOS_QUERY_FAIL);\r\n\r\n/**\r\n * Generic Image Mutation\r\n */\r\n/**\r\n * Model Mutation Action Creator videos\r\n * @param {*} requestArguments api request\r\n */\r\nexport const videosMutationRequest = (entityId, model, changes, items) => ({ type: VIDEOS_MUTATE_REQUEST, mutation: changes ? VideosUpdateMutation(changes) : (items && VideosUpdateBulkMutation(items)) || VideosUpdateMutation, data: { entityId }, meta: { model, schema: modelMutateSchema, loadingByEntity: false } });\r\n/**\r\n * Model Mutation success action creator for videos\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const videosMutationSuccess = (entities, meta) => ({ type: VIDEOS_MUTATE_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model Mutation fail action creator for videos\r\n * @param {*} error cause\r\n */\r\nexport const videosMutationFail = (error) => ({ type: VIDEOS_MUTATE_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Generic Image Mutation\r\n */\r\n/**\r\n * Model Mutation Action Creator Videos\r\n * @param {*} requestArguments api request\r\n */\r\nexport const videosInsertRequest = (items) => ({ type: VIDEOS_INSERT_REQUEST, mutation: VideosInsertBulkMutation(items), meta: { schema: modelMutateSchema, loadingByEntity: false } });\r\n/**\r\n * Model Mutation success action creator for Videos\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const videosInsertSuccess = (entities, meta) => ({ type: VIDEOS_INSERT_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model Mutation fail action creator for Videos\r\n * @param {*} error cause\r\n */\r\nexport const videosInsertFail = (error) => ({ type: VIDEOS_INSERT_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Generic Video Mutation\r\n */\r\n/**\r\n * Model Mutation Action Creator Videos\r\n * @param {*} requestArguments api request\r\n */\r\nexport const videosCopyRequest = (data = {}) => ({ type: VIDEOS_COPY_REQUEST, data, meta: { schema: modelMutateSchema, loadingByEntity: false } });\r\n/**\r\n * Model Mutation success action creator for Videos\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const videosCopySuccess = (entities, meta) => ({ type: VIDEOS_COPY_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model Mutation fail action creator for Videos\r\n * @param {*} error cause\r\n */\r\nexport const videosCopyFail = (error) => ({ type: VIDEOS_COPY_FAIL, error: true, data: { appMessage: convertVideoErrorMessage(error), errorMessage: error.message } });\r\n\r\n/**\r\n * Based on the posible errors returned by the video mutation, choose the proper error message for the UI\r\n */\r\nconst convertVideoErrorMessage = (error) => {\r\n if (error.message.includes(' already assigned')) return 'Video already assigned to the brand, choose another video.';\r\n return 'Error cloning the existing video for the Brand, please try again';\r\n};\r\n","import { call, put, actionChannel, take } from 'redux-saga/effects';\r\nimport { VIDEOS_QUERY_REQUEST, VIDEOS_MUTATE_REQUEST, VIDEOS_COPY_REQUEST, VIDEOS_INSERT_REQUEST } from './types';\r\nimport { videosQuerySuccess, videosQueryFail, videosMutationSuccess, videosMutationFail, videosCopySuccess, videosCopyFail, videosInsertSuccess, videosInsertFail } from './actions';\r\nimport { getModelsChannel } from '../models/sagas';\r\nimport { formsChannel } from '../forms/sagas';\r\nimport { VideosCopyBulkMutation } from './api';\r\nimport { commitEntity } from '../forms/api';\r\n\r\n/**\r\n * This Saga is incharged of performing GraphQLQuery calls to the API\r\n * and handling the response\r\n *\r\n * @param { function } success success action to be executed\r\n * @param { function } fail fail action to be executed\r\n * @param { GraphQlQuery } action.query query to be executed\r\n * @param { Object } action.meta action additional data containing the schema\r\n */\r\nexport function* cloneVideos({ data: { items = [], overrides = {} }, meta }) {\r\n try {\r\n /**\r\n * Copy the images\r\n */\r\n items = items.map((item) => ({ ...item, ...overrides }));\r\n const copied = yield call(commitEntity, VideosCopyBulkMutation(items));\r\n\r\n yield put(videosCopySuccess(copied.data.Result, meta));\r\n } catch (error) {\r\n // On fail dispatch the respective action\r\n yield put(videosCopyFail(error));\r\n }\r\n}\r\n\r\nexport function* cloneVideosChannel(actionTake) {\r\n // Listen to MODEL_REQUEST_CHANNEL actions\r\n const channel = yield actionChannel(actionTake);\r\n while (true) {\r\n // On next channel capture take the action\r\n const action = yield take(channel);\r\n // Call the saga with the respective handlers and action\r\n yield cloneVideos(action);\r\n }\r\n}\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const videoSagas = [\r\n /**\r\n * This generator listens to VIDEOS_QUERY_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(VIDEOS_QUERY_REQUEST, videosQuerySuccess, videosQueryFail),\r\n /**\r\n * This generator listens to IMAGES_MUTATE_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n formsChannel(VIDEOS_MUTATE_REQUEST, videosMutationSuccess, videosMutationFail),\r\n /**\r\n * This generator listens to IMAGES_MUTATE_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n formsChannel(VIDEOS_INSERT_REQUEST, videosInsertSuccess, videosInsertFail),\r\n /**\r\n * This generator listens to IMAGES_COPY_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n cloneVideosChannel(VIDEOS_COPY_REQUEST),\r\n];\r\n","import apiClient from '../../utils/api/api';\r\n\r\n/**\r\n * Search for a zip location query, returning the market and city information related to that postal code\r\n * @param {Number} zip zip code number to search\r\n * @param {Number} partnerId partner number\r\n */\r\nexport const API_GET_ZIP_INFO_QUERY = ({ zips, partnerId }) => `query { ${zips.map(\r\n (zip) =>\r\n `zip${zip.replace(' ', '_') /* Canadian postal codes support spaces */}: zips(zipCode: \"${zip}\", partnerId: ${partnerId}) {\r\n cityState\r\n geoLocationId\r\n marketId\r\n marketName\r\n preferredCity\r\n postalCode\r\n city\r\n }`\r\n)}\r\n}`;\r\n\r\nexport const requestSearchZipInformation = (requestArguments) => apiClient.post(null, { query: API_GET_ZIP_INFO_QUERY(requestArguments) });\r\n","import { call, put, takeLatest } from 'redux-saga/effects';\r\nimport { LOCATION_ZIP_REQUEST } from './types';\r\nimport { searchZipSuccess, searchZipFail } from './actions';\r\nimport { requestSearchZipInformation } from './api';\r\n\r\nimport { basicRedesignPartners } from '@/constants/bdx-lookups';\r\n\r\n/*\r\n Handles the retrive of Community Details information for community Details page.\r\n*/\r\nfunction* requestZipInformation({ data: { zips, partnerId } }) {\r\n try {\r\n partnerId = partnerId || basicRedesignPartners.NewHomeSource.id;\r\n const response = yield call(requestSearchZipInformation, { zips, partnerId });\r\n\r\n const mergedZips = Object.keys(response.data.Result)\r\n .map((key) => response.data.Result[key])\r\n .flat();\r\n\r\n yield put(searchZipSuccess(partnerId, mergedZips));\r\n } catch (error) {\r\n // When error or empty assign null for that zip location\r\n yield put(searchZipFail(error));\r\n }\r\n}\r\n\r\n// Saga Watcher for Location Queries\r\nexport const locationSagas = [takeLatest(LOCATION_ZIP_REQUEST, requestZipInformation)];\r\n","import { capitalize } from '../../../../utils/bdx-lodash-lite/word';\r\nimport { empty, isNullish, JSONText } from '../../../../utils/bdx-lodash-lite';\r\nimport { dataLocksFields } from '@/constants/bdx-lookups';\r\nimport { qif } from '@/utils/api/graph-helpers';\r\nimport { config } from '@/redux/config/selectors';\r\n\r\nconst top = (key) => qif(!!parseInt(config(key)), () => `top: ${config(key)}`);\r\n\r\n/**\r\n * Search.\r\n */\r\nexport const PromotionsSearch = (args) => SearchPromotions(args);\r\nexport const SearchPromotions = ({ corporateId, divisionId, excludeCommunityId, excludeDivisionals, communityId, type: filters, hasPDF, status, search, sorts, pageNumber, pageSize }) => `query {\r\n promotions(\r\n ${communityId ? `communityIds: { in: ${communityId} }` : ''}\r\n ${corporateId && !divisionId ? `,corporationIds: ${corporateId}` : `builderIds: ${divisionId ? `[${Array.isArray(divisionId) ? divisionId.join() : divisionId}]` : `0`}`}\r\n ${excludeCommunityId ? `,communityIds: { nin: ${excludeCommunityId} }` : ''}\r\n ${!empty(status) ? `,status: [${status}]` : ',status: [Active, Inactive]'}\r\n ${!empty(filters) ? `,types: [${filters}]` : ''}\r\n ${hasPDF ? `,hasFlyer: true` : ''}\r\n ${excludeDivisionals ? `,excludeDivisionals: true` : ''}\r\n ${search ? `,search: ${JSONText(search)}` : ''}\r\n ${!empty(sorts) ? `,sortBy: [${Object.entries(sorts).map(([path, direction]) => `{field: ${capitalize(path)}, order: ${direction === -1 ? 'Desc' : 'Asc'}}`)}]` : ''}\r\n ,page: ${pageNumber - 1 || 0}\r\n ${pageSize ? `,top: ${pageSize}` : ''}) {\r\n results {\r\n ${PromoFragment}\r\n homeShopperIncentive\r\n }\r\n count {\r\n type\r\n count\r\n }\r\n }\r\n}`;\r\n\r\n/**\r\n * Update.\r\n */\r\nexport const PromotionsUpdate = (promotion, formData) => Update(promotion, formData);\r\nconst Update = ({ id, isDivisional, description, type, startDate, endDate, title, websiteUrl, communities, deleteAssociatedFile, isBuilderDataFeed, homeShopperIncentive }, formData) => {\r\n return `\r\n mutation${formData ? `($file: Upload)` : ``} {\r\n updatePromotion(\r\n ${formData ? `file: $file,` : ``}\r\n id: ${id}\r\n ${!empty(type) ? `,type: ${type}` : ''}\r\n ${!isNullish(homeShopperIncentive) ? `,homeShopperIncentive: ${homeShopperIncentive}` : ''}\r\n ${!empty(description) ? `,description: ${JSONText(description)}` : ''}\r\n ${!empty(startDate) ? `,startDate: \"${setupDateFormat(startDate)}\"` : ''}\r\n ${!empty(endDate) ? `,endDate: \"${setupDateFormat(endDate)}\"` : ''}\r\n ${!empty(title) ? `,title: ${JSONText(title)}` : ''}\r\n ,websiteUrl: \"${websiteUrl || ''}\"\r\n ${handleCommsAssociation(communities, isDivisional)}\r\n ${deleteAssociatedFile && !formData ? ',deleteAssociatedFile: true' : ''}\r\n ) \r\n {\r\n homeShopperIncentive\r\n ${PromoFragment}\r\n }\r\n }\r\n ${communityPromoLockHandler(type, communities, isDivisional, isBuilderDataFeed)}\r\n `;\r\n};\r\n\r\n/**\r\n * Bulk Update.\r\n */\r\nexport const PromotionsBulkUpdate = (promotions) => BulkUpdate(promotions);\r\nconst BulkUpdate = (promos = []) => {\r\n return `\r\n mutation {\r\n ${promos.map(\r\n ({ id, communities }) =>\r\n `\r\n promo${id}: updatePromotion(\r\n id: ${id}\r\n ,communityIds: [${!empty(communities) ? communities.map((comm) => comm) : ''}]\r\n ) \r\n {\r\n homeShopperIncentive\r\n ${PromoFragment}\r\n }\r\n `\r\n )}\r\n }\r\n `;\r\n};\r\n\r\n/**\r\n * Insert.\r\n */\r\nexport const PromotionsInsert = (promotion, formData) => Insert(promotion, formData);\r\nconst Insert = ({ isDivisional, builder, type, title, description, startDate, endDate, websiteUrl, communities, isBuilderDataFeed, homeShopperIncentive }, formData) => {\r\n return `\r\n mutation${formData ? `($file: Upload)` : ``} {\r\n insertPromotion(\r\n ${formData ? `file: $file,` : ``}\r\n builderId: ${builder}\r\n ,type: ${type}\r\n ${!isNullish(homeShopperIncentive) ? `,homeShopperIncentive: ${homeShopperIncentive}` : ''}\r\n ${!empty(description) ? `,description: ${JSONText(description)}` : ''}\r\n ${!empty(startDate) ? `,startDate: \"${setupDateFormat(startDate)}\"` : ''}\r\n ${!empty(endDate) ? `,endDate: \"${setupDateFormat(endDate)}\"` : ''}\r\n ${!empty(title) ? `,title: ${JSONText(title)}` : ''}\r\n ${!empty(websiteUrl) ? `,websiteUrl: \"${websiteUrl}\"` : ''}\r\n ${handleCommsAssociation(communities, isDivisional)}\r\n ) \r\n {\r\n homeShopperIncentive\r\n ${PromoFragment}\r\n }\r\n ${communityPromoLockHandler(type, communities, isDivisional, isBuilderDataFeed)}\r\n }\r\n `;\r\n};\r\n\r\n/**\r\n * Delete.\r\n */\r\nexport const PromotionsDelete = (ids) => Delete(ids);\r\nconst Delete = (ids) => `mutation {\r\n deletePromotions(ids: [${ids.map((id) => id)}]) {\r\n id\r\n deleted\r\n }\r\n}`;\r\n\r\n/**\r\n * File Upload.\r\n */\r\nexport const PromotionsFileUpload = (promotion) => Upload(promotion);\r\nconst Upload = ({ id }) => {\r\n return `\r\n mutation($file: Upload) {\r\n updatePromotion(\r\n id: ${id},\r\n file: $file\r\n ) {\r\n homeShopperIncentive\r\n ${PromoFragment}\r\n }\r\n }\r\n `;\r\n};\r\n\r\nexport const AllDivisionCommunitiesQuery = (requestArguments) => AllDivisionCommunities(requestArguments);\r\nconst AllDivisionCommunities = ({ builderId, sortColumns, status, listingTypes }) => `{\r\n communities(\r\n ${top('CommsNavTop')}\r\n sortBy:${sortColumns}\r\n builderId:${builderId}\r\n status:[${status}]\r\n excludeCustom: true\r\n ${!empty(listingTypes) ? `listingTypes: [${listingTypes}]` : ''}\r\n ) {\r\n id\r\n name\r\n status\r\n listingType\r\n hasPromoDataFeedAgent\r\n hasPromoDataFeedConsumer\r\n hasPromoDataFeedWebArch\r\n dataLocks{\r\n agentPromos\r\n webArchPromos\r\n consumerPromos\r\n }\r\n activePromotions: promotions(status: Active) {\r\n results {\r\n id\r\n type\r\n isDivisional\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nconst handleCommsAssociation = (communities, isDivisional) => {\r\n if (isDivisional) {\r\n return ',isDivisional: true, communityIds: []';\r\n }\r\n return !empty(communities) ? `,communityIds: [${communities.map(({ id }) => id)}]` : '';\r\n};\r\n\r\nconst setupDateFormat = ({ day, month, year } = {}) => {\r\n return `${year}/${month}/${day}`;\r\n};\r\n\r\nconst communityPromoLockHandler = (type, communities, isDivisional, isBuilderDataFeed) => {\r\n return isBuilderDataFeed && !isDivisional && !empty(communities)\r\n ? `\r\n ${communities.map(\r\n ({ id: communityId }) => `\r\n ,mutation${communityId}: updateCommunity(id: ${communityId}, dataLocks: { ${getPromoLockType(type)}: true }) {\r\n id,\r\n dataLocks {\r\n agentPromos,\r\n consumerPromos,\r\n webArchPromos\r\n }\r\n }`\r\n )}`\r\n : '';\r\n};\r\n\r\nconst getPromoLockType = (type) => {\r\n switch (type) {\r\n case 'Consumer':\r\n return dataLocksFields.Community.ConsumerPromos;\r\n case 'WebArchitect':\r\n return dataLocksFields.Community.WebArchPromos;\r\n case 'Agent':\r\n return dataLocksFields.Community.AgentPromos;\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\nconst PromoFragment = `\r\n id\r\n isDivisional\r\n assignedToAllCommunities\r\n title\r\n description\r\n websiteUrl\r\n type\r\n startDate\r\n endDate\r\n flyer {\r\n filePath\r\n flyerImages {\r\n thumbnail\r\n }\r\n }\r\n builder {\r\n parentBuilderId\r\n builderId\r\n builderName\r\n orgTypeCode\r\n partner {\r\n partnerId\r\n partnerName\r\n } \r\n parentBuilder {\r\n builderId\r\n builderName\r\n }\r\n }\r\n communities {\r\n id\r\n name\r\n }\r\n`;\r\n","import { communityPromotionsInsertMutateRequest, communityPromotionsDeleteMutateRequest, communityPromotionsUpdateMutateRequest } from '@/modules/listings-detail/community-detail/@redux/marketing/actions';\r\nimport { GraphQLQuery } from '../utils/api/graph-helpers';\r\nimport { promotionSchema } from '../app.entities';\r\n\r\nimport { Model } from '../utils/models';\r\n\r\nexport const Promotion = () =>\r\n new Model({\r\n name: 'promotions',\r\n model: 'promotion',\r\n query: new GraphQLQuery([\r\n {\r\n operation: 'promotions',\r\n argument: {},\r\n },\r\n ]),\r\n describerFields: { id: 'id', src: 'thumbnailUrl', contentSrc: 'pdfUrl' },\r\n lookup: 'search',\r\n schema: promotionSchema,\r\n mutations: {\r\n insert: communityPromotionsInsertMutateRequest,\r\n update: communityPromotionsUpdateMutateRequest,\r\n delete: communityPromotionsDeleteMutateRequest,\r\n },\r\n template(id, context) {\r\n return {\r\n id,\r\n isDivisional: false,\r\n homeShopperIncentive: false,\r\n title: '',\r\n description: '',\r\n websiteUrl: '',\r\n type: '',\r\n startDate: '',\r\n endDate: '',\r\n flyer: '',\r\n file: '',\r\n builder: '',\r\n communities: [],\r\n ...context,\r\n };\r\n },\r\n });\r\n","import { LIBRARY_PROMOS_REQUEST, LIBRARY_PROMOS_SUCCESS, LIBRARY_PROMOS_FAIL, LIBRARY_PROMOS_DELETE_REQUEST, LIBRARY_PROMOS_DELETE_SUCCESS, LIBRARY_PROMOS_DELETE_FAIL, LIBRARY_PROMOS_SLIDE_COMMS_REQUEST, LIBRARY_PROMOS_COMMUNITIES_SUCCESS, LIBRARY_PROMOS_GET_COMMS_FAIL, LIBRARY_PROMOS_UPDATE_REQUEST, LIBRARY_PROMOS_UPDATE_SUCCESS, LIBRARY_PROMOS_UPDATE_FAIL, LIBRARY_PROMOS_INSERT_REQUEST, LIBRARY_PROMOS_INSERT_SUCCESS, LIBRARY_PROMOS_INSERT_FAIL, LIBRARY_PROMOS_MULTIPLE_UPDATE_REQUEST, LIBRARY_PROMOS_MULTIPLE_UPDATE_SUCCESS, LIBRARY_PROMOS_MULTIPLE_UPDATE_FAIL, LIBRARY_DIVISIONAL_PROMOS_REQUEST, LIBRARY_DIVISIONAL_PROMOS_FAIL, LIBRARY_DIVISIONAL_PROMOS_SUCCESS } from './types';\r\nimport { setParam, setParams } from '@/redux/page-location/actions';\r\nimport { PromotionsSearch, PromotionsDelete, PromotionsUpdate, PromotionsInsert, PromotionsBulkUpdate, AllDivisionCommunitiesQuery } from './api';\r\n\r\nimport { Promotion } from '@/models/Promotion';\r\nimport { Community } from '@/models/Community';\r\nimport { modelRequestSchema, modelMutateSchema } from '../../../../app.entities';\r\nimport { PAGE_NUMBER, PAGE_SIZE, SEARCH, SORT, STATUS, TYPE, OTHER } from '@/constants/params';\r\n\r\n/**\r\n * Request.\r\n */\r\nexport const promotionsLibraryRequest = (filters = {}) => ({ type: LIBRARY_PROMOS_REQUEST, entity: Promotion().name, query: PromotionsSearch(filters), meta: modelRequestSchema });\r\nexport const promotionsLibrarySuccess = (modelName, entity, entities, meta) => ({ type: LIBRARY_PROMOS_SUCCESS, data: { modelName, entity, entities }, meta });\r\nexport const promotionsLibraryFail = (error) => ({ type: LIBRARY_PROMOS_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Divisional Request.\r\n */\r\nexport const promotionsDivisionalLibraryRequest = (entity, filters = {}, meta) => ({ type: LIBRARY_DIVISIONAL_PROMOS_REQUEST, entity, query: PromotionsSearch(filters), meta });\r\nexport const promotionsDivisionalLibrarySuccess = (modelName, entity, entities, meta) => ({ type: LIBRARY_DIVISIONAL_PROMOS_SUCCESS, data: { modelName, entity, entities }, meta });\r\nexport const promotionsDivisionalLibraryFail = (error) => ({ type: LIBRARY_DIVISIONAL_PROMOS_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Promotion Communities.\r\n */\r\nexport const promotionsLibraryGetCommunitiesRequest = (requestArguments) => ({ type: LIBRARY_PROMOS_SLIDE_COMMS_REQUEST, entity: Community().name, query: AllDivisionCommunitiesQuery(requestArguments), meta: { schema: modelRequestSchema } });\r\nexport const promotionsLibraryGetCommunitiesSuccess = (modelName, entity, entities, meta) => ({ type: LIBRARY_PROMOS_COMMUNITIES_SUCCESS, data: { modelName, entity, entities }, meta });\r\nexport const promotionsLibraryGetCommunitiesFail = (error) => ({ type: LIBRARY_PROMOS_GET_COMMS_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Bulk update.\r\n */\r\nexport const promotionsMultipleUpdateRequest = (entity, promotions = [], meta) => ({ type: LIBRARY_PROMOS_MULTIPLE_UPDATE_REQUEST, entity, query: PromotionsBulkUpdate(promotions), meta });\r\nexport const promotionsLibraryMultipleUpdateSuccess = (entity, entities, meta) => ({ type: LIBRARY_PROMOS_MULTIPLE_UPDATE_SUCCESS, data: { entity, entities }, meta });\r\nexport const promotionsLibraryMultipleUpdateFail = (error) => ({ type: LIBRARY_PROMOS_MULTIPLE_UPDATE_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Delete.\r\n */\r\nexport const promotionsLibraryDeleteRequest = (ids = []) => ({ type: LIBRARY_PROMOS_DELETE_REQUEST, entity: Promotion().name, query: PromotionsDelete(ids), meta: modelRequestSchema });\r\nexport const promotionsLibraryDeleteSuccess = (entity, entities, meta) => ({ type: LIBRARY_PROMOS_DELETE_SUCCESS, data: { entity, entities }, meta });\r\nexport const promotionsLibraryDeleteFail = (error) => ({ type: LIBRARY_PROMOS_DELETE_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Update.\r\n */\r\nexport const promotionUpdateRequest = (id, formData) => ({ type: LIBRARY_PROMOS_UPDATE_REQUEST, data: { entityId: id }, mutation: PromotionsUpdate, meta: { model: Promotion(), required: ['type', 'isDivisional'], schema: modelMutateSchema, formData } });\r\nexport const promotionUpdateSuccess = (entities, meta, id) => ({ type: LIBRARY_PROMOS_UPDATE_SUCCESS, data: { id, entities }, meta });\r\nexport const promotionUpdateFail = (error, id) => ({ type: LIBRARY_PROMOS_UPDATE_FAIL, error: true, data: { entityId: id, appMessage, errorMessage: error.message }, meta: { model: Promotion() } });\r\n\r\n/**\r\n * Insert.\r\n */\r\nexport const promotionInsertRequest = (id, formData) => ({ type: LIBRARY_PROMOS_INSERT_REQUEST, data: { entityId: id }, mutation: PromotionsInsert, meta: { model: Promotion(), schema: modelMutateSchema, formData } });\r\nexport const promotionInsertSuccess = (entities, meta, id) => ({ type: LIBRARY_PROMOS_INSERT_SUCCESS, data: { id, entities }, meta });\r\nexport const promotionInsertFail = (error, id) => ({ type: LIBRARY_PROMOS_INSERT_FAIL, error: true, data: { entityId: id, appMessage, errorMessage: error.message }, meta: { model: Promotion() } });\r\n\r\n/**\r\n * Filters.\r\n */\r\nexport const setPromotionsLibraryFilter = (facetName, facetValue) => setParams({ [facetName]: facetValue, [PAGE_NUMBER]: facetName !== PAGE_NUMBER ? 1 : facetValue });\r\nexport const setPromotionsLibraryPageNumber = (pageNumber) => setParam(PAGE_NUMBER, pageNumber);\r\nexport const setPromotionsLibraryPagination = (pageSize) => setParams({ [PAGE_SIZE]: pageSize, [PAGE_NUMBER]: 1 });\r\nexport const setPromotionsLibrarySort = (sort) => setParams({ [SORT]: { ...sort } });\r\nexport const setPromotionsLibrarySearch = (search) => setParams({ [SEARCH]: search, [PAGE_NUMBER]: 1 });\r\nexport const clearPromotionsLibraryFilters = () => setParams({ [STATUS]: [], [TYPE]: [], [OTHER]: [] });\r\n\r\nconst appMessage = 'An error occurred while saving the Promotion. Please, verify the information you entered and try again.';\r\n","import { takeLatest, call, put } from 'redux-saga/effects';\r\n\r\nimport { LIBRARY_PROMOS_REQUEST, LIBRARY_PROMOS_DELETE_REQUEST, LIBRARY_PROMOS_SLIDE_COMMS_REQUEST, LIBRARY_PROMOS_UPDATE_REQUEST, LIBRARY_PROMOS_INSERT_REQUEST, LIBRARY_PROMOS_MULTIPLE_UPDATE_REQUEST, LIBRARY_DIVISIONAL_PROMOS_REQUEST } from './types';\r\nimport { promotionsLibrarySuccess, promotionsLibraryFail, promotionsLibraryDeleteSuccess, promotionsLibraryDeleteFail, promotionsLibraryGetCommunitiesSuccess, promotionsLibraryGetCommunitiesFail, promotionUpdateSuccess, promotionUpdateFail, promotionInsertSuccess, promotionInsertFail, promotionsLibraryMultipleUpdateSuccess, promotionsLibraryMultipleUpdateFail, promotionsDivisionalLibraryFail, promotionsDivisionalLibrarySuccess } from './actions';\r\nimport { requestModel } from '../../../../@redux/models/api';\r\n\r\nimport { Promotion } from '@/models/Promotion';\r\nimport { formsChannel } from '../../../../@redux/forms/sagas';\r\nimport { getModels } from '../../../../@redux/models/sagas';\r\n\r\nexport function* getLibrarySearch(success, fail, { entity, query, meta }) {\r\n try {\r\n const response = yield call(requestModel, query);\r\n\r\n response.data.Result?.promotions?.results?.forEach((promotion) => {\r\n promotion.communities = promotion.communities || [];\r\n });\r\n\r\n yield put(success(Promotion().name, entity, response.data.Result, meta));\r\n } catch (error) {\r\n yield put(fail(error));\r\n }\r\n}\r\n\r\nexport const promosSagas = [takeLatest(LIBRARY_PROMOS_REQUEST, getLibrarySearch, promotionsLibrarySuccess, promotionsLibraryFail), takeLatest(LIBRARY_DIVISIONAL_PROMOS_REQUEST, getLibrarySearch, promotionsDivisionalLibrarySuccess, promotionsDivisionalLibraryFail), takeLatest(LIBRARY_PROMOS_DELETE_REQUEST, getModels, promotionsLibraryDeleteSuccess, promotionsLibraryDeleteFail), takeLatest(LIBRARY_PROMOS_MULTIPLE_UPDATE_REQUEST, getModels, promotionsLibraryMultipleUpdateSuccess, promotionsLibraryMultipleUpdateFail), takeLatest(LIBRARY_PROMOS_SLIDE_COMMS_REQUEST, getLibrarySearch, promotionsLibraryGetCommunitiesSuccess, promotionsLibraryGetCommunitiesFail), formsChannel(LIBRARY_PROMOS_INSERT_REQUEST, promotionInsertSuccess, promotionInsertFail), formsChannel(LIBRARY_PROMOS_UPDATE_REQUEST, promotionUpdateSuccess, promotionUpdateFail)];\r\n","import { capitalize } from '../../../../utils/bdx-lodash-lite/word';\r\nimport { empty, JSONText } from '../../../../utils/bdx-lodash-lite';\r\nimport { qif } from '@/utils/api/graph-helpers';\r\nimport { config } from '@/redux/config/selectors';\r\n\r\nconst top = (key) => qif(!!parseInt(config(key)), () => `top: ${config(key)}`);\r\n\r\n/**\r\n * Search.\r\n */\r\nexport const EventsSearch = (params) => SearchEvents(params);\r\nexport const SearchEvents = ({ corporateId, divisionId, excludeCommunityId, excludeDivisionals, communityId, type: filters, hasPDF, status, search, sorts, pageNumber, pageSize }) => `query {\r\n events(\r\n ${communityId ? `communityIds: { in: ${communityId} }` : ''}\r\n ${corporateId && !divisionId ? `,corporationIds: ${corporateId}` : `builderIds: ${divisionId ? `[${Array.isArray(divisionId) ? divisionId.join() : divisionId}]` : `0`}`}\r\n ${excludeCommunityId ? `,communityIds: { nin: ${excludeCommunityId} }` : ''}\r\n ${!empty(status) ? `,status: [${status}]` : ',status: [Active, Inactive]'}\r\n ${!empty(filters) ? `,types: [${filters}]` : ''}\r\n ${hasPDF ? `,hasFlyer: true` : ''}\r\n ${excludeDivisionals ? `,excludeDivisionals: true` : ''}\r\n ${search ? `,search: ${JSONText(search)}` : ''}\r\n ${!empty(sorts) ? `,sortBy: [${Object.entries(sorts).map(([path, direction]) => `{field: ${capitalize(path)}, order: ${direction === -1 ? 'Desc' : 'Asc'}}`)}]` : ''}\r\n ,page: ${pageNumber - 1 || 0}\r\n ${pageSize ? `,top: ${pageSize}` : ''}) {\r\n results {\r\n ${EventFragment}\r\n }\r\n count {\r\n type\r\n count\r\n }\r\n }\r\n}`;\r\n\r\n/**\r\n * Update.\r\n */\r\nexport const EventsUpdate = (event, formData) => Update(event, formData);\r\nconst Update = ({ id, isDivisional, type, description, location, eventDate, startTime, endTime, title, websiteUrl, communities, deleteAssociatedFile, isDataFeedBuilder }, formData) => {\r\n const date = setupDateFormat(eventDate);\r\n\r\n return `\r\n mutation${formData ? `($file: Upload)` : ``} {\r\n updateEvent(\r\n ${formData ? `file: $file,` : ``}\r\n id: ${id}\r\n ${!empty(type) ? `,type: ${type}` : ''}\r\n ${!empty(description) ? `,description: ${JSONText(description)}` : ''}\r\n ${!empty(location) ? `,location: ${JSONText(location)}` : ''}\r\n ${!empty(eventDate) ? `,startDate: \"${date}T${startTime}\", endDate: \"${date}T${endTime}\"` : ''}\r\n ${!empty(title) ? `,title: ${JSONText(title)}` : ''}\r\n ,websiteUrl: \"${websiteUrl || ''}\"\r\n ${handleCommsAssociation(communities, isDivisional)}\r\n ${deleteAssociatedFile && !formData ? ',deleteAssociatedFile: true' : ''}\r\n )\r\n {\r\n ${EventFragment}\r\n }\r\n ${communityEventLockHandler(communities, isDivisional, isDataFeedBuilder)}\r\n }\r\n `;\r\n};\r\n\r\n/**\r\n * Bulk Update.\r\n */\r\nexport const EventsBulkUpdate = (events) => BulkUpdate(events);\r\nconst BulkUpdate = (events = []) => {\r\n return `\r\n mutation {\r\n ${events.map(\r\n ({ id, communities }) =>\r\n `\r\n event${id}: updateEvent(\r\n id: ${id}\r\n ,communityIds: [${!empty(communities) ? communities.map((comm) => comm) : ''}]\r\n ) \r\n {\r\n ${EventFragment}\r\n }\r\n `\r\n )}\r\n }\r\n `;\r\n};\r\n\r\n/**\r\n * Insert.\r\n */\r\nexport const EventsInsert = (event, formData) => Insert(event, formData);\r\nconst Insert = ({ isDivisional, builder, type, title, description, location, eventDate, startTime, endTime, websiteUrl, communities, isDataFeedBuilder }, formData) => {\r\n const date = setupDateFormat(eventDate);\r\n return `\r\n mutation${formData ? `($file: Upload)` : ``} {\r\n insertEvent(\r\n ${formData ? `file: $file,` : ``}\r\n builderId: ${builder}\r\n ,type: ${type}\r\n ${!empty(description) ? `,description: ${JSONText(description)}` : ''}\r\n ${!empty(location) ? `,location: ${JSONText(location)}` : ''}\r\n ${!empty(eventDate) ? `,startDate: \"${date}T${startTime}\", endDate: \"${date}T${endTime}\"` : ''}\r\n ${!empty(title) ? `,title: ${JSONText(title)}` : ''}\r\n ${!empty(websiteUrl) ? `,websiteUrl: ${JSONText(websiteUrl)}` : ''}\r\n ${handleCommsAssociation(communities, isDivisional)}\r\n ) \r\n {\r\n ${EventFragment}\r\n }\r\n ${communityEventLockHandler(communities, isDivisional, isDataFeedBuilder)}\r\n }\r\n `;\r\n};\r\n\r\n/**\r\n * Delete.\r\n */\r\nexport const EventsDelete = (ids) => Delete(ids);\r\nconst Delete = (ids) => `mutation {\r\n deleteEvents(ids: [${ids.map((id) => id)}]){\r\n id\r\n deleted\r\n }\r\n}`;\r\n\r\nexport const AllDivisionCommunitiesQuery = (requestArguments) => AllDivisionCommunities(requestArguments);\r\nconst AllDivisionCommunities = ({ builderId, sortColumns, status, listingTypes }) => `{\r\n communities(\r\n ${top('CommsNavTop')}\r\n sortBy:${sortColumns}\r\n builderId:${builderId}\r\n status:[${status}]\r\n excludeCustom: true\r\n ${!empty(listingTypes) ? `listingTypes: [${listingTypes}]` : ''}\r\n ) {\r\n id\r\n name\r\n status\r\n listingType\r\n hasDataFeedAgentEvents\r\n hasDataFeedConsumerEvents\r\n dataLocks {\r\n events\r\n }\r\n mlsName {\r\n id\r\n name\r\n }\r\n activeEvents: events(status: Active) {\r\n results {\r\n id\r\n type\r\n isDivisional\r\n }\r\n }\r\n }\r\n}`;\r\n\r\nconst handleCommsAssociation = (communities, isDivisional) => {\r\n if (isDivisional) {\r\n return ',isDivisional: true, communityIds: []';\r\n }\r\n return !empty(communities) ? `,communityIds: [${communities.map(({ id }) => id)}]` : '';\r\n};\r\n\r\nconst setupDateFormat = ({ day, month, year } = {}) => {\r\n return `${year}/${month}/${day}`;\r\n};\r\n\r\nconst communityEventLockHandler = (communities, isDivisional, isDataFeedBuilder) => {\r\n return isDataFeedBuilder && !isDivisional && !empty(communities)\r\n ? `\r\n ${communities.map(\r\n ({ id: communityId }) => `\r\n ,mutation${communityId}: updateCommunity(id: ${communityId}, dataLocks: { events: true }) {\r\n id,\r\n dataLocks {\r\n events\r\n }\r\n }`\r\n )}`\r\n : '';\r\n};\r\n\r\nconst EventFragment = `\r\n id\r\n isDivisional\r\n assignedToAllCommunities\r\n title\r\n description\r\n location\r\n websiteUrl\r\n type\r\n startDate\r\n endDate\r\n flyer {\r\n filePath\r\n flyerImages {\r\n thumbnail\r\n }\r\n }\r\n builder {\r\n parentBuilderId\r\n builderId\r\n builderName\r\n orgTypeCode\r\n partner {\r\n partnerId\r\n partnerName\r\n } \r\n parentBuilder {\r\n builderId\r\n builderName\r\n }\r\n }\r\n communities {\r\n id\r\n name\r\n }\r\n`;\r\n","import { communityEventsInsertMutateRequest, communityEventsUpdateMutateRequest, communityEventsDeleteMutateRequest } from '@/modules/listings-detail/community-detail/@redux/marketing/actions';\r\nimport { GraphQLQuery } from '../utils/api/graph-helpers';\r\nimport { eventSchema } from '../app.entities';\r\n\r\nimport { Model } from '../utils/models';\r\n\r\nexport const Event = () =>\r\n new Model({\r\n name: 'events',\r\n model: 'event',\r\n query: new GraphQLQuery([\r\n {\r\n operation: 'events',\r\n argument: {},\r\n },\r\n ]),\r\n mutations: {\r\n insert: communityEventsInsertMutateRequest,\r\n update: communityEventsUpdateMutateRequest,\r\n delete: communityEventsDeleteMutateRequest,\r\n },\r\n describerFields: { id: 'id', src: 'thumbnailUrl', contentSrc: 'pdfUrl' },\r\n lookup: 'search',\r\n schema: eventSchema,\r\n template(id, context) {\r\n return {\r\n id,\r\n isDivisional: false,\r\n location: '',\r\n title: '',\r\n description: '',\r\n websiteUrl: '',\r\n type: '',\r\n eventDate: '',\r\n startTime: '00:00:00',\r\n endTime: '23:59:00',\r\n flyer: '',\r\n file: '',\r\n builder: '',\r\n communities: [],\r\n ...context,\r\n };\r\n },\r\n });\r\n","import { LIBRARY_EVENTS_REQUEST, LIBRARY_EVENTS_SUCCESS, LIBRARY_EVENTS_FAIL, LIBRARY_EVENTS_DELETE_REQUEST, LIBRARY_EVENTS_DELETE_SUCCESS, LIBRARY_EVENTS_DELETE_FAIL, LIBRARY_EVENTS_SLIDE_COMMS_REQUEST, LIBRARY_EVENTS_COMMUNITIES_SUCCESS, LIBRARY_EVENTS_GET_COMMS_FAIL, LIBRARY_EVENTS_UPDATE_REQUEST, LIBRARY_EVENTS_UPDATE_SUCCESS, LIBRARY_EVENTS_UPDATE_FAIL, LIBRARY_EVENTS_INSERT_REQUEST, LIBRARY_EVENTS_INSERT_SUCCESS, LIBRARY_EVENTS_INSERT_FAIL, LIBRARY_EVENTS_MULTIPLE_UPDATE_REQUEST, LIBRARY_EVENTS_MULTIPLE_UPDATE_SUCCESS, LIBRARY_EVENTS_MULTIPLE_UPDATE_FAIL, LIBRARY_DIVISIONAL_EVENTS_REQUEST, LIBRARY_DIVISIONAL_EVENTS_FAIL, LIBRARY_DIVISIONAL_EVENTS_SUCCESS } from './types';\r\nimport { setParam, setParams } from '@/redux/page-location/actions';\r\nimport { EventsSearch, EventsDelete, EventsUpdate, EventsInsert, EventsBulkUpdate, AllDivisionCommunitiesQuery } from './api';\r\n\r\nimport { Community } from '@/models/Community';\r\nimport { Event } from '@/models/Event';\r\nimport { modelRequestSchema, modelMutateSchema } from '../../../../app.entities';\r\nimport { PAGE_NUMBER, PAGE_SIZE, SEARCH, SORT, STATUS, TYPE, OTHER } from '@/constants/params';\r\n\r\n/**\r\n * Request.\r\n */\r\nexport const eventsLibraryRequest = (filters = {}) => ({ type: LIBRARY_EVENTS_REQUEST, entity: Event().name, query: EventsSearch(filters), meta: modelRequestSchema });\r\nexport const eventsLibrarySuccess = (modelName, entity, entities, meta) => ({ type: LIBRARY_EVENTS_SUCCESS, data: { modelName, entity, entities }, meta });\r\nexport const eventsLibraryFail = (error) => ({ type: LIBRARY_EVENTS_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Divisional Request.\r\n */\r\nexport const eventsDivisionalLibraryRequest = (entity, filters = {}, meta) => ({ type: LIBRARY_DIVISIONAL_EVENTS_REQUEST, entity, query: EventsSearch(filters), meta });\r\nexport const eventsDivisionalLibrarySuccess = (modelName, entity, entities, meta) => ({ type: LIBRARY_DIVISIONAL_EVENTS_SUCCESS, data: { modelName, entity, entities }, meta });\r\nexport const eventsDivisionalLibraryFail = (error) => ({ type: LIBRARY_DIVISIONAL_EVENTS_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Event Communities.\r\n */\r\nexport const eventsLibraryGetCommunitiesRequest = (requestArguments) => ({ type: LIBRARY_EVENTS_SLIDE_COMMS_REQUEST, entity: Community().name, query: AllDivisionCommunitiesQuery(requestArguments), meta: { schema: modelRequestSchema } });\r\nexport const eventsLibraryGetCommunitiesSuccess = (modelName, entity, entities, meta) => ({ type: LIBRARY_EVENTS_COMMUNITIES_SUCCESS, data: { modelName, entity, entities }, meta });\r\nexport const eventsLibraryGetCommunitiesFail = (error) => ({ type: LIBRARY_EVENTS_GET_COMMS_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Bulk update.\r\n */\r\nexport const eventsMultipleUpdateRequest = (entity, events = [], meta) => ({ type: LIBRARY_EVENTS_MULTIPLE_UPDATE_REQUEST, entity, query: EventsBulkUpdate(events), meta });\r\nexport const eventsLibraryMultipleUpdateSuccess = (entity, entities, meta) => ({ type: LIBRARY_EVENTS_MULTIPLE_UPDATE_SUCCESS, data: { entity, entities }, meta });\r\nexport const eventsLibraryMultipleUpdateFail = (error) => ({ type: LIBRARY_EVENTS_MULTIPLE_UPDATE_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Delete.\r\n */\r\nexport const eventsLibraryDeleteRequest = (ids = []) => ({ type: LIBRARY_EVENTS_DELETE_REQUEST, entity: Event().name, query: EventsDelete(ids), meta: modelRequestSchema });\r\nexport const eventsLibraryDeleteSuccess = (entity, entities, meta) => ({ type: LIBRARY_EVENTS_DELETE_SUCCESS, data: { entity, entities }, meta });\r\nexport const eventsLibraryDeleteFail = (error) => ({ type: LIBRARY_EVENTS_DELETE_FAIL, error: true, data: error });\r\n\r\n/**\r\n * Update.\r\n */\r\nexport const eventUpdateRequest = (id, formData) => ({ type: LIBRARY_EVENTS_UPDATE_REQUEST, data: { entityId: id }, mutation: EventsUpdate, meta: { model: Event(), required: ['type', 'isDivisional'], schema: modelMutateSchema, formData } });\r\nexport const eventUpdateSuccess = (entities, meta, id) => ({ type: LIBRARY_EVENTS_UPDATE_SUCCESS, data: { id, entities }, meta });\r\nexport const eventUpdateFail = (error, id) => ({ type: LIBRARY_EVENTS_UPDATE_FAIL, error: true, data: { entityId: id, appMessage, errorMessage: error.message }, meta: { model: Event() } });\r\n\r\n/**\r\n * Insert.\r\n */\r\nexport const eventInsertRequest = (id, formData) => ({ type: LIBRARY_EVENTS_INSERT_REQUEST, data: { entityId: id }, mutation: EventsInsert, meta: { model: Event(), schema: modelMutateSchema, formData } });\r\nexport const eventInsertSuccess = (entities, meta, id) => ({ type: LIBRARY_EVENTS_INSERT_SUCCESS, data: { id, entities }, meta });\r\nexport const eventInsertFail = (error, id) => ({ type: LIBRARY_EVENTS_INSERT_FAIL, error: true, data: { entityId: id, appMessage, errorMessage: error.message }, meta: { model: Event() } });\r\n\r\n/**\r\n * Filters.\r\n */\r\nexport const setEventsLibraryFilter = (facetName, facetValue) => setParams({ [facetName]: facetValue, [PAGE_NUMBER]: facetName !== PAGE_NUMBER ? 1 : facetValue });\r\nexport const setEventsLibraryPageNumber = (pageNumber) => setParam(PAGE_NUMBER, pageNumber);\r\nexport const setEventsLibraryPagination = (pageSize) => setParams({ [PAGE_SIZE]: pageSize, [PAGE_NUMBER]: 1 });\r\nexport const setEventsLibrarySort = (sort) => setParams({ [SORT]: { ...sort } });\r\nexport const setEventsLibrarySearch = (search) => setParams({ [SEARCH]: search, [PAGE_NUMBER]: 1 });\r\nexport const clearEventsLibraryFilters = () => setParams({ [STATUS]: [], [TYPE]: [], [OTHER]: [] });\r\n\r\nconst appMessage = 'An error occurred while saving the Event. Please, verify the information you entered and try again.';\r\n","import { takeLatest, call, put } from 'redux-saga/effects';\r\n\r\nimport { LIBRARY_EVENTS_REQUEST, LIBRARY_EVENTS_DELETE_REQUEST, LIBRARY_EVENTS_SLIDE_COMMS_REQUEST, LIBRARY_EVENTS_UPDATE_REQUEST, LIBRARY_EVENTS_INSERT_REQUEST, LIBRARY_DIVISIONAL_EVENTS_REQUEST, LIBRARY_EVENTS_MULTIPLE_UPDATE_REQUEST } from './types';\r\nimport { eventsLibrarySuccess, eventsLibraryFail, eventsLibraryDeleteSuccess, eventsLibraryDeleteFail, eventsLibraryGetCommunitiesSuccess, eventsLibraryGetCommunitiesFail, eventUpdateSuccess, eventUpdateFail, eventInsertSuccess, eventInsertFail, eventsDivisionalLibraryFail, eventsDivisionalLibrarySuccess, eventsLibraryMultipleUpdateFail, eventsLibraryMultipleUpdateSuccess } from './actions';\r\nimport { requestModel } from '../../../../@redux/models/api';\r\n\r\nimport { Event } from '@/models/Event';\r\nimport { formsChannel } from '../../../../@redux/forms/sagas';\r\nimport { getModels } from '../../../../@redux/models/sagas';\r\n\r\nexport function* getLibrarySearch(success, fail, { entity, query, meta }) {\r\n try {\r\n const response = yield call(requestModel, query);\r\n\r\n response.data.Result?.events?.results?.forEach((event) => {\r\n event.communities = event.communities || [];\r\n });\r\n\r\n yield put(success(Event().name, entity, response.data.Result, meta));\r\n } catch (error) {\r\n yield put(fail(error));\r\n }\r\n}\r\n\r\nexport const eventsSagas = [takeLatest(LIBRARY_EVENTS_REQUEST, getLibrarySearch, eventsLibrarySuccess, eventsLibraryFail), takeLatest(LIBRARY_DIVISIONAL_EVENTS_REQUEST, getLibrarySearch, eventsDivisionalLibrarySuccess, eventsDivisionalLibraryFail), takeLatest(LIBRARY_EVENTS_MULTIPLE_UPDATE_REQUEST, getModels, eventsLibraryMultipleUpdateSuccess, eventsLibraryMultipleUpdateFail), takeLatest(LIBRARY_EVENTS_DELETE_REQUEST, getModels, eventsLibraryDeleteSuccess, eventsLibraryDeleteFail), takeLatest(LIBRARY_EVENTS_SLIDE_COMMS_REQUEST, getLibrarySearch, eventsLibraryGetCommunitiesSuccess, eventsLibraryGetCommunitiesFail), formsChannel(LIBRARY_EVENTS_INSERT_REQUEST, eventInsertSuccess, eventInsertFail), formsChannel(LIBRARY_EVENTS_UPDATE_REQUEST, eventUpdateSuccess, eventUpdateFail)];\r\n","/**\r\n * Generic Image Request\r\n */\r\nexport const BDX_TYPE_REQUEST = 'bdxlive/types/bdx_type_request';\r\nexport const BDX_TYPE_SUCCESS = 'bdxlive/types/bdx_type_success';\r\nexport const BDX_TYPE_FAIL = 'bdxlive/types/bdx_type_fail';\r\n\r\n/**\r\n * BDX Live Status ids and theirs descriptions based on DB\r\n */\r\nexport const BdxTypes = {\r\n PlanAmenities: 'PlanAmenities',\r\n LivingAreas: 'LivingAreas',\r\n PlanDisplay: 'PlanDisplay',\r\n PlanType: 'PlanType',\r\n InteractiveMediaType: 'InteractiveMediaBaseType_InteractiveMediaCommType_InteractiveMediaPlanType_InteractiveMediaLotType',\r\n MasterBedLocation: 'MasterBedLocation',\r\n NumberSectionsEnum: 'NumberSectionsEnum',\r\n BuildingMethodEnum: 'BuildingMethodEnum',\r\n ArchitectureStyle: 'ArchitectureStyle',\r\n CoolingSystem: 'CoolingSystem',\r\n ExteriorType: 'ExteriorType',\r\n FloorType: 'FloorType',\r\n HeatingFuel: 'HeatingFuel',\r\n HeatingSystem: 'HeatingSystem',\r\n KitchenCountertopMaterial: 'KitchenCountertopMaterial',\r\n Appliances: 'Appliances',\r\n ParkingType: 'ParkingType',\r\n RoofType: 'RoofType',\r\n WindowInsulationType: 'WindowInsulationType',\r\n WindowMaterialType: 'WindowMaterialType',\r\n WiredType: 'WiredType',\r\n ViewType: 'ViewType',\r\n BillingStatus: 'BillingStatus',\r\n ListingType: 'ListingType',\r\n BcType: 'BcType',\r\n SaleStatus: 'SaleStatus',\r\n SpecType: 'SpecType',\r\n SpecAmenities: 'SpecAmenities',\r\n CommunityType: 'CommunityType',\r\n /**\r\n * Standard Amenities\r\n */\r\n LocalAreaAmenities: 'LocalAreaAmenitiesEnum',\r\n HealthFitnessAmenities: 'HealthFitnessAmenitiesEnum',\r\n CommunityServicesAmenities: 'CommunityServicesAmenitiesEnum',\r\n SocialActivitiesAmenities: 'SocialActivitiesAmenitiesEnum',\r\n /**\r\n * Community Services\r\n */\r\n CommunityServiceType: 'MoreCommunityServicesEnum',\r\n /**\r\n * Agent Commission\r\n */\r\n RateType: 'RateType',\r\n CommissionBasis: 'CommissionBasis',\r\n PayoutTiming: 'PayoutTiming',\r\n /**\r\n * Open Amenity\r\n */\r\n OpenAmenityGroup: 'OpenAmenityGroupTypes',\r\n /**\r\n * Utilities\r\n */\r\n UtilitiesTypes: 'UtilitieTypesEnum',\r\n /**\r\n * Plan Options\r\n */\r\n PlanOption: 'PlanOptionType',\r\n /**\r\n * Lead recipients\r\n */\r\n LeadDeliveryFormat: 'LeadDeliveryFormat',\r\n};\r\n","const BDX_TYPES_QUERY = (types) => `{\r\n ${types.map((type) => `${type}: __type(name: \"${type}\") { ...type }`)} \r\n }\r\n\r\n fragment type on __Type {\r\n name\r\n enumValues {\r\n name\r\n description\r\n }\r\n }\r\n `;\r\n\r\nexport const BdxTypeQuery = (types) => BDX_TYPES_QUERY(types);\r\n","import { BdxTypeQuery } from './api';\r\nimport { BDX_TYPE_REQUEST, BDX_TYPE_SUCCESS, BDX_TYPE_FAIL } from './types';\r\nimport { modelRequestSchema } from '../../app.entities';\r\n\r\n/**\r\n * Generic Image Request\r\n */\r\n/**\r\n * Request Action for BDX Live Types\r\n * @param {*} types types to request\r\n */\r\nexport const bdxTypeRequest = (types = []) => ({ type: BDX_TYPE_REQUEST, query: BdxTypeQuery(types), meta: { schema: modelRequestSchema } });\r\n/**\r\n * Model success action creator for Images\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const bdxTypeSuccess = (entities, meta) => ({ type: BDX_TYPE_SUCCESS, data: { entities: { bdxTypes: Object.keys(entities).map((k) => ({ id: k, values: entities[k].enumValues.map((r) => ({ id: r.name, name: r.description })) })) } }, meta });\r\n\r\n/**\r\n * Model request fail action creator for Images\r\n * @param {*} error cause\r\n */\r\nexport const bdxTypeFail = (error) => ({ type: BDX_TYPE_FAIL, error: true, data: error });\r\n","import { BDX_TYPE_REQUEST } from './types';\r\nimport { bdxTypeSuccess, bdxTypeFail } from './actions';\r\nimport { getModelsChannel } from '../models/sagas';\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const bdxTypesSagas = [\r\n /**\r\n * This generator listens to BDX_TYPE_SUCCESS\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(BDX_TYPE_REQUEST, bdxTypeSuccess, bdxTypeFail),\r\n];\r\n","import { takeLatest } from 'redux-saga/effects';\r\nimport { BUILDER_CONTEXT_REQUEST, DIVISION_CONTEXT_REQUEST, COMMUNITY_CONTEXT_REQUEST, PLAN_CONTEXT_REQUEST, SPEC_CONTEXT_REQUEST, LOT_CONTEXT_REQUEST, BRAND_CONTEXT_REQUEST, AGENT_CONTEXT_REQUEST } from './types';\r\nimport { builderContextSuccess, builderContextFail, divisionContextSuccess, divisionContextFail, communityContextSuccess, communityContextFail, planContextSuccess, planContextFail, specContextSuccess, specContextFail, lotContextSuccess, lotContextFail, brandContextSuccess, brandContextFail, agentContextSuccess, agentContextFail } from './actions';\r\nimport { getModelsRetry } from '../models/sagas';\r\nimport { checkContextSecurityResponse } from '@/utils/security/check-security';\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const contextSagas = [\r\n /**\r\n * This generator listens to DIVISION_CONTEXT_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(BUILDER_CONTEXT_REQUEST, getModelsRetry, builderContextSuccess, builderContextFail, checkContextSecurityResponse),\r\n /**\r\n * This generator listens to DIVISION_CONTEXT_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(DIVISION_CONTEXT_REQUEST, getModelsRetry, divisionContextSuccess, divisionContextFail, checkContextSecurityResponse),\r\n /**\r\n * This generator listens to COMMUNITY_CONTEXT_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(COMMUNITY_CONTEXT_REQUEST, getModelsRetry, communityContextSuccess, communityContextFail, checkContextSecurityResponse),\r\n /**\r\n * This generator listens to PLAN_CONTEXT_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(PLAN_CONTEXT_REQUEST, getModelsRetry, planContextSuccess, planContextFail, checkContextSecurityResponse),\r\n /**\r\n * This generator listens to PLAN_CONTEXT_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(SPEC_CONTEXT_REQUEST, getModelsRetry, specContextSuccess, specContextFail, checkContextSecurityResponse),\r\n /**\r\n * This generator listens to PLAN_CONTEXT_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(LOT_CONTEXT_REQUEST, getModelsRetry, lotContextSuccess, lotContextFail, checkContextSecurityResponse),\r\n /**\r\n * This generator listens to BRAND_CONTEXT_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(BRAND_CONTEXT_REQUEST, getModelsRetry, brandContextSuccess, brandContextFail, checkContextSecurityResponse),\r\n /**\r\n * This generator listens to BRAND_CONTEXT_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(AGENT_CONTEXT_REQUEST, getModelsRetry, agentContextSuccess, agentContextFail, checkContextSecurityResponse),\r\n];\r\n","/**\r\n * API Request flow to pull images for a PCI modal\r\n */\r\nexport const PCI_MODAL_IMAGES_REQUEST = 'bdxlive/pci/modal_images_request';\r\nexport const PCI_MODAL_IMAGES_SUCCESS = 'bdxlive/pci/modal_images_success';\r\nexport const PCI_MODAL_IMAGES_FAIL = 'bdxlive/pci/modal_images_fail';\r\n/**\r\n * API Request flow to submit a mutation for PCI\r\n */\r\nexport const PCI_MODAL_SET_REQUEST = 'bdxlive/pci/modal_set_request';\r\nexport const PCI_MODAL_SET_SUCCESS = 'bdxlive/pci/modal_set_success';\r\nexport const PCI_MODAL_SET_FAIL = 'bdxlive/pci/modal_set_fail';\r\n","import { ImageQueryFields } from '../../../../../@redux/images/api';\r\n\r\nconst PciModalImagesRequest = ({ communityId }) => `query {\r\n communities(communityId: ${communityId}) {\r\n id\r\n images(typeCodes: [COM], status: Active) {\r\n ...Image\r\n }\r\n specs {\r\n id\r\n number\r\n images(typeCodes: [ELE], status: Active, inheritance: false) {\r\n ...Image\r\n }\r\n }\r\n plans {\r\n id\r\n name\r\n images(typeCodes: [ELE], status: Active) {\r\n ...Image\r\n }\r\n }\r\n }\r\n}\r\n\r\nfragment Image on Image {\r\n ${ImageQueryFields}\r\n}`;\r\n\r\nexport const PciModalImagesRequestQuery = (requestParams) => PciModalImagesRequest(requestParams);\r\n\r\nexport const PciModalSetMutation = ({ oldPci, newPci }) => `\r\n mutation {\r\n removeOldPci: updateImage(imageId: ${oldPci}, primaryFlag: \"N\") {\r\n ...Image\r\n }\r\n setNewPci: updateImage(imageId: ${newPci}, primaryFlag: \"Y\") {\r\n ...Image\r\n }\r\n }\r\n\r\n fragment Image on Image {\r\n ${ImageQueryFields}\r\n }\r\n`;\r\n","import { QueryFailAction, QuerySuccessAction, QueryRequestAction } from '@/redux/models/actions';\r\nimport { modelRequestSchema } from '@/app/app.entities';\r\nimport { Community } from '@/models/Community';\r\nimport { MutationSuccessAction, MutationFailAction } from '@/redux/forms/actions';\r\nimport { PciModalImagesRequestQuery, PciModalSetMutation } from './api';\r\nimport { PCI_MODAL_IMAGES_REQUEST, PCI_MODAL_IMAGES_SUCCESS, PCI_MODAL_IMAGES_FAIL, PCI_MODAL_SET_REQUEST, PCI_MODAL_SET_SUCCESS, PCI_MODAL_SET_FAIL } from './types';\r\n\r\n/**\r\n * Action creator to request the images to the PCI Modal selector\r\n * @param {*} requestParams\r\n */\r\nexport const pciModalImagesRequest = QueryRequestAction(PCI_MODAL_IMAGES_REQUEST, PciModalImagesRequestQuery);\r\n/**\r\n * Action creator to store the successfully store images\r\n * @param {*} entities\r\n * @param {*} meta\r\n */\r\nexport const pciModalImagesSuccess = QuerySuccessAction(PCI_MODAL_IMAGES_SUCCESS);\r\n/**\r\n * Action creator to store / display any possible error that might occur on the request\r\n * @param {*} error\r\n */\r\nexport const pciModalImagesFail = QueryFailAction(PCI_MODAL_IMAGES_FAIL);\r\n\r\n/**\r\n * Action creator to set the new PCI and deselect the previous one\r\n * @param {*} requestParams\r\n */\r\nexport const pciModalSetRequest = (requestParams, id) => ({\r\n type: PCI_MODAL_SET_REQUEST,\r\n mutation: PciModalSetMutation(requestParams),\r\n data: { id },\r\n meta: { schema: modelRequestSchema, model: Community() },\r\n noEntity: true,\r\n});\r\n/**\r\n * Action creator to store the successfully store images\r\n * @param {*} entities\r\n * @param {*} meta\r\n */\r\nexport const pciModalSetSuccess = MutationSuccessAction(PCI_MODAL_SET_SUCCESS);\r\n/**\r\n * Action creator to store / display any possible error that might occur on the request\r\n * @param {*} error\r\n */\r\nexport const pciModalSetFail = MutationFailAction(PCI_MODAL_SET_FAIL);\r\n","import { takeLatest } from 'redux-saga/effects';\r\nimport { PCI_MODAL_IMAGES_REQUEST, PCI_MODAL_SET_REQUEST } from './types';\r\nimport { getModels } from '../../../../../@redux/models/sagas';\r\nimport { pciModalImagesSuccess, pciModalImagesFail, pciModalSetSuccess, pciModalSetFail } from './actions';\r\nimport { formsChannel } from '../../../../../@redux/forms/sagas';\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const pciSagas = [\r\n /**\r\n * This generator listens to PCI_MODAL_IMAGES_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(PCI_MODAL_IMAGES_REQUEST, getModels, pciModalImagesSuccess, pciModalImagesFail),\r\n /**\r\n * This generator listens to PCI_MODAL_IMAGES_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n formsChannel(PCI_MODAL_SET_REQUEST, pciModalSetSuccess, pciModalSetFail),\r\n];\r\n","/**\r\n * Generic Interactive Media Request\r\n */\r\nexport const INTERACTIVE_MEDIA_QUERY_REQUEST = 'bdxlive/interactive_media/interactive_media_query_request';\r\nexport const INTERACTIVE_MEDIA_QUERY_SUCCESS = 'bdxlive/interactive_media/interactive_media_query_success';\r\nexport const INTERACTIVE_MEDIA_QUERY_FAIL = 'bdxlive/interactive_media/interactive_media_query_fail';\r\n\r\n/**\r\n * Generic Interactive Media Update\r\n */\r\nexport const INTERACTIVE_MEDIA_UPDATE_REQUEST = 'bdxlive/interactive_media/interactive_media_update_request';\r\nexport const INTERACTIVE_MEDIA_UPDATE_SUCCESS = 'bdxlive/interactive_media/interactive_media_update_success';\r\nexport const INTERACTIVE_MEDIA_UPDATE_FAIL = 'bdxlive/interactive_media/interactive_media_update_fail';\r\n\r\n/**\r\n * Generic Interactive Media Insert\r\n */\r\nexport const INTERACTIVE_MEDIA_INSERT_REQUEST = 'bdxlive/interactive_media/interactive_media_insert_request';\r\nexport const INTERACTIVE_MEDIA_INSERT_SUCCESS = 'bdxlive/interactive_media/interactive_media_insert_success';\r\nexport const INTERACTIVE_MEDIA_INSERT_FAIL = 'bdxlive/interactive_media/interactive_media_insert_fail';\r\n\r\nexport const INTERACTIVE_MEDIA_SAVE_REQUEST = 'bdxlive/interactive_media/interactive_media_save_request';\r\nexport const INTERACTIVE_MEDIA_SAVE_SUCCESS = 'bdxlive/interactive_media/interactive_media_save_success';\r\nexport const INTERACTIVE_MEDIA_SAVE_FAIL = 'bdxlive/interactive_media/interactive_media_save_fail';\r\n","import { Model } from '../utils/models';\r\nimport { interactiveMediaSchema } from '../app.entities';\r\n\r\nexport const InteractiveMedia = () =>\r\n new Model({\r\n name: 'interactiveMedias',\r\n model: 'interactiveMedia',\r\n describerFields: { id: 'id' },\r\n schema: interactiveMediaSchema,\r\n template(id, { communityId, planId, specId, lotId } = {}) {\r\n return {\r\n id,\r\n type: '',\r\n title: '',\r\n websiteUrl: '',\r\n embedCode: '',\r\n flash: false,\r\n displayOn: ['Nhs'],\r\n communityId,\r\n planId,\r\n specId,\r\n lotId,\r\n };\r\n },\r\n });\r\n","import { INTERACTIVE_MEDIA_QUERY_REQUEST, INTERACTIVE_MEDIA_QUERY_SUCCESS, INTERACTIVE_MEDIA_QUERY_FAIL, INTERACTIVE_MEDIA_UPDATE_REQUEST, INTERACTIVE_MEDIA_UPDATE_SUCCESS, INTERACTIVE_MEDIA_INSERT_REQUEST, INTERACTIVE_MEDIA_INSERT_SUCCESS, INTERACTIVE_MEDIA_INSERT_FAIL, INTERACTIVE_MEDIA_UPDATE_FAIL, INTERACTIVE_MEDIA_SAVE_REQUEST, INTERACTIVE_MEDIA_SAVE_SUCCESS, INTERACTIVE_MEDIA_SAVE_FAIL } from './types';\r\nimport { InteractiveMediaQuery, InteractiveMediaUpdateMutation, InteractiveMediaInsertMutation, InteractiveMediaUpdateBulkMutation, InteractiveMediaSaveMutation } from './api';\r\nimport { modelRequestSchema, modelMutateSchema } from '../../../../app.entities';\r\nimport { InteractiveMedia } from '@/models/InteractiveMedia';\r\n\r\n/**\r\n * Generic Interactive Media Request\r\n */\r\n/**\r\n * Model Request Action Creator Interactive Media\r\n * @param {*} requestArguments api request\r\n */\r\nexport const interactiveMediaQueryRequest = (requestArguments = {}) => ({ type: INTERACTIVE_MEDIA_QUERY_REQUEST, query: InteractiveMediaQuery(requestArguments), meta: { schema: modelRequestSchema } });\r\n/**\r\n * Model success action creator for Interactive Media\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const interactiveMediaQuerySuccess = (entities, meta) => ({ type: INTERACTIVE_MEDIA_QUERY_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model request fail action creator for Interactive Media\r\n * @param {*} error cause\r\n */\r\nexport const interactiveMediaQueryFail = (error) => ({ type: INTERACTIVE_MEDIA_QUERY_FAIL, error: true, data: error });\r\n\r\nconst errorMessage = 'An error occurred while saving the Interactive Media. Please, verify the information you entered and try again.';\r\n\r\nexport const interactiveMediaInsertRequest = (id) => ({ type: INTERACTIVE_MEDIA_INSERT_REQUEST, data: { entityId: id }, mutation: InteractiveMediaInsertMutation, meta: { model: InteractiveMedia(), schema: modelMutateSchema } });\r\n\r\nexport const interactiveMediaInsertSuccess = (entities, meta, id) => ({ type: INTERACTIVE_MEDIA_INSERT_SUCCESS, data: { id, entities }, meta });\r\n\r\nexport const interactiveMediaInsertFail = (error, id) => ({ type: INTERACTIVE_MEDIA_INSERT_FAIL, error: true, data: { entityId: id, appMessage: errorMessage, errorMessage: error.message }, meta: { model: InteractiveMedia() } });\r\n\r\n/**\r\n * Generic Interactive Media Mutation\r\n */\r\n/**\r\n * Model Mutation Action Creator Interactive Media\r\n * @param {*} requestArguments api request\r\n */\r\nexport const interactiveMediaUpdateRequest = (entityId, changes) => ({ type: INTERACTIVE_MEDIA_UPDATE_REQUEST, mutation: Array.isArray(changes) && !entityId ? InteractiveMediaUpdateBulkMutation(changes) : InteractiveMediaUpdateMutation, data: { entityId }, meta: { model: InteractiveMedia(), schema: modelMutateSchema, loadingByEntity: false } });\r\n/**\r\n * Model Mutation success action creator for Interactive Media\r\n * @param {*} entities data to be normalized on normalizr middleware\r\n * @param {*} meta schema metadata to be used on normalizr\r\n */\r\nexport const interactiveMediaUpdateSuccess = (entities, meta) => ({ type: INTERACTIVE_MEDIA_UPDATE_SUCCESS, data: { entities }, meta });\r\n\r\n/**\r\n * Model Mutation fail action creator for Interactive Media\r\n * @param {*} error cause\r\n */\r\nexport const interactiveMediaUpdateFail = (error, id) => ({ type: INTERACTIVE_MEDIA_UPDATE_FAIL, error: true, data: { entityId: id, appMessage: errorMessage, errorMessage: error.message }, meta: { model: InteractiveMedia() } });\r\n\r\nexport const interactiveMediaSaveRequest = (entityId, added, modified, deleted) => ({\r\n type: INTERACTIVE_MEDIA_SAVE_REQUEST,\r\n mutation: InteractiveMediaSaveMutation(added, modified, deleted),\r\n data: { entityId },\r\n meta: { model: InteractiveMedia(), schema: modelMutateSchema, loadingByEntity: false },\r\n noEntity: true,\r\n});\r\nexport const interactiveMediaSaveSuccess = (entities, meta) => ({ type: INTERACTIVE_MEDIA_SAVE_SUCCESS, data: { entities }, meta });\r\nexport const interactiveMediaSaveFail = (error, id) => ({ type: INTERACTIVE_MEDIA_SAVE_FAIL, error: true, data: { entityId: id, appMessage: errorMessage, errorMessage: error.message }, meta: { model: InteractiveMedia(), loadingByEntity: false } });\r\n","import { INTERACTIVE_MEDIA_QUERY_REQUEST, INTERACTIVE_MEDIA_UPDATE_REQUEST, INTERACTIVE_MEDIA_INSERT_REQUEST, INTERACTIVE_MEDIA_SAVE_REQUEST } from './types';\r\nimport { interactiveMediaQuerySuccess, interactiveMediaQueryFail, interactiveMediaUpdateSuccess, interactiveMediaUpdateFail, interactiveMediaInsertSuccess, interactiveMediaInsertFail, interactiveMediaSaveSuccess, interactiveMediaSaveFail } from './actions';\r\nimport { getModelsChannel } from '../../../../@redux/models/sagas';\r\nimport { formsChannel } from '../../../../@redux/forms/sagas';\r\n\r\n/**\r\n * Interactive Media Saga listeners\r\n * @type {Array}\r\n */\r\nexport const interactiveMediaSagas = [\r\n /**\r\n * This generator listens to INTERACTIVE_MEDIA_QUERY_REQUEST\r\n * @param { String } pattern action type to be listened\r\n * @param { Function } actionSuccess action to be executed if the saga is executed successfully\r\n * @param { Function } actionFailed action to be executed if the saga is execution fails\r\n */\r\n getModelsChannel(INTERACTIVE_MEDIA_QUERY_REQUEST, interactiveMediaQuerySuccess, interactiveMediaQueryFail),\r\n\r\n /**\r\n * This generator listens to INTERACTIVE_MEDIA_UPDATE_REQUEST\r\n * @param { String } pattern action type to be listened\r\n * @param { Function } actionSuccess action to be executed if the saga is executed successfully\r\n * @param { Function } actionFailed action to be executed if the saga is execution fails\r\n */\r\n formsChannel(INTERACTIVE_MEDIA_UPDATE_REQUEST, interactiveMediaUpdateSuccess, interactiveMediaUpdateFail),\r\n\r\n /**\r\n * This generator listens to INTERACTIVE_MEDIA_INSERT_REQUEST\r\n * @param { String } pattern action type to be listened\r\n * @param { Function } actionSuccess action to be executed if the saga is executed successfully\r\n * @param { Function } actionFailed action to be executed if the saga is execution fails\r\n */\r\n formsChannel(INTERACTIVE_MEDIA_INSERT_REQUEST, interactiveMediaInsertSuccess, interactiveMediaInsertFail),\r\n\r\n formsChannel(INTERACTIVE_MEDIA_SAVE_REQUEST, interactiveMediaSaveSuccess, interactiveMediaSaveFail),\r\n];\r\n","/**\r\n * List of API calls methods used by the configuration redux\r\n * @author Gary Valverde Hampton \r\n */\r\n\r\n/**\r\n * Client Import\r\n */\r\nimport { appApiClient } from '../../utils/api/api';\r\n\r\n/**\r\n * Endpoints\r\n */\r\nconst API_CONFIG = '/configuration/settings';\r\n\r\n/**\r\n * Endpoint request\r\n */\r\nexport const requestConfig = () => appApiClient.get(API_CONFIG);\r\n","/**\r\n * Get configuration saga\r\n * @author Gary Valverde Hampton \r\n */\r\nimport { takeEvery, call, put } from 'redux-saga/effects';\r\nimport { requestConfig } from './api';\r\nimport { CONFIG_REQUEST } from './types';\r\nimport { configSuccess, configFail } from './actions';\r\nimport { multipleAttempts } from '../../utils/saga/saga-helpers';\r\n\r\nconst getConfiguration = multipleAttempts(\r\n function* getConfig() {\r\n // The request is executed\r\n const response = yield call(requestConfig);\r\n // Update the state\r\n yield put(configSuccess(response.data.Result));\r\n },\r\n function* handleError(e) {\r\n yield put(configFail(e));\r\n }\r\n);\r\n\r\nexport const configSagas = [takeEvery(CONFIG_REQUEST, getConfiguration)];\r\n","/**\r\n * Mutation Types\r\n */\r\n/**\r\n * Assign [n] plans to [n] communities\r\n * This generates a child on every community provided, based on each parent plan or standalone provided\r\n */\r\nexport const ASSIGN_PLANS_COMMUNITIES_REQUEST = 'bdxlive/plans/assign_plans_communities_request';\r\nexport const ASSIGN_PLANS_COMMUNITIES_SUCCESS = 'bdxlive/plans/assign_plans_communities_success';\r\nexport const ASSIGN_PLANS_COMMUNITIES_FAIL = 'bdxlive/plans/assign_plans_communities_fail';\r\n\r\n/**\r\n * Break [n] plans inheritance\r\n */\r\nexport const BREAK_PLANS_INHERITANCE_REQUEST = 'bdxlive/plans/break_plans_inheritance_request';\r\nexport const BREAK_PLANS_INHERITANCE_SUCCESS = 'bdxlive/plans/break_plans_inheritance_success';\r\nexport const BREAK_PLANS_INHERITANCE_FAIL = 'bdxlive/plans/break_plans_inheritance_fail';\r\n\r\nexport const PLAN_LIBRARY_ASSIGNED = 'bdxlive/community_detail/manage_homes/plan_library_assigned';\r\n\r\nexport const UPDATE_PLANS_STATUS_REQUEST = 'bdxlive/plans/update_plans_status_request';\r\nexport const UPDATE_PLANS_STATUS_SUCCESS = 'bdxlive/plans/update_plans_status_success';\r\nexport const UPDATE_PLANS_STATUS_FAIL = 'bdxlive/plans/update_plans_status_fail';\r\n","/**\r\n * Assign plans to communities\r\n * @param { Array } params.communityIds\r\n * @param { Array } params.planIds\r\n */\r\nexport const assignPlansCommunities = ({ communityIds, planIds }) => `\r\n mutation {\r\n assignPlansToCommunities(communityIds: [${communityIds?.filter(Number.isFinite)}], planIds: [${planIds?.filter(Number.isFinite)}]) {\r\n id\r\n parentPlan {\r\n id\r\n name\r\n parentFlag\r\n parentPlanId\r\n }\r\n community {\r\n id\r\n name\r\n }\r\n parentFlag\r\n parentPlanId\r\n communityId\r\n }\r\n }\r\n`;\r\n\r\nexport const breakPlansInheritance = ({ planIds }) => `\r\n mutation {\r\n breakParentPlanInheritance(childPlanIds: [${planIds?.filter(Number.isFinite)}]) {\r\n id\r\n parentPlan {\r\n id\r\n name\r\n parentFlag\r\n parentPlanId\r\n }\r\n community {\r\n id\r\n name\r\n }\r\n parentFlag\r\n parentPlanId\r\n communityId\r\n }\r\n }\r\n`;\r\n\r\nexport const updatePlansStatus = ({ planIds, status }) => `\r\n mutation {\r\n ${planIds?.map(\r\n (id) => `\r\n plan${id}: updatePlan(id: ${id}, status: ${status}) {\r\n id\r\n status\r\n }\r\n `\r\n )}\r\n }\r\n`;\r\n","import { MutationSuccessAction, MutationFailAction } from '@/redux/forms/actions';\r\nimport { ASSIGN_PLANS_COMMUNITIES_REQUEST, ASSIGN_PLANS_COMMUNITIES_SUCCESS, ASSIGN_PLANS_COMMUNITIES_FAIL, PLAN_LIBRARY_ASSIGNED, BREAK_PLANS_INHERITANCE_REQUEST, BREAK_PLANS_INHERITANCE_SUCCESS, BREAK_PLANS_INHERITANCE_FAIL, UPDATE_PLANS_STATUS_REQUEST, UPDATE_PLANS_STATUS_FAIL, UPDATE_PLANS_STATUS_SUCCESS } from './types';\r\nimport { assignPlansCommunities, breakPlansInheritance, updatePlansStatus } from './api';\r\nimport { modelMutateSchema } from '@/app/app.entities';\r\n\r\nexport const assignPlansCommunitiesRequest = ({ communityIds, planIds, id, model, noEntity }) => ({\r\n type: ASSIGN_PLANS_COMMUNITIES_REQUEST,\r\n mutation: assignPlansCommunities({ communityIds, planIds }),\r\n data: { id },\r\n meta: { model, schema: modelMutateSchema },\r\n noEntity,\r\n});\r\nexport const assignPlansCommunitiesSuccess = MutationSuccessAction(ASSIGN_PLANS_COMMUNITIES_SUCCESS);\r\nexport const assignPlansCommunitiesFail = MutationFailAction(ASSIGN_PLANS_COMMUNITIES_FAIL);\r\n\r\nexport const breakPlansInheritanceRequest = ({ planIds, id, model, noEntity }) => ({\r\n type: BREAK_PLANS_INHERITANCE_REQUEST,\r\n mutation: breakPlansInheritance({ planIds }),\r\n data: { id },\r\n meta: { model, schema: modelMutateSchema },\r\n noEntity,\r\n});\r\nexport const breakPlansInheritanceSuccess = MutationSuccessAction(BREAK_PLANS_INHERITANCE_SUCCESS);\r\nexport const breakPlansInheritanceFail = MutationFailAction(BREAK_PLANS_INHERITANCE_FAIL);\r\n\r\nexport const planLibraryAssigned = ({ assignPlansToCommunities }, meta) => ({ type: PLAN_LIBRARY_ASSIGNED, data: { assignedPlans: assignPlansToCommunities }, meta });\r\n\r\nexport const updatePlansStatusRequest = ({ planIds, status, id, model, noEntity }) => ({\r\n type: UPDATE_PLANS_STATUS_REQUEST,\r\n mutation: updatePlansStatus({ planIds, status }),\r\n data: { id },\r\n meta: { model, schema: modelMutateSchema },\r\n noEntity,\r\n});\r\nexport const updatePlansStatusSuccess = MutationSuccessAction(UPDATE_PLANS_STATUS_SUCCESS);\r\nexport const updatePlansStatusFail = MutationFailAction(UPDATE_PLANS_STATUS_FAIL);\r\n","import { formsChannel } from '@/redux/forms/sagas';\r\nimport { ASSIGN_PLANS_COMMUNITIES_REQUEST, BREAK_PLANS_INHERITANCE_REQUEST, UPDATE_PLANS_STATUS_REQUEST } from './types';\r\nimport { assignPlansCommunitiesSuccess, assignPlansCommunitiesFail, planLibraryAssigned, breakPlansInheritanceSuccess, breakPlansInheritanceFail, updatePlansStatusFail, updatePlansStatusSuccess } from './actions';\r\n\r\n/**\r\n * Saga definitions\r\n */\r\nexport const plansSagas = [\r\n /**\r\n * This generator listens to BREAK_PLANS_INHERITANCE_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n formsChannel(BREAK_PLANS_INHERITANCE_REQUEST, breakPlansInheritanceSuccess, breakPlansInheritanceFail),\r\n /**\r\n * This generator listens to ASSIGN_PLANS_COMMUNITIES_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n formsChannel(ASSIGN_PLANS_COMMUNITIES_REQUEST, assignPlansCommunitiesSuccess, assignPlansCommunitiesFail, planLibraryAssigned),\r\n /**\r\n * This generator listens to UPDATE_PLANS_STATUS_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n formsChannel(UPDATE_PLANS_STATUS_REQUEST, updatePlansStatusSuccess, updatePlansStatusFail),\r\n];\r\n","export const getBuilderDivisionsQuery = ({ builderId }) => `\r\n query {\r\n builders(builderId: ${builderId}) {\r\n builderId\r\n builderName\r\n divisionsCount\r\n canadianData\r\n planLibraryType\r\n autoFeedFlag\r\n soldDataFlag\r\n divisions (top: 200) {\r\n builderId\r\n builderName\r\n brandId\r\n statusId\r\n orgTypeCode\r\n autoFeedFlag\r\n priceSuppressionFlag\r\n displayChannelSelection {\r\n displayOnWebArch\r\n displayOnWeb\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const updateBuilderServiceQuery = ({ builderId, service, active }) => `\r\n mutation {\r\n updateBuilderService(builderId: ${builderId}, services: [ { service: ${service}, value: ${active} } ]) {\r\n builderId\r\n optIn\r\n serviceId\r\n }\r\n }\r\n`;\r\n\r\nexport const getBuilderDisplayChannelQuery = ({ builderId }) => `\r\n query {\r\n builders(builderId: ${builderId}) {\r\n builderId\r\n parentBuilderId\r\n partner {\r\n partnerId\r\n }\r\n displayChannelSelection {\r\n displayOnNhsPro\r\n displayOnKiosk\r\n displayOnRdc\r\n displayOnWeb\r\n displayOnSales\r\n displayOnNhs\r\n displayOnWebArch\r\n } \r\n }\r\n }\r\n`;\r\n\r\nexport const divisionsByBuilder = ({ builderId }) => `\r\n query {\r\n builders(top: 500 divOnly: true sortBy:[{order:Asc, field: BuilderName}], parentId:${builderId}, status:[Approved, Inactive, Submitted]){\r\n builderId\r\n builderName\r\n parentBuilderId\r\n statusId\r\n hqState\r\n }\r\n }\r\n`;\r\n\r\nexport const getBuilderCount = ({ builderId }) => `\r\nquery {\r\n builders(builderId: ${builderId}) {\r\n builderId\r\n builderName\r\n divisionsCountApproved : divisionsCount(status: Approved)\r\n communityCountApproved : communityCount(status: Approved)\r\n plansCount\r\n specsCount\r\n marketsCount\r\n dateLastFeedProccessed\r\n }\r\n}\r\n`;\r\n\r\nexport const getBuilderProducts = ({ userId, builderId }) => `\r\nquery builderProducts {\r\n users(userId: ${userId}) {\r\n userId\r\n portalProducts (builderId: ${builderId}){\r\n groupDisplayOrder\r\n groupName\r\n participationFlag\r\n productDisplayOrder\r\n productName\r\n }\r\n }\r\n}`;\r\n\r\nexport const getBuilderSpotlightInfo = ({ builderId, startDate }) => `\r\nquery builderSpotlightInfo{\r\n builders(builderId: ${builderId}, startDate: \"${startDate}\") {\r\n builderId\r\n builderName\r\n hasSpotlightPendingSlots\r\n hasBuilderSpotlightContract\r\n }\r\n}`;\r\n\r\nexport const getBuilderMissedRecleads = ({ builderId }) => `\r\nquery builderMissedRecleads{\r\n builders(builderId: ${builderId}) {\r\n builderId\r\n builderName\r\n recommendedLeadsSign\r\n missedRecLeads {\r\n month\r\n total\r\n }\r\n }\r\n}`;\r\n","import { QueryRequestAction, QuerySuccessAction, QueryFailAction } from '@/redux/models/actions';\r\nimport { GET_BUILDER_DIVISIONS_REQUEST, GET_BUILDER_DIVISIONS_SUCCESS, GET_BUILDER_DIVISIONS_FAIL, GET_BUILDER_DISPLAY_CHANNEL_REQUEST, GET_BUILDER_DISPLAY_CHANNEL_SUCCESS, GET_BUILDER_DISPLAY_CHANNEL_FAIL, GET_PARENT_DIVISIONS_REQUEST, GET_PARENT_DIVISIONS_SUCCESS, GET_PARENT_DIVISIONS_FAIL, GET_BUILDER_COUNT_REQUEST, GET_BUILDER_COUNT_SUCCESS, GET_BUILDER_COUNT_FAIL, UPDATE_BUILDER_SERVICE_SUCCESS, UPDATE_BUILDER_SERVICE_FAIL, UPDATE_BUILDER_SERVICE_REQUEST, GET_BUILDER_PRODUCTS_REQUEST, GET_BUILDER_PRODUCTS_SUCCESS, GET_BUILDER_PRODUCTS_FAIL, GET_BUILDER_SPOTLIHGT_INFO_REQUEST, GET_BUILDER_SPOTLIHGT_INFO_SUCCESS, GET_BUILDER_SPOTLIHGT_INFO_FAIL, GET_BUILDER_MISSED_RECLEADS_REQUEST, GET_BUILDER_MISSED_RECLEADS_SUCCESS, GET_BUILDER_MISSED_RECLEADS_FAIL } from './types';\r\nimport { getBuilderDivisionsQuery, getBuilderDisplayChannelQuery, divisionsByBuilder, getBuilderCount, updateBuilderServiceQuery, getBuilderProducts, getBuilderSpotlightInfo, getBuilderMissedRecleads } from './api';\r\n\r\nexport const getBuilderDivisionsRequest = QueryRequestAction(GET_BUILDER_DIVISIONS_REQUEST, getBuilderDivisionsQuery);\r\nexport const getBuilderDivisionsSuccess = QuerySuccessAction(GET_BUILDER_DIVISIONS_SUCCESS);\r\nexport const getBuilderDivisionsFail = QueryFailAction(GET_BUILDER_DIVISIONS_FAIL);\r\n\r\nexport const getBuilderDisplayChannelRequest = QueryRequestAction(GET_BUILDER_DISPLAY_CHANNEL_REQUEST, getBuilderDisplayChannelQuery);\r\nexport const getBuilderDisplayChannelSuccess = QuerySuccessAction(GET_BUILDER_DISPLAY_CHANNEL_SUCCESS);\r\nexport const getBuilderDisplayChannelFail = QueryFailAction(GET_BUILDER_DISPLAY_CHANNEL_FAIL);\r\n\r\nexport const getParentDivisionsRequest = QueryRequestAction(GET_PARENT_DIVISIONS_REQUEST, divisionsByBuilder);\r\nexport const getParentDivisionsSuccess = QuerySuccessAction(GET_PARENT_DIVISIONS_SUCCESS);\r\nexport const getParentDivisionsFail = QueryFailAction(GET_PARENT_DIVISIONS_FAIL);\r\n\r\nexport const getbuilderCountRequest = QueryRequestAction(GET_BUILDER_COUNT_REQUEST, getBuilderCount);\r\nexport const getbuilderCountSuccess = QuerySuccessAction(GET_BUILDER_COUNT_SUCCESS);\r\nexport const getbuilderCountFail = QueryFailAction(GET_BUILDER_COUNT_FAIL);\r\n\r\nexport const updateBuilderServiceRequest = QueryRequestAction(UPDATE_BUILDER_SERVICE_REQUEST, updateBuilderServiceQuery);\r\nexport const updateBuilderServiceSuccess = QuerySuccessAction(UPDATE_BUILDER_SERVICE_SUCCESS);\r\nexport const updateBuilderServiceFail = QueryFailAction(UPDATE_BUILDER_SERVICE_FAIL);\r\n\r\nexport const getbuilderProductsRequest = QueryRequestAction(GET_BUILDER_PRODUCTS_REQUEST, getBuilderProducts);\r\nexport const getbuilderProductsSuccess = QuerySuccessAction(GET_BUILDER_PRODUCTS_SUCCESS);\r\nexport const getbuilderProductsFail = QueryFailAction(GET_BUILDER_PRODUCTS_FAIL);\r\n\r\nexport const getbuilderSpotlightInfoRequest = QueryRequestAction(GET_BUILDER_SPOTLIHGT_INFO_REQUEST, getBuilderSpotlightInfo);\r\nexport const getbuilderSpotlightInfoSuccess = QuerySuccessAction(GET_BUILDER_SPOTLIHGT_INFO_SUCCESS);\r\nexport const getbuilderSpotlightInfoFail = QueryFailAction(GET_BUILDER_SPOTLIHGT_INFO_FAIL);\r\n\r\nexport const getbuilderMissedRecleadsRequest = QueryRequestAction(GET_BUILDER_MISSED_RECLEADS_REQUEST, getBuilderMissedRecleads);\r\nexport const getbuilderMissedRecleadsSuccess = QuerySuccessAction(GET_BUILDER_MISSED_RECLEADS_SUCCESS);\r\nexport const getbuilderMissedRecleadsFail = QueryFailAction(GET_BUILDER_MISSED_RECLEADS_FAIL);\r\n","/**\r\n * Switches keys for values on a provided object\r\n * @param {*} object the object to be reversed\r\n * @returns the reversed object\r\n */\r\nexport const objectReverse = (object) => Object.fromEntries(Object.entries(object).map((item) => item.reverse()));\r\n","import { takeLatest } from 'redux-saga/effects';\r\nimport { getModelsChannel, getModelsRetry } from '@/redux/models/sagas';\r\nimport { GET_BUILDER_DIVISIONS_REQUEST, GET_BUILDER_DISPLAY_CHANNEL_REQUEST, GET_PARENT_DIVISIONS_REQUEST, GET_BUILDER_COUNT_REQUEST, UPDATE_BUILDER_SERVICE_REQUEST, GET_BUILDER_PRODUCTS_REQUEST, GET_BUILDER_SPOTLIHGT_INFO_REQUEST, GET_BUILDER_MISSED_RECLEADS_REQUEST } from './types';\r\nimport { getBuilderDivisionsSuccess, getBuilderDivisionsFail, getBuilderDisplayChannelSuccess, getBuilderDisplayChannelFail, getParentDivisionsSuccess, getParentDivisionsFail, getbuilderCountSuccess, getbuilderCountFail, updateBuilderServiceFail, updateBuilderServiceSuccess, getbuilderProductsSuccess, getbuilderProductsFail, getbuilderSpotlightInfoSuccess, getbuilderSpotlightInfoFail, getbuilderMissedRecleadsSuccess, getbuilderMissedRecleadsFail } from './actions';\r\nimport { empty } from '@/lodash/empty';\r\nimport { objectReverse } from '@/lodash/objectReverse';\r\nimport { builderServiceCode } from '@/constants/bdx-lookups';\r\n\r\n/**\r\n * Re format the resuts from builder service so we can add them to the builder entity\r\n */\r\nfunction transformBuilderServiceResults(results, { builderId, service }) {\r\n if (!empty(results?.updateBuilderService)) {\r\n results.builders = [{ builderId }];\r\n results.builders[0].services = results.updateBuilderService.map(({ serviceId, optIn }) => ({ id: serviceId, name: service, value: optIn }));\r\n if (service === objectReverse(builderServiceCode)[builderServiceCode.RCMLeadProgram]) {\r\n results.builders[0].recommendedLeadsSign = true;\r\n }\r\n }\r\n delete results.updateBuilderService;\r\n}\r\n\r\nexport const builderSagas = [\r\n /**\r\n * This generator listens to PLAN_CONTEXT_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function* } saga operation to be executed\r\n * @param { ...* } args arguments to be passed to the started task\r\n */\r\n takeLatest(GET_BUILDER_DIVISIONS_REQUEST, getModelsRetry, getBuilderDivisionsSuccess, getBuilderDivisionsFail, null),\r\n takeLatest(GET_BUILDER_DISPLAY_CHANNEL_REQUEST, getModelsRetry, getBuilderDisplayChannelSuccess, getBuilderDisplayChannelFail, null),\r\n takeLatest(GET_PARENT_DIVISIONS_REQUEST, getModelsRetry, getParentDivisionsSuccess, getParentDivisionsFail, null),\r\n takeLatest(GET_BUILDER_COUNT_REQUEST, getModelsRetry, getbuilderCountSuccess, getbuilderCountFail, null),\r\n takeLatest(GET_BUILDER_PRODUCTS_REQUEST, getModelsRetry, getbuilderProductsSuccess, getbuilderProductsFail, null),\r\n takeLatest(GET_BUILDER_SPOTLIHGT_INFO_REQUEST, getModelsRetry, getbuilderSpotlightInfoSuccess, getbuilderSpotlightInfoFail, null),\r\n takeLatest(GET_BUILDER_MISSED_RECLEADS_REQUEST, getModelsRetry, getbuilderMissedRecleadsSuccess, getbuilderMissedRecleadsFail, null),\r\n getModelsChannel(UPDATE_BUILDER_SERVICE_REQUEST, updateBuilderServiceSuccess, updateBuilderServiceFail, null, transformBuilderServiceResults, null),\r\n];\r\n","/*\r\nThis file contains string literals for your action types.\r\nThis provides an easy reference for the actions available.\r\nThese strings are exported as an object literal which can then be imported\r\ninto your reducers and action creators instead of hard-coding them.\r\nAlthough maintaining a separate file containing just your action\r\ntypes is optional, it is highly recommended.\r\n*/\r\n\r\n// ACTION TYPES\r\nexport const LOT_DETAIL_REQUEST = 'bdxlive/lot_detail/info_request';\r\nexport const LOT_DETAIL_SUCCESS = 'bdxlive/lot_detail/info_success';\r\nexport const LOT_DETAIL_FAIL = 'bdxlive/lot_detail/info_fail';\r\n\r\nexport const LOT_DETAIL_SAVE_REQUEST = 'bdxlive/lot_detail/save_request';\r\nexport const LOT_DETAIL_SAVE_SUCCESS = 'bdxlive/lot_detail/save_success';\r\nexport const LOT_DETAIL_SAVE_FAIL = 'bdxlive/lot_detail/save_fail';\r\n\r\nexport const LOT_HEADER_REQUEST = 'bdxlive/lot_header/header_request';\r\nexport const LOT_HEADER_SUCCESS = 'bdxlive/lot_header/header_success';\r\nexport const LOT_HEADER_FAIL = 'bdxlive/lot_header/header_fail';\r\n\r\nexport const LOT_IMAGES_QUERY_REQUEST = 'bdxlive/lot_detail/images/images_query_request';\r\nexport const LOT_IMAGES_QUERY_SUCCESS = 'bdxlive/lot_detail/images/images_query_success';\r\nexport const LOT_IMAGES_QUERY_FAIL = 'bdxlive/lot_detail/images/images_query_fail';\r\n\r\nexport const LOT_VIDEOS_QUERY_REQUEST = 'bdxlive/lot_detail/videos/videos_query_request';\r\nexport const LOT_VIDEOS_QUERY_SUCCESS = 'bdxlive/lot_detail/videos/videos_query_success';\r\nexport const LOT_VIDEOS_QUERY_FAIL = 'bdxlive/lot_detail/videos/videos_query_fail';\r\n\r\nexport const LOT_INTERACTIVE_MEDIA_QUERY_REQUEST = 'bdxlive/lot_detail/interactive_media/interactive_media_query_request';\r\nexport const LOT_INTERACTIVE_MEDIA_QUERY_SUCCESS = 'bdxlive/lot_detail/interactive_media/interactive_media_query_success';\r\nexport const LOT_INTERACTIVE_MEDIA_QUERY_FAIL = 'bdxlive/lot_detail/interactive_media/interactive_media_query_fail';\r\n\r\nexport const LOTS_REQUEST = 'bdxlive/lot_detail/lots_request';\r\nexport const LOTS_SUCCESS = 'bdxlive/lot_detail/lots_success';\r\nexport const LOTS_FAIL = 'bdxlive/lot_detail/lots_fail';\r\n","import { QueryFailAction, QueryRequestAction, QuerySuccessAction } from '@/redux/models/actions';\r\nimport { LOT_DETAIL_FAIL, LOT_DETAIL_REQUEST, LOT_DETAIL_SUCCESS, LOT_HEADER_REQUEST, LOT_HEADER_SUCCESS, LOT_HEADER_FAIL, LOT_IMAGES_QUERY_REQUEST, LOT_IMAGES_QUERY_SUCCESS, LOT_IMAGES_QUERY_FAIL, LOT_VIDEOS_QUERY_REQUEST, LOT_VIDEOS_QUERY_SUCCESS, LOT_VIDEOS_QUERY_FAIL, LOT_DETAIL_SAVE_REQUEST, LOT_DETAIL_SAVE_SUCCESS, LOT_DETAIL_SAVE_FAIL, LOT_INTERACTIVE_MEDIA_QUERY_REQUEST, LOT_INTERACTIVE_MEDIA_QUERY_SUCCESS, LOT_INTERACTIVE_MEDIA_QUERY_FAIL, LOTS_REQUEST, LOTS_SUCCESS, LOTS_FAIL } from './types';\r\nimport { insertLotMutation, updateLotMutation, lotBasicInfo, LotImagesQuery, LotVideosQuery, requestLotApi, LotInteractiveMediaQuery, lotsQuery } from './api';\r\nimport { modelMutateSchema, modelRequestSchema } from '@/app/app.entities';\r\nimport { Lot } from '@/models/Lot';\r\nimport { Community } from '@/models/Community';\r\n\r\nexport const lotDetailRequest = QueryRequestAction(LOT_DETAIL_REQUEST, requestLotApi);\r\nexport const lotDetailSuccess = QuerySuccessAction(LOT_DETAIL_SUCCESS);\r\nexport const lotDetailFail = QueryFailAction(LOT_DETAIL_FAIL);\r\n\r\nexport const lotSaveRequest = (lotId, formData, isNew) => ({ type: LOT_DETAIL_SAVE_REQUEST, data: { entityId: lotId }, mutation: isNew ? insertLotMutation : updateLotMutation, meta: { formData, model: Lot(), schema: modelMutateSchema } });\r\nexport const lotSaveSuccess = (entities, meta, lotId) => ({ type: LOT_DETAIL_SAVE_SUCCESS, data: { entityId: lotId, entities: { lots: [entities.updateLot || entities.insertLot] } }, meta: { model: Lot(), schema: modelRequestSchema } });\r\nexport const lotSaveFail = (error, lotId) => ({ type: LOT_DETAIL_SAVE_FAIL, error: true, data: { entityId: lotId, appMessage: convertLotErrorMessage(error), errorMessage: error.message }, meta: { model: Lot() } });\r\n\r\nexport const lotHeaderRequest = QueryRequestAction(LOT_HEADER_REQUEST, lotBasicInfo);\r\nexport const lotHeaderSuccess = QuerySuccessAction(LOT_HEADER_SUCCESS);\r\nexport const lotHeaderFail = QueryFailAction(LOT_HEADER_FAIL);\r\n\r\nexport const lotImagesQueryRequest = QueryRequestAction(LOT_IMAGES_QUERY_REQUEST, LotImagesQuery);\r\nexport const lotImagesQuerySuccess = QuerySuccessAction(LOT_IMAGES_QUERY_SUCCESS);\r\nexport const lotImagesQueryFail = QueryFailAction(LOT_IMAGES_QUERY_FAIL);\r\n\r\nexport const lotInteractiveMediaQueryRequest = QueryRequestAction(LOT_INTERACTIVE_MEDIA_QUERY_REQUEST, LotInteractiveMediaQuery);\r\nexport const lotInteractiveMediaQuerySuccess = QuerySuccessAction(LOT_INTERACTIVE_MEDIA_QUERY_SUCCESS);\r\nexport const lotInteractiveMediaQueryFail = QueryFailAction(LOT_INTERACTIVE_MEDIA_QUERY_FAIL);\r\n\r\nexport const lotVideosQueryRequest = QueryRequestAction(LOT_VIDEOS_QUERY_REQUEST, LotVideosQuery);\r\nexport const lotVideosQuerySuccess = QuerySuccessAction(LOT_VIDEOS_QUERY_SUCCESS);\r\nexport const lotVideosQueryFail = QueryFailAction(LOT_VIDEOS_QUERY_FAIL);\r\n\r\n/**\r\n * Manage homes lots request (for the lots grid)\r\n */\r\nexport const lotsRequest = QueryRequestAction(LOTS_REQUEST, lotsQuery, Community());\r\nexport const lotsSuccess = QuerySuccessAction(LOTS_SUCCESS);\r\nexport const lotsFail = QueryFailAction(LOTS_FAIL);\r\n\r\nconst convertLotErrorMessage = (error) => {\r\n if (error.message.includes('geo-coordinates are not within the city associated with the zip you entered')) return 'Your geocoordinates for this lot are not within the city associated with the ZIP you entered, please check them again';\r\n if (error.message.includes('lot number already exists')) return 'A lot with the same number already exists in this builder subdivision. Please use a different lot number.';\r\n if (error.message.includes('Invalid Brochure URL')) return 'Error. The Website specified for the brochure is not valid or is not accessible at this moment.';\r\n return 'Error saving the lot information, please try again';\r\n};\r\n","import { formsChannel } from '@/redux/forms/sagas';\r\nimport { getModelsChannel } from '@/redux/models/sagas';\r\nimport { lotDetailFail, lotDetailSuccess, lotHeaderFail, lotHeaderSuccess, lotImagesQueryFail, lotImagesQuerySuccess, lotSaveFail, lotSaveSuccess, lotVideosQueryFail, lotVideosQuerySuccess, lotInteractiveMediaQueryFail, lotInteractiveMediaQuerySuccess, lotsSuccess, lotsFail } from './actions';\r\nimport { LOT_DETAIL_REQUEST, LOT_DETAIL_SAVE_REQUEST, LOT_HEADER_REQUEST, LOT_IMAGES_QUERY_REQUEST, LOT_VIDEOS_QUERY_REQUEST, LOT_INTERACTIVE_MEDIA_QUERY_REQUEST, LOTS_REQUEST } from './types';\r\nimport { searchZipRequest } from '@/redux/location/actions';\r\nimport { communityDisplayChannelRequest } from '../../community-detail/@redux/actions';\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const lotDetailSagas = [\r\n /**\r\n * This generator listens to LOT_DETAIL_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n getModelsChannel(LOT_DETAIL_REQUEST, lotDetailSuccess, lotDetailFail, searchZipRequest),\r\n getModelsChannel(LOT_HEADER_REQUEST, lotHeaderSuccess, lotHeaderFail, communityDisplayChannelRequest),\r\n getModelsChannel(LOT_IMAGES_QUERY_REQUEST, lotImagesQuerySuccess, lotImagesQueryFail),\r\n getModelsChannel(LOT_VIDEOS_QUERY_REQUEST, lotVideosQuerySuccess, lotVideosQueryFail),\r\n formsChannel(LOT_DETAIL_SAVE_REQUEST, lotSaveSuccess, lotSaveFail),\r\n getModelsChannel(LOTS_REQUEST, lotsSuccess, lotsFail),\r\n getModelsChannel(LOT_INTERACTIVE_MEDIA_QUERY_REQUEST, lotInteractiveMediaQuerySuccess, lotInteractiveMediaQueryFail),\r\n];\r\n","export const LOADER_DATA_GRID_REQUEST = 'bdxlive/loader_data/loader_data_request';\r\nexport const LOADER_DATA_GRID_SUCCESS = 'bdxlive/loader_data/loader_data_success';\r\nexport const LOADER_DATA_GRID_FAIL = 'bdxlive/loader_data/loader_data_fail';\r\n","export const requestLoaderDataApi = () => `\r\n query {\r\n loaderData(top: 1000) {\r\n afterCleanFile\r\n auditAfterCount\r\n auditNewCount\r\n auditPriorCount\r\n builderNumber\r\n communityCount\r\n communityErrorCount\r\n communityLoadedCount\r\n criticalFile\r\n dateProcessed\r\n onNhs\r\n errorRecipientsFile\r\n externalErrorsFile\r\n fileName\r\n ftpFolder\r\n documentId\r\n originalFileName\r\n partnerId\r\n partnerName\r\n pretranslationFileName\r\n processCompleteFile\r\n recFuncEnabled\r\n schemaUsed\r\n status\r\n xsdValidation\r\n }\r\n } \r\n`;\r\n","import { QueryFailAction, QueryRequestAction, QuerySuccessAction } from '@/redux/models/actions';\r\n\r\nimport { requestLoaderDataApi } from './api';\r\nimport { LOADER_DATA_GRID_FAIL, LOADER_DATA_GRID_REQUEST, LOADER_DATA_GRID_SUCCESS } from './types';\r\n\r\nexport const loaderDataRequest = QueryRequestAction(LOADER_DATA_GRID_REQUEST, requestLoaderDataApi);\r\nexport const loaderDataSuccess = QuerySuccessAction(LOADER_DATA_GRID_SUCCESS);\r\nexport const loaderDataFail = QueryFailAction(LOADER_DATA_GRID_FAIL);\r\n","import { getModels } from '@/redux/models/sagas';\r\nimport { LOADER_DATA_GRID_REQUEST } from './types';\r\nimport { loaderDataFail, loaderDataSuccess } from './actions';\r\nimport { takeLatest } from 'redux-saga/effects';\r\n\r\nexport const loaderDataSagas = [\r\n /**\r\n * This generator listens to LOADER_DATA_GRID_REQUEST\r\n * and perform sequencial api calls\r\n */\r\n takeLatest(LOADER_DATA_GRID_REQUEST, getModels, loaderDataSuccess, loaderDataFail),\r\n];\r\n","import { JSONText } from '@/lodash/';\r\n\r\nexport const requestMlsNamesApi = () => `\r\n query {\r\n mlsNames {\r\n id\r\n name\r\n }\r\n }\r\n`;\r\n\r\nexport const mlsNamesSaveMutation = ({ id, added, deleted, updated }) => `\r\n mutation {\r\n ${\r\n deleted\r\n ? `\r\n deleteMlsNames(ids: [${id}]) {\r\n id\r\n }\r\n `\r\n : ''\r\n }\r\n ${\r\n added\r\n ? `\r\n insertMlsNames(name: ${JSONText(added)}) {\r\n id \r\n name\r\n }\r\n `\r\n : ''\r\n }\r\n ${\r\n updated\r\n ? `\r\n updateMlsNames(id: ${id}, name: ${JSONText(updated)}) {\r\n id \r\n name\r\n }\r\n `\r\n : ''\r\n }\r\n }\r\n`;\r\n","export const MLS_MANAGEMENT_GRID_REQUEST = 'bdxlive/mls_management/mls_names_request';\r\nexport const MLS_MANAGEMENT_GRID_SUCCESS = 'bdxlive/mls_management/mls_names_success';\r\nexport const MLS_MANAGEMENT_GRID_FAIL = 'bdxlive/mls_management/mls_names_fail';\r\n\r\nexport const MLS_MANAGEMENT_SAVE_REQUEST = 'bdxlive/mls_management/save_request';\r\nexport const MLS_MANAGEMENT_SAVE_SUCCESS = 'bdxlive/mls_management/save_success';\r\nexport const MLS_MANAGEMENT_SAVE_FAIL = 'bdxlive/mls_management/save_fail';\r\n","import { MutationFailAction, MutationRequestAction, MutationSuccessAction } from '@/redux/forms/actions';\r\nimport { QueryFailAction, QueryRequestAction, QuerySuccessAction } from '@/redux/models/actions';\r\n\r\nimport { requestMlsNamesApi, mlsNamesSaveMutation } from './api';\r\nimport { MLS_MANAGEMENT_GRID_REQUEST, MLS_MANAGEMENT_GRID_SUCCESS, MLS_MANAGEMENT_GRID_FAIL, MLS_MANAGEMENT_SAVE_FAIL, MLS_MANAGEMENT_SAVE_SUCCESS, MLS_MANAGEMENT_SAVE_REQUEST } from './types';\r\n\r\nexport const mlsNamesRequest = QueryRequestAction(MLS_MANAGEMENT_GRID_REQUEST, requestMlsNamesApi);\r\nexport const mlsNamesSuccess = QuerySuccessAction(MLS_MANAGEMENT_GRID_SUCCESS);\r\nexport const mlsNamesFail = QueryFailAction(MLS_MANAGEMENT_GRID_FAIL);\r\n\r\nexport const mlsNamesMutationRequest = MutationRequestAction(MLS_MANAGEMENT_SAVE_REQUEST, mlsNamesSaveMutation);\r\nexport const mlsNamesMutationSuccess = MutationSuccessAction(MLS_MANAGEMENT_SAVE_SUCCESS);\r\nexport const mlsNamesMutationFail = MutationFailAction(MLS_MANAGEMENT_SAVE_FAIL);\r\n","import { takeLatest } from 'redux-saga/effects';\r\n\r\nimport { mlsNamesFail, mlsNamesSuccess } from './actions';\r\nimport { MLS_MANAGEMENT_GRID_REQUEST } from './types';\r\nimport { getModels } from '@/redux/models/sagas';\r\n\r\nexport const mlsNamesSagas = [\r\n /**\r\n * This generator listens to MLS_MANAGEMENT_GRID_REQUEST\r\n * and perform sequencial api calls\r\n */\r\n takeLatest(MLS_MANAGEMENT_GRID_REQUEST, getModels, mlsNamesSuccess, mlsNamesFail),\r\n];\r\n","export const BRAND_DETAIL_REQUEST = 'bdxlive/brand_detail/info_request';\r\nexport const BRAND_DETAIL_SUCCESS = 'bdxlive/brand_detail/info_success';\r\nexport const BRAND_DETAIL_FAIL = 'bdxlive/brand_detail/info_fail';\r\n\r\nexport const BRAND_DETAIL_SAVE_REQUEST = 'bdxlive/brand_detail/save_request';\r\nexport const BRAND_DETAIL_SAVE_SUCCESS = 'bdxlive/brand_detail/save_success';\r\nexport const BRAND_DETAIL_SAVE_FAIL = 'bdxlive/brand_detail/save_fail';\r\n\r\nexport const BRAND_IMAGES_QUERY_REQUEST = 'bdxlive/brand_detail/images_request';\r\nexport const BRAND_IMAGES_QUERY_SUCCESS = 'bdxlive/brand_detail/images_success';\r\nexport const BRAND_IMAGES_QUERY_FAIL = 'bdxlive/brand_detail/images_fail';\r\n\r\nexport const BRAND_VIDEOS_QUERY_REQUEST = 'bdxlive/brand_detail/videos_request';\r\nexport const BRAND_VIDEOS_QUERY_SUCCESS = 'bdxlive/brand_detail/videos_success';\r\nexport const BRAND_VIDEOS_QUERY_FAIL = 'bdxlive/brand_detail/videos_fail';\r\n\r\nexport const BRAND_TESTIMONIALS_REQUEST = 'bdxlive/brand/testimonials_request';\r\nexport const BRAND_TESTIMONIALS_SUCCESS = 'bdxlive/brand/testimonials_success';\r\nexport const BRAND_TESTIMONIALS_FAIL = 'bdxlive/brand/testimonials_fail';\r\n\r\nexport const BRAND_TREE_VIEW_REQUEST = 'bdxlive/brand/tree_view_request';\r\nexport const BRAND_TREE_VIEW_SUCCESS = 'bdxlive/brand/tree_view_success';\r\nexport const BRAND_TREE_VIEW_FAIL = 'bdxlive/brand/tree_view_fail';\r\n","import { modelMutateSchema, modelRequestSchema } from '@/app/app.entities';\r\nimport { Brand } from '@/models/Brand';\r\nimport { QueryFailAction, QueryRequestAction, QuerySuccessAction } from '@/redux/models/actions';\r\nimport { brandDetail, insertBrandMutationApi, updateBrandMutationApi, BrandImagesQuery, brandTreeViewQuery, BrandVideosQuery, BrandTestimonialsQuery } from './api';\r\nimport { BRAND_DETAIL_FAIL, BRAND_DETAIL_REQUEST, BRAND_DETAIL_SAVE_FAIL, BRAND_DETAIL_SAVE_REQUEST, BRAND_DETAIL_SAVE_SUCCESS, BRAND_DETAIL_SUCCESS, BRAND_TREE_VIEW_FAIL, BRAND_TREE_VIEW_REQUEST, BRAND_TREE_VIEW_SUCCESS, BRAND_IMAGES_QUERY_REQUEST, BRAND_IMAGES_QUERY_SUCCESS, BRAND_IMAGES_QUERY_FAIL, BRAND_VIDEOS_QUERY_REQUEST, BRAND_VIDEOS_QUERY_SUCCESS, BRAND_VIDEOS_QUERY_FAIL, BRAND_TESTIMONIALS_REQUEST, BRAND_TESTIMONIALS_SUCCESS, BRAND_TESTIMONIALS_FAIL } from './types';\r\n\r\n/**\r\n * Tree View request\r\n */\r\nexport const brandTreeViewRequest = QueryRequestAction(BRAND_TREE_VIEW_REQUEST, brandTreeViewQuery);\r\nexport const brandTreeViewSuccess = QuerySuccessAction(BRAND_TREE_VIEW_SUCCESS);\r\nexport const brandTreeViewFail = QueryFailAction(BRAND_TREE_VIEW_FAIL);\r\n\r\n/**\r\n * Brand Details Page request\r\n */\r\nexport const brandDetailRequest = QueryRequestAction(BRAND_DETAIL_REQUEST, brandDetail, Brand());\r\nexport const brandDetailSuccess = QuerySuccessAction(BRAND_DETAIL_SUCCESS);\r\nexport const brandDetailFail = QueryFailAction(BRAND_DETAIL_FAIL);\r\n\r\nexport const brandImagesQueryRequest = QueryRequestAction(BRAND_IMAGES_QUERY_REQUEST, BrandImagesQuery);\r\nexport const brandImagesQuerySuccess = QuerySuccessAction(BRAND_IMAGES_QUERY_SUCCESS);\r\nexport const brandImagesQueryFail = QueryFailAction(BRAND_IMAGES_QUERY_FAIL);\r\n\r\nexport const brandVideosQueryRequest = QueryRequestAction(BRAND_VIDEOS_QUERY_REQUEST, BrandVideosQuery);\r\nexport const brandVideosQuerySuccess = QuerySuccessAction(BRAND_VIDEOS_QUERY_SUCCESS);\r\nexport const brandVideosQueryFail = QueryFailAction(BRAND_VIDEOS_QUERY_FAIL);\r\n\r\nexport const brandTestimonialsRequest = QueryRequestAction(BRAND_TESTIMONIALS_REQUEST, BrandTestimonialsQuery);\r\nexport const brandTestimonialsSuccess = QuerySuccessAction(BRAND_TESTIMONIALS_SUCCESS);\r\nexport const brandTestimonialsFail = QueryFailAction(BRAND_TESTIMONIALS_FAIL);\r\n\r\n/**\r\n * Brand Mutation Save\r\n */\r\nexport const brandSaveRequest = (brandId, formData, isNew) => ({\r\n type: BRAND_DETAIL_SAVE_REQUEST,\r\n data: { entityId: brandId },\r\n mutation: isNew ? insertBrandMutationApi : updateBrandMutationApi,\r\n meta: {\r\n formData,\r\n model: Brand(),\r\n schema: modelMutateSchema,\r\n },\r\n});\r\nexport const brandSaveSuccess = (entities, brandId) => ({\r\n type: BRAND_DETAIL_SAVE_SUCCESS,\r\n data: {\r\n entityId: brandId,\r\n entities: { eflyers: [entities.updateEflyer || entities.insertEflyer] },\r\n },\r\n meta: {\r\n model: Brand(),\r\n schema: modelRequestSchema,\r\n },\r\n});\r\nexport const brandSaveFail = (error, brandId) => ({\r\n type: BRAND_DETAIL_SAVE_FAIL,\r\n error: true,\r\n data: {\r\n entityId: brandId,\r\n appMessage: 'Error saving the brand information, please try again',\r\n errorMessage: error.message,\r\n },\r\n meta: { model: Brand() },\r\n});\r\n","import { formsChannel } from '@/redux/forms/sagas';\r\nimport { getModels } from '@/redux/models/sagas';\r\nimport { takeLatest } from 'redux-saga/effects';\r\nimport { BRAND_DETAIL_REQUEST, BRAND_DETAIL_SAVE_REQUEST, BRAND_IMAGES_QUERY_REQUEST, BRAND_TESTIMONIALS_REQUEST, BRAND_TREE_VIEW_REQUEST, BRAND_VIDEOS_QUERY_REQUEST } from './types';\r\nimport { brandDetailFail, brandDetailSuccess, brandSaveFail, brandSaveSuccess, brandTreeViewFail, brandTreeViewSuccess, brandImagesQuerySuccess, brandImagesQueryFail, brandVideosQuerySuccess, brandVideosQueryFail, brandTestimonialsFail, brandTestimonialsSuccess } from './actions';\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const brandSagas = [\r\n /**\r\n * This effect listens to BRAND_TREE_VIEW_REQUEST\r\n * and cancels the current operation on future request\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(BRAND_TREE_VIEW_REQUEST, getModels, brandTreeViewSuccess, brandTreeViewFail),\r\n takeLatest(BRAND_DETAIL_REQUEST, getModels, brandDetailSuccess, brandDetailFail),\r\n /**\r\n * This generator listens to EFLYER_DETAIL_SAVE_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n formsChannel(BRAND_DETAIL_SAVE_REQUEST, brandSaveSuccess, brandSaveFail),\r\n /**\r\n * This generator listens to BRAND_IMAGES_QUERY_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(BRAND_IMAGES_QUERY_REQUEST, getModels, brandImagesQuerySuccess, brandImagesQueryFail),\r\n /**\r\n * This generator listens to BRAND_VIDEOS_QUERY_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(BRAND_VIDEOS_QUERY_REQUEST, getModels, brandVideosQuerySuccess, brandVideosQueryFail),\r\n /**\r\n * This generator listens to BRAND_TESTIMONIALS_REQUEST\r\n * and perform sequencial api calls\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(BRAND_TESTIMONIALS_REQUEST, getModels, brandTestimonialsSuccess, brandTestimonialsFail),\r\n];\r\n","import { Agent } from '@/models/Agent';\r\nimport { entityById } from '@/redux/models/selectors';\r\nimport { empty } from '@/lodash/empty';\r\nimport { config } from '@/app/@redux/config/selectors';\r\n\r\nexport const agentByBuilderId = (state, id) => {\r\n const entity = entityById(state, id, Agent().schema);\r\n\r\n // in case empty assign default initialized values\r\n const {\r\n builderId,\r\n level = null,\r\n type = null,\r\n dataLock,\r\n markets = [],\r\n divisions = [],\r\n isNew = !entity.type,\r\n agentPolicies = [],\r\n buyerPolicies = [],\r\n } = entity || {\r\n builderId: id,\r\n dataLock: true,\r\n divisions: [],\r\n markets: [],\r\n isNew: true,\r\n };\r\n\r\n agentPolicies?.forEach((policy) => mapsPolicyData(policy));\r\n buyerPolicies?.forEach((policy) => mapsPolicyData(policy));\r\n\r\n // rename a couple of fields\r\n return {\r\n builderId,\r\n level,\r\n type,\r\n dataLock,\r\n isNew,\r\n markets: markets?.map(({ id: k }) => k),\r\n agentPolicies,\r\n buyerPolicies,\r\n divisions: divisions?.map(({ builderId: k }) => k),\r\n }; // re define names bc mutation use marketids instead of markets\r\n};\r\n\r\n/**\r\n * Translate the data from the API for policies to something more easy to handle by the form mixin\r\n * @param {*} policy\r\n */\r\nconst mapsPolicyData = (policy) => {\r\n policy.file = null;\r\n policy.formData = null;\r\n if (!empty(policy.flyer)) {\r\n const { flyer: { filePath, flyerImages } = {} } = policy;\r\n const formatedName = filePath?.slice(filePath?.lastIndexOf('/') + 1, filePath?.length) || 'N/A';\r\n policy.fileName = `${formatedName.slice(0, formatedName.lastIndexOf('_'))}.pdf`;\r\n policy.file = {};\r\n policy.pdfUrl = filePath?.replace('~', config('BdxLiveDomain')) || '';\r\n if (!empty(flyerImages)) {\r\n policy.thumbnail = flyerImages[flyerImages.length - 1]?.thumbnail?.replace('~', config('BdxLiveDomain')) || '';\r\n }\r\n }\r\n policy.divisions = policy?.divisions.map(({ builderId }) => builderId) || [];\r\n policy.markets = policy?.markets.map(({ id }) => id) || [];\r\n policy.communities = policy?.communities.map(({ id }) => id) || [];\r\n};\r\n","export const AGENT_FIELDS = `\r\n type,\r\n level,\r\n divisions {\r\n builderId\r\n }, \r\n markets {\r\n id\r\n }\r\n`;\r\n\r\nexport const AGENT_POLICIES_FIELDS = `\r\n agentPolicies {\r\n id,\r\n name,\r\n url,\r\n builderId,\r\n level,\r\n flyer{\r\n filePath,\r\n flyerImages{\r\n thumbnail, \r\n },\r\n loadStatusId,\r\n },\r\n communities(status: [Approved, Submitted]){\r\n id,\r\n },\r\n divisions{\r\n builderId,\r\n },\r\n markets{\r\n id,\r\n },\r\n }\r\n`;\r\n\r\nexport const BUYER_POLICY_FIELDS = `\r\n buyerPolicies {\r\n id,\r\n name,\r\n url,\r\n builderId,\r\n level,\r\n flyer{\r\n filePath,\r\n flyerImages{\r\n thumbnail, \r\n },\r\n },\r\n communities(status: [Approved, Submitted]){\r\n id,\r\n },\r\n divisions{\r\n builderId,\r\n },\r\n markets{\r\n id,\r\n },\r\n }\r\n`;\r\n\r\nexport const BUILDER_LOCATION_FIELDS = `\r\n builders(builderId: [BUILDERID]) {\r\n builderId\r\n markets {\r\n id\r\n name\r\n }\r\n divisions (status: [Approved], page: 0, top: 500) {\r\n builderId\r\n builderName\r\n parentBuilderId\r\n communities {\r\n name\r\n id\r\n }\r\n }\r\n }\r\n`;\r\n","import { isNullish, empty, JSONText } from '@/lodash/';\r\nimport { AGENT_FIELDS, AGENT_POLICIES_FIELDS, BUILDER_LOCATION_FIELDS, BUYER_POLICY_FIELDS } from './fields';\r\nimport { qif } from '@/utils/api/graph-helpers';\r\nimport apiClient from '@/utils/api/api';\r\n\r\n/**\r\n * Request for the agents detail page\r\n * This query will be composed based on the current tab\r\n * @param {Object}\r\n * @returns {String} The GraphQL Query\r\n */\r\nexport const agentDetail = ({ entityId: id, section, requestBuilderData }) => `\r\n query agentsDetailRequest {\r\n builderAgents(builderId: ${id}) {\r\n builderId\r\n ${section === 'bdx-agent-main' ? AGENT_FIELDS : ''}\r\n ${section === 'bdx-agent-policies' ? AGENT_POLICIES_FIELDS : ''}\r\n ${section === 'bdx-agent-buyer-policies' ? BUYER_POLICY_FIELDS : ''}\r\n }\r\n ${requestBuilderData ? BUILDER_LOCATION_FIELDS.replace('BUILDERID', id) : ''}\r\n }\r\n`;\r\n\r\n/**\r\n * Return the complete list of communities for a corporation id, including the davision and market data\r\n * @param {A} builderId Corporation id\r\n * @returns a promise to the request, so the client can handle the error or success of the operation\r\n */\r\nexport async function agentsGetDivisionsData(builderId) {\r\n return apiClient.post(null, {\r\n query: `\r\n query {\r\n communities(builderId: ${builderId}, top: 1500, status: [Approved, Submitted]) {\r\n id\r\n name\r\n builder {\r\n builderId\r\n builderName\r\n }\r\n market {\r\n id\r\n name\r\n }\r\n }\r\n }\r\n `,\r\n });\r\n}\r\n\r\nconst UPDATE_AGENT_MUTATION = ({ id, type, level, submitterName, dataLock, divisions, markets }) => {\r\n let agentInfo = '';\r\n\r\n agentInfo = `${qif(!isNullish(type), () => `,type: ${type}`)}\r\n ${qif(!isNullish(level), () => `,level: ${level}`)}\r\n ${qif(!isNullish(submitterName), () => `,submitterName: ${JSONText(submitterName)}`)}\r\n ${qif(!isNullish(dataLock), () => `,dataLock: ${dataLock}`)}\r\n ${qif(!isNullish(divisions) && !empty(divisions), () => `,divisionIds: [${divisions.map((k) => k)}]`)}\r\n ${qif(!isNullish(markets) && !empty(markets), () => `,marketIds: [${markets.map((k) => k)}]`)}`.trim();\r\n\r\n return `mutation {\r\n setBuilderAgents (\r\n builderId: ${id},\r\n sitePage: \"agent-policies\"\r\n ${!empty(agentInfo) ? agentInfo : ``}\r\n )\r\n {\r\n builderId,\r\n ${AGENT_FIELDS}\r\n } \r\n }`.trim();\r\n};\r\n\r\nexport const updateAgentMutationApi = (agent) => UPDATE_AGENT_MUTATION(agent);\r\nexport const updateAgentPolicyMutationApi = (policy) => UPDATE_POLICY_MUTATION(policy);\r\n\r\nconst UPDATE_POLICY_MUTATION = ({ builderId, id, name, level, communities, url, file, added, deleted, isAgent }) => {\r\n let policyFields = '';\r\n\r\n if (added && deleted) return;\r\n\r\n policyFields = `${qif(!isNaN(id), () => `id:${id},`)}\r\n ${qif(!isNullish(name), () => `name: ${JSONText(name)},`)}\r\n ${qif(!isNullish(url), () => `websiteUrl: ${JSONText(url)},`)}\r\n ${qif(!isNullish(level), () => `level: ${level},`)}\r\n ${qif(!isNullish(file), () => `file: $file${id},`)}\r\n ${qif(!isNullish(communities), () => `commIds: [${communities.map((k) => k)}]`)}`.trim();\r\n\r\n if (deleted) {\r\n return isAgent ? DELETE_AGENT_POLICY_MUTATION(id) : DELETE_BUYER_POLICY_MUTATION(id);\r\n }\r\n return `mutation {${isAgent ? `updateAgentPolicies` : `updateBuyerPolicies`}(\r\n builderId: ${builderId},\r\n ${qif(!empty(policyFields), () => `policies: {${policyFields}}`)} \r\n )\r\n {\r\n builderId,\r\n ${isAgent ? AGENT_POLICIES_FIELDS : BUYER_POLICY_FIELDS}\r\n }\r\n }`.trim();\r\n};\r\n\r\nexport const DELETE_AGENT_POLICY_MUTATION = (id) => `mutation {\r\n deleteAgentPolicies(ids:${id}){\r\n id,\r\n deleted\r\n }\r\n}\r\n`;\r\n\r\nexport const DELETE_BUYER_POLICY_MUTATION = (id) => `mutation {\r\n deleteBuyerPolicies(ids:${id}){\r\n id,\r\n deleted\r\n }\r\n}\r\n`;\r\n","import { Model } from '../utils/models';\r\nimport { GraphQLQuery } from '../utils/api/graph-helpers';\r\nimport { agentSchema } from '../app.entities';\r\nimport { agentByBuilderId } from '@/modules/agent/@redux/selectors';\r\nimport { updateAgentMutationApi } from '@/modules/agent/@redux/api';\r\nimport { agentContextRequest } from '@/redux/context/actions';\r\nimport { Builder } from './Builder';\r\n\r\nexport const Agent = () =>\r\n new Model({\r\n name: 'builderAgents',\r\n model: 'builderAgents',\r\n urlKey: 'builderId',\r\n title: 'agent policies',\r\n schema: agentSchema,\r\n mutations: { save: updateAgentMutationApi },\r\n baseSelector: agentByBuilderId,\r\n parent: Builder(),\r\n contextRequest: agentContextRequest,\r\n query: new GraphQLQuery([\r\n {\r\n operation: 'builderAgents',\r\n argument: {},\r\n fields: ['builderId'],\r\n },\r\n ]),\r\n describerFields: {\r\n id: 'builderId',\r\n name: 'name',\r\n relation: 'builderId',\r\n relationId: 'builderId',\r\n agentId: 'id',\r\n },\r\n });\r\n","import { Agent } from '@/models/Agent';\r\nimport { QueryFailAction, QueryRequestAction, QuerySuccessAction } from '@/redux/models/actions';\r\nimport { agentDetail } from './api';\r\nimport { AGENT_DETAIL_FAIL, AGENT_DETAIL_REQUEST, AGENT_DETAIL_SUCCESS } from './types';\r\n\r\n/**\r\n * Agent Details Page request\r\n */\r\nexport const agentDetailRequest = QueryRequestAction(AGENT_DETAIL_REQUEST, agentDetail, Agent());\r\nexport const agentDetailSuccess = QuerySuccessAction(AGENT_DETAIL_SUCCESS);\r\nexport const agentDetailFail = QueryFailAction(AGENT_DETAIL_FAIL);\r\n","import { getModels } from '@/redux/models/sagas';\r\nimport { takeLatest } from 'redux-saga/effects';\r\nimport { AGENT_DETAIL_REQUEST } from './types';\r\nimport { agentDetailFail, agentDetailSuccess } from './actions';\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const agentSagas = [\r\n /**\r\n * This effect listens to BRAND_TREE_VIEW_REQUEST\r\n * and cancels the current operation on future request\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(AGENT_DETAIL_REQUEST, getModels, agentDetailSuccess, agentDetailFail),\r\n];\r\n","export const LISTHUB_DETAIL_REQUEST = 'bdxlive/listhub/info_request';\r\nexport const LISTHUB_DETAIL_SUCCESS = 'bdxlive/listhub/info_success';\r\nexport const LISTHUB_DETAIL_FAIL = 'bdxlive/listhub/info_fail';\r\n","import { empty } from '@/lodash';\r\nimport { ListHub } from '@/models/ListHub';\r\nimport { entityById } from '@/redux/models/selectors';\r\n\r\nexport const getListHubFiltersDataById = (state, builderId) => entityById(state, builderId, ListHub().schema);\r\n\r\nexport const getListHubBuilderData = (state, builderId) => {\r\n const listHubData = getListHubFiltersDataById(state, builderId);\r\n if (empty(listHubData)) return null;\r\n const { filters, filterSql, isActive, manualLock } = listHubData;\r\n\r\n const newFilters = { ...filters }; // clone obj so we dont mutate redux store\r\n\r\n Object.keys(newFilters).forEach((k) => {\r\n if (newFilters?.[k] && newFilters[k].in) {\r\n newFilters[k] = newFilters[k].in;\r\n }\r\n });\r\n\r\n return {\r\n builderId,\r\n filters: newFilters,\r\n filterSql,\r\n isActive,\r\n manualLock,\r\n };\r\n};\r\n","export const LISTHUB_BUILDER_FIELDS = `\r\n builderId,\r\n filters {\r\n mlsNames {\r\n in\r\n },\r\n officeNames {\r\n in\r\n },\r\n officeIds{\r\n in\r\n },\r\n brokerNames{\r\n in\r\n },\r\n builderNames{\r\n in\r\n },\r\n description\r\n }\r\n filterSql,\r\n isActive,\r\n manualLock\r\n`;\r\n\r\nexport const LISTHUB_RESULTS_FIELDS = `\r\n brokerName,\r\n builderName,\r\n mlsName,\r\n mlsNumber,\r\n officeId,\r\n officeName,\r\n description,\r\n communityId,\r\n community {\r\n name\r\n }\r\n divisionId,\r\n isNewConstruction,\r\n listingKey,\r\n moveInDate,\r\n parentBuilderId,\r\n planId,\r\n plan {\r\n name\r\n }\r\n status,\r\n streetAddress,\r\n zip,\r\n`;\r\n","import { empty, JSONText, toUpperCamelCase, singular } from '@/lodash/';\r\nimport { LISTHUB_BUILDER_FIELDS, LISTHUB_RESULTS_FIELDS } from './fields';\r\nimport { qif } from '@/utils/api/graph-helpers';\r\nimport apiClient from '@/utils/api/api';\r\nimport { listHubFilterField } from '../../../constants/bdx-lookups';\r\n\r\n/**\r\n * Request for the listhub builder filters info\r\n * @param {Object} builderId current division Id\r\n * @returns {String} The GraphQL Query\r\n */\r\nexport const listHubDetail = ({ entityId: builderId }) => `\r\n query listHubBuilderRequest {\r\n listHubBuilderFilters(builderId: ${builderId}) {\r\n ${LISTHUB_BUILDER_FIELDS}\r\n }\r\n }\r\n`;\r\n\r\n/**\r\n * Query the listhub raw table to retrieve data for the data grid based in the current filters for the division\r\n * @param {A} builderId Division Id\r\n * @returns a promise to the request, so the client can handle the error or success of the operation\r\n * this is a promise bc we wanna search for listhub from the component itself not with redux\r\n */\r\nexport async function listHub({ builderId, isManualLock, filters: { mlsNames, officeNames, officeIds, brokerNames, builderNames, description } }, page, size, sortField, sortOrder) {\r\n const filterText = `\r\n ${qif(!empty(mlsNames), () => `mlsNames: { in: [\"${mlsNames.join('\",\"')}\"] }`)}\r\n ${qif(!empty(officeNames), () => `officeNames: { in: [\"${officeNames.join('\",\"')}\"] }`)}\r\n ${qif(!empty(officeIds), () => `officeIds: { in: [\"${officeIds.join('\",\"')}\"] }`)}\r\n ${qif(!empty(brokerNames), () => `brokerNames: { in: [\"${brokerNames.join('\",\"')}\"] }`)}\r\n ${qif(!empty(builderNames), () => `builderNames: { in: [\"${builderNames.join('\",\"')}\"] }`)}\r\n ${qif(!empty(description), () => `description: ${JSONText(description)}`)}`;\r\n\r\n return apiClient.post(null, {\r\n query: `\r\n query listHub {\r\n listHub(\r\n builderId: ${builderId}, \r\n ${qif(isManualLock, () => `customSql: true,`)}\r\n ${qif(!isManualLock && !empty(filterText?.trim()), () => `filters: {${filterText}},`)}\r\n top: ${size},\r\n page: ${page - 1},\r\n sortBy: { field: ${toUpperCamelCase(sortField)}, order: ${sortOrder ? 'Asc' : 'Desc'}}\r\n ) {\r\n ${LISTHUB_RESULTS_FIELDS}\r\n }\r\n listHubCount(builderId: ${builderId}, ${qif(isManualLock, () => `customSql: true,`)} ${qif(!isManualLock && !empty(filterText?.trim()), () => `filters: {${filterText}}`)}) \r\n }\r\n `,\r\n });\r\n}\r\n\r\n/**\r\n * This is similar to the listHub query but this is used to retrieve distinct values for specific columnas based in a search\r\n * string, this will be used in the typeaheaed component\r\n * @param {A} builderId Current division Id\r\n * @returns a promise to the request, so the client can handle the error or success of the operation\r\n */\r\nexport async function listHubTypeAhead(builderId, search, fieldName, mlsFilter) {\r\n return apiClient.post(null, {\r\n query: `\r\n query {\r\n listHub(builderId: ${builderId}, filters: {${singular(fieldName)} : \"${search}\" ${empty(mlsFilter) ? '' : `, mlsNames: { in: [\"${mlsFilter.join('\",\"')}\"] }`},}, page: 0, top:500, sortBy: {field: ${toUpperCamelCase(singular(fieldName))}} ) @distinct (by: \"${singular(fieldName)}\") {\r\n ${singular(fieldName)}\r\n }\r\n }\r\n `,\r\n });\r\n}\r\n\r\nexport async function listHubCheckFilters({ builderId, filters }) {\r\n const filterNames = [listHubFilterField.OfficeNames, listHubFilterField.OfficeIds, listHubFilterField.BrokerNames, listHubFilterField.BuilderNames];\r\n let filtersCheckQuery = '';\r\n let total = 1;\r\n const filterQuery = (index, filterName, filterValue) => `q${index}: listHub(builderId: ${builderId}, filters: {${singular(filterName)}: \"${filterValue}\", ${qif(filters?.mlsNames !== undefined, () => `mlsNames: ${empty(filters?.mlsNames) ? 'null' : `{ in: [\"${filters?.mlsNames.join('\",\"')}\"] }`},`)}}\r\n page: 0, top: 500, sortBy: {field: ${toUpperCamelCase(singular(filterName))}}) @distinct(by: \"${toUpperCamelCase(singular(filterName))}\") { ${singular(filterName)} }`;\r\n\r\n // Check all filters one by one if there are valud values agains the mlsName list\r\n filterNames.forEach((fieldName) => {\r\n if (!empty(filters[fieldName])) {\r\n filters[fieldName].forEach((item) => {\r\n filtersCheckQuery += filterQuery(total, fieldName, item);\r\n total += 1;\r\n });\r\n }\r\n });\r\n\r\n return apiClient.post(null, { query: `{${filtersCheckQuery}}` });\r\n}\r\n\r\n/**\r\n * Used to save the listhub filters for the specified division.\r\n */\r\nconst UPDATE_LISTHUB_FILTER_MUTATION = ({ id: builderId, filters: { mlsNames, officeNames, officeIds, brokerNames, builderNames, description } = {}, isActive }) => {\r\n const filtersData = `\r\n ${qif(mlsNames !== undefined, () => `mlsNames: ${empty(mlsNames) ? 'null' : `{ in: [\"${mlsNames.join('\",\"')}\"] }`},`)}\r\n ${qif(officeNames !== undefined, () => `officeNames: ${empty(officeNames) ? 'null' : `{ in: [\"${officeNames.join('\",\"')}\"] }`},`)}\r\n ${qif(officeIds !== undefined, () => `officeIds: ${empty(officeIds) ? 'null' : `{ in: [\"${officeIds.join('\",\"')}\"] }`},`)}\r\n ${qif(brokerNames !== undefined, () => `brokerNames: ${empty(brokerNames) ? 'null' : `{ in: [\"${brokerNames.join('\",\"')}\"] }`},`)}\r\n ${qif(builderNames !== undefined, () => `builderNames: ${empty(builderNames) ? 'null' : `{ in: [\"${builderNames.join('\",\"')}\"] }`},`)}\r\n ${qif(description !== undefined, () => `description: ${JSONText(description)}`)}`;\r\n\r\n return `mutation {\r\n setListHubBuilderFilter (\r\n builderId: ${builderId}\r\n ${qif(isActive !== undefined, () => `, isActive: ${isActive}`)}\r\n ${qif(!empty(filtersData?.trim()), () => `, filters: {${filtersData}}`)}\r\n )\r\n {\r\n ${LISTHUB_BUILDER_FIELDS}\r\n } \r\n }`.trim();\r\n};\r\n\r\nexport const setListHubFilterMutationApi = (listhubData) => UPDATE_LISTHUB_FILTER_MUTATION(listhubData);\r\n","import { Model } from '../utils/models';\r\nimport { divisionContextRequest } from '@/redux/context/actions';\r\nimport { listHubSchema } from '../app.entities';\r\nimport { getListHubBuilderData } from '@/modules/listhub/@redux/selectors';\r\nimport { setListHubFilterMutationApi } from '@/modules/listhub/@redux/api';\r\n\r\nexport const ListHub = () =>\r\n new Model({\r\n name: 'listHubBuilderFilters',\r\n model: 'listHubBuilderFilters',\r\n urlKey: 'builderId',\r\n schema: listHubSchema,\r\n mutations: { save: setListHubFilterMutationApi },\r\n baseSelector: getListHubBuilderData,\r\n contextRequest: divisionContextRequest,\r\n describerFields: { id: 'builderId' },\r\n });\r\n","import { ListHub } from '@/models/ListHub';\r\nimport { QueryFailAction, QueryRequestAction, QuerySuccessAction } from '@/redux/models/actions';\r\nimport { listHubDetail } from './api';\r\nimport { LISTHUB_DETAIL_FAIL, LISTHUB_DETAIL_REQUEST, LISTHUB_DETAIL_SUCCESS } from './types';\r\n\r\n/**\r\n * Agent Details Page request\r\n */\r\nexport const listHubDetailRequest = QueryRequestAction(LISTHUB_DETAIL_REQUEST, listHubDetail, ListHub());\r\nexport const listHubDetailSuccess = QuerySuccessAction(LISTHUB_DETAIL_SUCCESS);\r\nexport const listHubDetailFail = QueryFailAction(LISTHUB_DETAIL_FAIL);\r\n","import { getModels } from '@/redux/models/sagas';\r\nimport { takeLatest } from 'redux-saga/effects';\r\nimport { LISTHUB_DETAIL_REQUEST } from './types';\r\nimport { listHubDetailFail, listHubDetailSuccess } from './actions';\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const listHubSagas = [\r\n /**\r\n * This effect listens to BRAND_TREE_VIEW_REQUEST\r\n * and cancels the current operation on future request\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(LISTHUB_DETAIL_REQUEST, getModels, listHubDetailSuccess, listHubDetailFail),\r\n];\r\n","import apiClient from '@/utils/api/api';\r\n\r\nimport { isNullish } from '@/lodash/isNullish';\r\nimport { empty } from '@/lodash/empty';\r\nimport { JSONText } from '@/lodash/';\r\n\r\n/**\r\n * Facets: Products, Customer IDs & Billing Cycles\r\n */\r\nexport const FacetsSearch = (context) => {\r\n const args = searchArguments(context);\r\n return apiClient.post(null, {\r\n query: `query {\r\n invoicesCounts${!empty(args) ? `(${args})` : ''} {\r\n ${context?.facet}\r\n }\r\n }`,\r\n });\r\n};\r\n\r\n/**\r\n * Summary information\r\n */\r\nexport function CorporationCounts(context) {\r\n const args = searchArguments(context);\r\n return apiClient.post(null, {\r\n query: `\r\n query {\r\n invoicesCounts${!empty(args) ? `(${args})` : ''} {\r\n ${typesFragment}\r\n }\r\n }\r\n `,\r\n });\r\n}\r\n\r\n/**\r\n * Email (billing info).\r\n */\r\nexport const RequestEmail = (context) => {\r\n const args = searchArguments(context);\r\n return apiClient.post(null, {\r\n query: `query {\r\n invoiceEmail(${args}) {\r\n status\r\n }\r\n }`,\r\n });\r\n};\r\n\r\nexport const InvoicesQuery = (criteria) => Invoices(criteria);\r\nconst Invoices = (criteria) => `\r\nquery {\r\n invoices(\r\n ${searchArguments(criteria)}\r\n ${!empty(criteria?.sorts) ? `,sortBy: ${Object.entries(criteria?.sorts).map(([path, direction]) => `{field: ${path}, order: ${direction === -1 ? 'Desc' : 'Asc'}}`)}` : ''}\r\n ,page: ${criteria?.pageNumber - 1 || 0}\r\n ,top: ${criteria?.pageSize}\r\n ) {\r\n id\r\n number\r\n date\r\n amount\r\n customerId\r\n product\r\n dueDate\r\n balanceDue\r\n url\r\n builder: division {\r\n builderId: id\r\n builderName: name\r\n }\r\n }\r\n invoicesCounts(${searchArguments(criteria)}) {\r\n ${typesFragment}\r\n }\r\n}`;\r\n\r\n/**\r\n * Grid counts\r\n */\r\nexport const GridCounts = (context) => {\r\n const args = searchArguments(context);\r\n return `\r\n query {\r\n invoicesCounts${!empty(args) ? `(${args})` : ''} {\r\n ${typesFragment}\r\n }\r\n }\r\n `;\r\n};\r\n\r\nconst typesFragment = `\r\n types {\r\n pastDue {\r\n amount\r\n balance\r\n count\r\n days\r\n }\r\n current {\r\n amount\r\n balance\r\n count\r\n }\r\n paid {\r\n amount\r\n balance\r\n count\r\n }\r\n }\r\n`;\r\n\r\nconst searchArguments = ({ corporateId, divisionId, customers, cycles, products, search, status, emailMessage }) =>\r\n `\r\n${!isNullish(divisionId) ? `builderId: ${divisionId}` : `${!isNullish(corporateId) ? `corpBuilderId: ${corporateId}` : ''}`}\r\n ${!empty(status) ? `,paymentStatus: ${status}` : ''}\r\n ${!empty(search) ? `,search: ${JSONText(search)}` : ''}\r\n ${!empty(emailMessage) ? `,message: ${JSONText(emailMessage)}` : ''}\r\n ${!empty(products) ? `,productNames: [${products.map((product) => JSONText(product))}]` : ''}\r\n ${!empty(customers) ? `,customerIds: [${customers.map((customer) => JSONText(customer))}]` : ''}\r\n ${!empty(cycles) ? `,billingCycles: [${cycles.map((cycle) => JSONText(cycle))}]` : ''}\r\n`.trim();\r\n","import { BILLING_GRID_REQUEST, BILLING_GRID_SUCCESS, BILLING_GRID_FAIL, BILLING_COUNTS_REQUEST, BILLING_COUNTS_SUCCESS, BILLING_COUNTS_FAIL, BILLING_PRODUCTS_FACETS_REQUEST, BILLING_PRODUCTS_FACETS_SUCCESS, BILLING_PRODUCTS_FACETS_ERROR, BILLING_CUSTOMERS_FACETS_REQUEST, BILLING_CUSTOMERS_FACETS_SUCCESS, BILLING_CUSTOMERS_FACETS_ERROR, BILLING_CYCLES_FACETS_REQUEST, BILLING_CYCLES_FACETS_SUCCESS, BILLING_CYCLES_FACETS_ERROR } from './types';\r\nimport { QueryFailAction, QueryRequestAction, QuerySuccessAction } from '@/redux/models/actions';\r\nimport { GridCounts, InvoicesQuery } from './api';\r\nimport { setParams } from '@/redux/page-location/actions';\r\nimport { PAGE_NUMBER } from '@/constants/params';\r\n\r\n/**\r\n * Products.\r\n */\r\nexport const billingProductsFacetsRequest = (data) => ({ type: BILLING_PRODUCTS_FACETS_REQUEST, data });\r\nexport const billingProductsFacetsSuccess = QuerySuccessAction(BILLING_PRODUCTS_FACETS_SUCCESS);\r\nexport const billingProductsFacetsFail = QueryFailAction(BILLING_PRODUCTS_FACETS_ERROR);\r\n\r\n/**\r\n * Customer IDs.\r\n */\r\nexport const billingCustomersFacetsRequest = (data) => ({ type: BILLING_CUSTOMERS_FACETS_REQUEST, data });\r\nexport const billingCustomersFacetsSuccess = QuerySuccessAction(BILLING_CUSTOMERS_FACETS_SUCCESS);\r\nexport const billingCustomersFacetsFail = QueryFailAction(BILLING_CUSTOMERS_FACETS_ERROR);\r\n\r\n/**\r\n * Billing Cycles.\r\n */\r\nexport const billingCyclesFacetsRequest = (data) => ({ type: BILLING_CYCLES_FACETS_REQUEST, data });\r\nexport const billingCyclesFacetsSuccess = QuerySuccessAction(BILLING_CYCLES_FACETS_SUCCESS);\r\nexport const billingCyclesFacetsFail = QueryFailAction(BILLING_CYCLES_FACETS_ERROR);\r\n\r\nexport const setBillingFacet = (facetName, facetValue) => setParams({ [facetName]: facetValue, [PAGE_NUMBER]: facetName !== PAGE_NUMBER ? 1 : facetValue });\r\n\r\n/**\r\n * Grid request.\r\n */\r\nexport const billingGridRequest = QueryRequestAction(BILLING_GRID_REQUEST, InvoicesQuery);\r\nexport const billingGridSuccess = QuerySuccessAction(BILLING_GRID_SUCCESS);\r\nexport const billingGridFail = QueryFailAction(BILLING_GRID_FAIL);\r\n\r\n/**\r\n * Counts.\r\n */\r\nexport const billingCountsRequest = QueryRequestAction(BILLING_COUNTS_REQUEST, GridCounts);\r\nexport const billingCountsSuccess = QuerySuccessAction(BILLING_COUNTS_SUCCESS);\r\nexport const billingCountsFail = QueryFailAction(BILLING_COUNTS_FAIL);\r\n","import { call, put, takeLatest } from 'redux-saga/effects';\r\n\r\n/**\r\n * Redux.\r\n */\r\nimport { BILLING_COUNTS_REQUEST, BILLING_GRID_REQUEST, BILLING_PRODUCTS_FACETS_REQUEST, BILLING_CUSTOMERS_FACETS_REQUEST, BILLING_CYCLES_FACETS_REQUEST } from './types';\r\nimport { billingGridFail, billingGridSuccess, billingCountsFail, billingCountsSuccess, billingProductsFacetsFail, billingProductsFacetsSuccess, billingCustomersFacetsSuccess, billingCustomersFacetsFail, billingCyclesFacetsSuccess, billingCyclesFacetsFail } from './actions';\r\nimport { FacetsSearch } from './api';\r\n\r\n/**\r\n * Utils.\r\n */\r\nimport { getModels } from '@/redux/models/sagas';\r\nimport { modelRequestSchema } from '@/app/app.entities';\r\n\r\nfunction* getFacetsResults(success, fail, { data: { divisionId, corporateId, facet } }) {\r\n try {\r\n const { data: { Result: { invoicesCounts: facets } = {} } = {} } = yield call(FacetsSearch, { divisionId, corporateId, facet });\r\n\r\n yield put(success({ ...facets, entity: facet }, modelRequestSchema));\r\n } catch (error) {\r\n yield put(fail(error));\r\n }\r\n}\r\n\r\nexport const billingSagas = [\r\n /**\r\n * This generator listens to BILLING_PRODUCTS_FACETS_REQUEST\r\n * and perform preferential api calls\r\n */\r\n takeLatest(BILLING_PRODUCTS_FACETS_REQUEST, getFacetsResults, billingProductsFacetsSuccess, billingProductsFacetsFail),\r\n /**\r\n * This generator listens to BILLING_CUSTOMERS_FACETS_REQUEST\r\n * and perform preferential api calls\r\n */\r\n takeLatest(BILLING_CUSTOMERS_FACETS_REQUEST, getFacetsResults, billingCustomersFacetsSuccess, billingCustomersFacetsFail),\r\n /**\r\n * This generator listens to BILLING_CYCLES_FACETS_REQUEST\r\n * and perform preferential api calls\r\n */\r\n takeLatest(BILLING_CYCLES_FACETS_REQUEST, getFacetsResults, billingCyclesFacetsSuccess, billingCyclesFacetsFail),\r\n /**\r\n * This generator listens to BILLING_COUNTS_REQUEST\r\n * and perform preferential api calls\r\n */\r\n takeLatest(BILLING_COUNTS_REQUEST, getModels, billingCountsSuccess, billingCountsFail),\r\n /**\r\n * This generator listens to BILLING_GRID_REQUEST\r\n * and perform preferential api calls\r\n */\r\n takeLatest(BILLING_GRID_REQUEST, getModels, billingGridSuccess, billingGridFail),\r\n];\r\n","export const SPOTLIGHT_ORDERS_REQUEST = 'bdxlive/spotlight/orders_request';\r\nexport const SPOTLIGHT_ORDERS_SUCCESS = 'bdxlive/spotlight/orders_success';\r\nexport const SPOTLIGHT_ORDERS_FAIL = 'bdxlive/spotlight/orders_fail';\r\n\r\nexport const SPOTLIGHT_SAVE_REQUEST = 'bdxlive/spotlight/save_request';\r\nexport const SPOTLIGHT_SAVE_SUCCESS = 'bdxlive/spotlight/save_success';\r\nexport const SPOTLIGHT_SAVE_FAIL = 'bdxlive/spotlight/save_fail';\r\n","import { SpotlightOrder } from '@/models/SpotlightOrder';\r\nimport { statusName, spotlightStatus } from '@/constants/bdx-lookups';\r\nimport { config } from '@/redux/config/selectors';\r\nimport { deepMerge } from '@/lodash/deepMerge';\r\nimport { randomWord } from '@/lodash/word';\r\nimport { modelsSelector } from '@/redux/models/selectors';\r\nimport { orderByField } from '@/lodash/orderBy';\r\nimport { dateShortTextFormater } from '@/lodash/formatter';\r\nimport { arrayToObjectByField } from '@/lodash/arrayToObject';\r\nimport { empty, dateLocalFormater } from '@/lodash/';\r\nimport { ability as auth, BDXLivePermission, PermissionType } from '@/utils/security/authorization';\r\n\r\nexport const spotlightOrderById = (state, orderId, extraFilters) => {\r\n const orders = spotlightOrdersByBuilderAndMarket(state, extraFilters.builderId, {});\r\n return orders.find((o) => o.id.toString() === orderId);\r\n};\r\n\r\nexport const getSpotlightData = (data = {}, corpId, marketRates, showNewPeriod) => {\r\n const totalSpotPerType = Number(config('SpotlightSpotCount'));\r\n const newObj = [];\r\n const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\r\n\r\n const { datesObj, monthList } = createListAvailableMonths(months, totalSpotPerType, marketRates, showNewPeriod);\r\n\r\n data.forEach(({ details, builderId, status }) => {\r\n details.forEach(({ type, yearMonth, sequence, id }) => {\r\n const spotYear = parseInt(yearMonth / 100);\r\n const spotMonth = yearMonth % 100;\r\n const spotDate = `${months[spotMonth - 1]}${spotYear}`;\r\n const groupType = `${type.at(0) === 'C' ? 'Community' : 'Home'}${sequence}`;\r\n const spotType = `${type.at(0)}${sequence}`;\r\n const chipsStatus = spotlightChipsStatus(status, corpId, builderId);\r\n newObj.push({\r\n type: groupType,\r\n [spotDate]: {\r\n id,\r\n builderId,\r\n status: chipsStatus,\r\n type: spotType,\r\n date: spotDate,\r\n yearMonth,\r\n },\r\n });\r\n });\r\n });\r\n\r\n const resultData = groupByListingType(datesObj);\r\n const resultGroup = groupByListingType(newObj);\r\n const dataColums = [];\r\n\r\n resultData.forEach((item) => {\r\n resultGroup.forEach((dt) => {\r\n monthList.forEach(({ date }) => {\r\n if (item.type === dt.type && item?.[date]?.date === dt?.[date]?.date) {\r\n item[date] = deepMerge(item[date], dt[date]);\r\n }\r\n });\r\n });\r\n dataColums.push(item);\r\n });\r\n\r\n let spotlightData = groupByListingType(dataColums);\r\n spotlightData = verifyStatus(spotlightData);\r\n\r\n return { spotlightData, columsDate: monthList };\r\n};\r\n\r\nconst spotlightChipsStatus = (spotStatus, builderId, spotBuilderId) => {\r\n if (builderId === spotBuilderId && spotStatus === statusName.APPROVED) return spotlightStatus.YOURS;\r\n if (builderId === spotBuilderId && spotStatus === statusName.SUBMITTED) return spotlightStatus.PENDING;\r\n if (builderId === spotBuilderId && spotStatus === statusName.DISAPPROVED) return spotlightStatus.AVAILABLE;\r\n if (builderId !== spotBuilderId && (spotStatus === statusName.APPROVED || spotStatus === statusName.SUBMITTED)) return spotlightStatus.CLAIMED;\r\n if (!builderId) return spotlightStatus.AVAILABLE;\r\n if (!spotBuilderId && spotStatus === spotlightStatus.SELECTED) return spotlightStatus.SELECTED;\r\n};\r\n\r\nexport const getSpotlightDateRange = () => {\r\n /**\r\n * The period sets the time period to use (1,2,3,4,6,12),\r\n * periodsForward sets how many periods will be shown forward,\r\n * periodsBackward sets how many periods will be shown backward,\r\n * totalNewNextPeriods is the number of months to be shown when the date set in the SpotlightNextPeriodOpenDate key is reached\r\n * and SpotlightStartProgram sets the start date of the program.\r\n */\r\n const period = Number(config('Period'));\r\n let periodsForward = Number(config('SpotlightPeriodsForward'));\r\n let periodsBackward = Number(config('SpotlightPeriodsBackward'));\r\n const totalNewNextPeriods = Number(config('SpotlightPeriodsNextPeriod'));\r\n const [startMonth, startDay, startYear] = config('SpotlightStartProgram').split('/').map(Number);\r\n const [nextOpenMonth, nextOpenDay] = config('SpotlightNextPeriodOpenDate').split('-').map(Number);\r\n\r\n /**\r\n * checks if the current date is less than the start date if it is it returns the program start date\r\n */\r\n const currentDate = new Date();\r\n\r\n /**\r\n * Evaluates if the current date is less than the date set as start date if it is,\r\n * returns the start date if not returns the current date\r\n */\r\n let startDate = new Date(startYear, startMonth - 1, startDay);\r\n\r\n /**\r\n * Returns the first month of the current period\r\n */\r\n const firstMonthOfPeriod = Math.floor(currentDate.getMonth() / period) * period;\r\n const lastMonthIfPeriod = firstMonthOfPeriod + period - 1;\r\n\r\n if (currentDate.getFullYear() > startDate.getFullYear()) {\r\n startDate = new Date(Number(currentDate.getFullYear()) - 1, firstMonthOfPeriod, 1);\r\n }\r\n\r\n /**\r\n * Returns the date taking into account the year of the current date and the first month of the current period.\r\n */\r\n const date = new Date(currentDate.getFullYear(), firstMonthOfPeriod, 1);\r\n\r\n if (startDate.getFullYear() > currentDate.getFullYear()) {\r\n date.setFullYear(date.getFullYear() + 1);\r\n }\r\n\r\n const today = new Date().toLocaleDateString('en-us', { year: 'numeric', month: '2-digit', day: '2-digit' });\r\n const newOpenDate = new Date(date.getFullYear(), nextOpenMonth, nextOpenDay).toLocaleDateString('en-us', { year: 'numeric', month: '2-digit', day: '2-digit' });\r\n const currentYear = today.split('/').at(2);\r\n\r\n if (new Date(today) >= new Date(newOpenDate) && spotlightCanSeeNewPeriod()) {\r\n /**\r\n * Change the values in case it is not desired to display a 12-month period.\r\n */\r\n periodsBackward = periodsForward;\r\n periodsForward = totalNewNextPeriods / period;\r\n startDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n /**\r\n * When the opening date of new months is reached,\r\n * a year is added to show that the current year's data is old data and the new data is the opening months.\r\n */\r\n date.setFullYear(date.getFullYear() + 1);\r\n startDate.setFullYear(Number(date.getFullYear()) - 1);\r\n }\r\n\r\n let endDate = new Date(Number(currentYear), lastMonthIfPeriod + 1, 0);\r\n if (endDate.getFullYear() < date.getFullYear()) {\r\n endDate = new Date(date.getFullYear(), lastMonthIfPeriod + 1, 0);\r\n }\r\n\r\n if (new Date(date) > new Date(endDate)) {\r\n endDate.setMonth(date.getMonth() + periodsForward * period);\r\n }\r\n return {\r\n startDate,\r\n endDate,\r\n period,\r\n periodsForward,\r\n periodsBackward,\r\n startYear,\r\n today,\r\n newOpenDate,\r\n date,\r\n };\r\n};\r\n\r\nconst createListAvailableMonths = (shortMonths, totalSpotPerType, marketRates, showNewPeriod) => {\r\n const { date, period, periodsForward, periodsBackward, startYear, today, newOpenDate } = getSpotlightDateRange();\r\n\r\n const monthList = [];\r\n\r\n let month = date.getMonth();\r\n let year = date.getFullYear();\r\n\r\n /**\r\n * data will only be displayed backwards if the current year is greater than\r\n * the year set in the program start key or if the date set for new months to open has passed.\r\n */\r\n if (date.getFullYear() > Number(startYear)) {\r\n for (let i = 0; i < periodsBackward * period; i++) {\r\n if (month === 0) {\r\n month = 11;\r\n year -= 1;\r\n } else {\r\n month -= 1;\r\n }\r\n const monthYear = `${shortMonths[month]}${year}`;\r\n const yearMonth = `${year}${month + 1}`;\r\n const [todayMonth, _, todayYear] = today.split('/');\r\n const todayFormated = `${todayYear}${todayMonth.padStart(2, '0')}`;\r\n const isDisable = `${year}${(month + 1).toString().padStart(2, '0')}` < `${todayYear}${todayMonth.padStart(2, '0')}`;\r\n monthList.unshift({ date: monthYear, disabled: isDisable, yearMonth });\r\n }\r\n }\r\n\r\n const nextMonths = periodsForward * period;\r\n year = date.getFullYear();\r\n month = date.getMonth();\r\n\r\n /**\r\n * Create the list of months forward\r\n */\r\n for (let i = 0; i < nextMonths; i++) {\r\n if (month > 11) {\r\n month = 0;\r\n year += 1;\r\n }\r\n\r\n const monthYear = `${shortMonths[month]}${year}`;\r\n const yearMonth = `${year}${(month + 1).toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false })}`;\r\n const [todayMonth, _, todayYear] = today.split('/');\r\n const isDisable = `${year}${(month + 1).toString().padStart(2, '0')}` < `${todayYear}${todayMonth.padStart(2, '0')}`;\r\n monthList.push({ date: monthYear, disabled: isDisable, yearMonth });\r\n month += 1;\r\n }\r\n\r\n const dates = [];\r\n /**\r\n * Creates the object for each month that represents each spot in the calendar\r\n */\r\n for (let i = 1; i <= totalSpotPerType; i++) {\r\n monthList.forEach((item) => {\r\n item.yearMonth = item.yearMonth.length < 6 ? `${item.yearMonth.slice(0, 4)}0${item.yearMonth.slice(4)}` : item.yearMonth;\r\n const { id: rateId, communityRate, homeRate, marketId, marketName } = marketRates.find(({ yearMonth, sequence }) => Number(item.yearMonth) === Number(yearMonth) && sequence === i) || {};\r\n const currentDate = new Date();\r\n const currentYear = currentDate.getFullYear();\r\n const currentMonth = currentDate.getMonth(); // Current month (0-11)\r\n\r\n // Extract the year and month of the item\r\n const itemYear = Number(item.yearMonth.slice(0, 4));\r\n const itemMonth = Number(item.yearMonth.slice(4)) - 1; // Set the month (0-11 for Date)\r\n\r\n // Check if the item is from a month prior to the current one\r\n const isPastMonth = itemYear < currentYear || (itemYear === currentYear && itemMonth < currentMonth);\r\n\r\n dates.unshift({\r\n type: `Community${i}`,\r\n [item.date]: {\r\n id: randomWord(5),\r\n type: `C${i}`,\r\n rateId,\r\n rate: communityRate,\r\n builderId: '',\r\n status: communityRate == null || isPastMonth ? spotlightStatus.NOTAPPLICABLE : spotlightStatus.AVAILABLE,\r\n isPast: isPastMonth,\r\n date: item.date,\r\n isDisabled: item.disabled || communityRate === null,\r\n marketId,\r\n marketName,\r\n yearMonth: item.yearMonth,\r\n },\r\n });\r\n\r\n dates.push({\r\n type: `Home${i}`,\r\n [item.date]: {\r\n id: randomWord(5),\r\n type: `H${i}`,\r\n rateId,\r\n rate: homeRate,\r\n builderId: '',\r\n status: homeRate == null || isPastMonth ? spotlightStatus.NOTAPPLICABLE : spotlightStatus.AVAILABLE,\r\n isPast: isPastMonth,\r\n date: item.date,\r\n isDisabled: item.disabled || homeRate === null,\r\n marketId,\r\n marketName,\r\n yearMonth: item.yearMonth,\r\n },\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * monthList is used to create the calendar columns,\r\n * datesObj are the objects that reference each spot,\r\n * these objects must be mixed with the data returned from the API (if any).\r\n */\r\n return { monthList, datesObj: dates };\r\n};\r\n\r\nconst groupByListingType = (data) => {\r\n const result = orderByField(data, 'type').reduce((res, obj) => {\r\n const { type, ...props } = obj;\r\n\r\n if (!res[type]) {\r\n res[type] = { type };\r\n }\r\n\r\n Object.keys(props).forEach((month) => {\r\n res[type][month] = props[month];\r\n });\r\n\r\n return res;\r\n }, {});\r\n\r\n return Object.values(result);\r\n};\r\n\r\nexport const verifyStatus = (data) => {\r\n data.forEach((element, index) => {\r\n const currentSate = Object.values(element).filter((item) => typeof item === 'object');\r\n\r\n currentSate.forEach((month) => {\r\n const { date, status } = month;\r\n\r\n if (status === spotlightStatus.PENDING || status === spotlightStatus.YOURS || status === spotlightStatus.SELECTED) {\r\n data.forEach((nextElement, nextIndex) => {\r\n if (nextIndex !== index) {\r\n const otroTipoEstados = Object.values(nextElement).filter((item) => typeof item === 'object');\r\n\r\n otroTipoEstados.forEach((nextDate) => {\r\n if (nextDate.date === date && nextDate.status === spotlightStatus.AVAILABLE && element.type.at(0) === nextElement.type.at(0)) {\r\n nextDate.status = spotlightStatus.UNAVAILABLE;\r\n }\r\n });\r\n }\r\n });\r\n } else if (status === spotlightStatus.AVAILABLE) {\r\n data.forEach((nextElement, nextIndex) => {\r\n if (nextIndex !== index) {\r\n const otroTipoEstados = Object.values(nextElement).filter((item) => typeof item === 'object');\r\n\r\n otroTipoEstados.forEach((nextDate) => {\r\n if (nextDate.date === date && nextDate.status === spotlightStatus.UNAVAILABLE && element.type.at(0) === nextElement.type.at(0)) {\r\n nextDate.status = spotlightStatus.AVAILABLE;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n });\r\n\r\n return data;\r\n};\r\n\r\n// Format the order detail object to give some more extra properties\r\nexport const formatOrderDetailData = (detail) => {\r\n // format a given yearMonth format date ([YEAR(4)][MONTH(2)]) string, it convert it to a short date string like Jan 2023 ([Moth(3)][Year(4)])\r\n const formatShortDate = (stringDate) => {\r\n const year = parseInt(stringDate.toString().substring(0, 4));\r\n const month = parseInt(stringDate.toString().substring(4)) - 1; // Restamos 1 al mes ya que los meses en JavaScript van de 0 a 11\r\n\r\n return dateShortTextFormater.format(new Date(year, month));\r\n };\r\n\r\n let listingName = '';\r\n\r\n if (detail.type === 'COM') {\r\n listingName = detail?.community?.name;\r\n } else {\r\n listingName = detail.spec ? `${detail?.plan?.name} ${detail?.spec?.streetAddress1} (${detail?.community?.name})` : `${detail?.plan?.name} (${detail?.community?.name})`;\r\n }\r\n\r\n let listingImages = [];\r\n\r\n if (!isNaN(detail.id)) {\r\n if (detail.type === 'COM') {\r\n listingImages = detail?.community\r\n ? [\r\n ...Object.keys(detail?.community)\r\n .filter((key) => key.startsWith('thumb'))\r\n .map((key) => detail?.community?.[key]),\r\n ]\r\n : [];\r\n } else {\r\n listingImages = detail?.spec || detail?.plan ? [detail?.[detail?.specId ? 'spec' : 'plan']?.thumbnail?.localPath] : [];\r\n }\r\n\r\n listingImages = empty(listingImages) ? detail.images : listingImages;\r\n } else {\r\n listingImages = detail.images;\r\n }\r\n\r\n const newDetail = {\r\n ...detail,\r\n deleted: false,\r\n isEmpty: empty(detail.communityId) && empty(detail.planId) && empty(detail.specId),\r\n marketId: detail.market?.id || 0,\r\n marketName: detail.market?.name || '',\r\n isCommunity: detail.type?.charAt(0) === 'C',\r\n typeText: detail.type?.charAt(0) === 'C' ? 'Community' : 'Home',\r\n typeShortText: detail.type?.charAt(0) === 'C' ? 'Comm' : 'Home',\r\n dateText: detail.yearMonth ? formatShortDate(detail.yearMonth) : '',\r\n images: listingImages,\r\n listingId: detail.specId || detail.planId || detail.communityId || null,\r\n listingName,\r\n listingNumber: detail.spec?.number || detail.plan?.number || detail.community?.number,\r\n };\r\n\r\n if (newDetail.spec) {\r\n newDetail.isActiveOnNHS = detail.spec?.isActiveOnNHS;\r\n } else if (newDetail.plan) {\r\n newDetail.isActiveOnNHS = detail.plan?.isActiveOnNHS;\r\n } else if (newDetail.community) {\r\n newDetail.isActiveOnNHS = detail.community?.isActiveOnNHS;\r\n } else {\r\n newDetail.isActiveOnNHS = false;\r\n }\r\n\r\n return newDetail;\r\n};\r\n\r\n// Return all orders assigned to a builder and a market\r\nexport const spotlightOrdersLastOne = (state, corpId) => {\r\n const entities =\r\n modelsSelector(state, [SpotlightOrder()], {\r\n filters: [\r\n {\r\n action: 'EQUALS',\r\n params: { value: corpId, prop: 'builderId' },\r\n },\r\n ],\r\n })?.[0]?.spotlightOrders || [];\r\n\r\n // return the lastest saved order\r\n const lastOrder = orderByField(entities, 'id', 'desc')?.[0] || null;\r\n return { ...lastOrder, details: lastOrder.details.map((d) => formatOrderDetailData(d)) };\r\n};\r\n\r\nexport const spotlightCanSeeNewPeriod = () => {\r\n return config('SpotlightActiveNewPeriodAll').toLowerCase() === 'true' || auth().can(PermissionType.WRITE, BDXLivePermission.SPOTLIGHTACCESSNEWPERIOD);\r\n};\r\n\r\n// Return all orders assigned to a builder and a market\r\nexport const spotlightOrdersByBuilderAndMarket = (state, corpId, { marketId, isLandingPage }) => {\r\n const model = SpotlightOrder();\r\n\r\n const today = new Date().toLocaleDateString('en-us', { year: 'numeric', month: '2-digit', day: '2-digit' });\r\n const currentYearMonth = `${today.split('/').at(2)}${today.split('/').at(0)}`;\r\n const entities =\r\n modelsSelector(state, [model], {\r\n filters: [\r\n {\r\n action: 'EQUALS',\r\n params: { value: corpId, prop: 'builderId' },\r\n },\r\n ],\r\n })?.[0]?.spotlightOrders || [];\r\n\r\n // Function to check if we need to filter the orders for external users, for only display orders created before the pre open\r\n const filterByOrderCreatedAndPeriod = ({ dateCreated, details }) => {\r\n const [nextOpenMonth, nextOpenDay] = config('SpotlightNextPeriodOpenDate').split('-').map(Number);\r\n const newPeriodOpenDate = new Date(new Date(dateCreated).getFullYear(), nextOpenMonth, nextOpenDay);\r\n\r\n // if period is opened for everybody or it is a user that have access to the pre open period, so dont filter by this dates\r\n if (spotlightCanSeeNewPeriod()) return true;\r\n\r\n // only display order for external users that werent created by internal users in the special pre open period\r\n // this filter exclude any order with at least 1 detail from the future new period.\r\n return !details.some((d) => Number(d.yearMonth.slice(0, 4)) > Number(today.split('/').at(2)));\r\n };\r\n\r\n const orders = entities\r\n .filter((o) => (o.details.some((d) => d.market?.id === marketId) || !marketId) && o.status !== 'Deleted' && filterByOrderCreatedAndPeriod(o))\r\n .map(({ id, orderNumber, builderId, builder: { builderName } = {}, status, total, details, user, dateCreated }) => {\r\n const commsLenght = details.filter(({ type }) => type === 'COM').length;\r\n const homesLenght = details.filter(({ type }) => type === 'HM').length;\r\n const markets = [...new Set(details.map(({ market }) => market.name))];\r\n const hasEmptySlots = details.some((d) => Number(d.yearMonth) >= Number(currentYearMonth) && ((d.community ? !d.community.isActiveOnNHS : false) || (d.plan && !d.spec ? !d.plan.isActiveOnNHS : false) || (d.spec ? !d.spec.isActiveOnNHS : false))) || details.every((d) => empty(d.communityId) && empty(d.planId) && empty(d.specId));\r\n const isPendingOrder = status === 'Submitted' && !hasEmptySlots;\r\n const isExpiredOrder = status === 'Disapproved';\r\n const selectedDataStatus = details.length === 0 ? 'Terminated' : hasEmptySlots && !isExpiredOrder ? 'Needs Data Selection' : '';\r\n\r\n const newOrder = {\r\n id,\r\n orderNumber,\r\n builderId,\r\n builderName,\r\n status,\r\n total,\r\n details: arrayToObjectByField(\r\n details?.filter((d) => d.market?.id === marketId || !marketId).map((d) => formatOrderDetailData(d)),\r\n 'id'\r\n ),\r\n };\r\n\r\n if (isLandingPage) {\r\n newOrder.hasEmptySlots = details.some((d) => empty(d.communityId) && empty(d.planId) && empty(d.specId)); // TODO: Also check the community isActiveOnNHS when ready on api\r\n newOrder.date = !empty(dateCreated) ? dateLocalFormater.format(new Date(`${dateCreated}`)) : '';\r\n newOrder.orderBy = user;\r\n newOrder.orderStatus = status;\r\n // eslint-disable-next-line no-nested-ternary\r\n newOrder.status = selectedDataStatus ? selectedDataStatus : isPendingOrder ? 'Pending' : isExpiredOrder ? 'Expired' : 'Contracted';\r\n newOrder.position = `${homesLenght > 0 ? `Home (${homesLenght}) ` : ''} ${commsLenght > 0 ? `Community (${commsLenght})` : ''}`;\r\n newOrder.marketName = markets?.length > 1 ? 'Multiple Markets' : markets?.[0];\r\n newOrder.marketsList = [...markets.sort()].join(', ');\r\n newOrder.isNeedAttentationOrder = newOrder.hasEmptySlots || newOrder.status === 'Needs Data Selection';\r\n newOrder.isPendingOrder = isPendingOrder;\r\n }\r\n\r\n return newOrder;\r\n });\r\n\r\n if (!isLandingPage) {\r\n // add by default always de empty order to start edting\r\n const newOrder = {\r\n id: 1,\r\n isNew: true,\r\n status: statusName.SUBMITTED,\r\n builderId: corpId,\r\n billToCorp: false,\r\n email: '',\r\n signeeName: '',\r\n details: {},\r\n };\r\n\r\n return [newOrder, ...orderByField(orders, 'id', 'desc')]; // sort orders by id desc (this will put empty order first and the lastest order created first)\r\n }\r\n return orderByField(orders, 'id', 'desc');\r\n};\r\n\r\nconst formatMonthYear = (year, month) => {\r\n return Number(`${year}${new Date(year, month - 1).toLocaleDateString('en-us', { month: '2-digit' })}`);\r\n};\r\n\r\nconst diffMonthYear = (dateStart, dateEnd) => {\r\n const startDate = new Date(dateStart);\r\n const endDate = new Date(dateEnd);\r\n\r\n const diffYears = endDate.getFullYear() - startDate.getFullYear();\r\n const diffMonths = endDate.getMonth() - startDate.getMonth();\r\n\r\n return diffYears * 12 + diffMonths;\r\n};\r\n\r\nconst selectionByPriority = (group) => {\r\n group.sort((a, b) => a.priority - b.priority);\r\n\r\n return group[0];\r\n};\r\n","import { empty, isNullish } from '@/lodash/';\r\nimport { qif } from '@/utils/api/graph-helpers';\r\n\r\nexport const SPOTLIGHT_ORDER_FIELDS = `\r\n orderNumber,\r\n dateCreated,\r\n builderId,\r\n builder {\r\n builderName\r\n },\r\n status,\r\n user,\r\n createdBy,\r\n total,\r\n`;\r\n\r\nexport const SPOTLIGHT_ORDER_DETAIL_FIELDS = (retrieveImages, marketId, startDate, endDate, includeInactive) => `\r\n details${\r\n !empty(marketId) || !empty(startDate) || !empty(endDate) || includeInactive\r\n ? `(${empty(marketId) ? '' : `marketId: ${marketId},`}\r\n ${includeInactive ? `includeInactive: true,` : ''}\r\n ${qif(!isNullish(startDate), () => `startDate: \"${startDate}\",`)}\r\n ${qif(!isNullish(endDate), () => `endDate: \"${endDate}\",`)})`\r\n : ''\r\n } \r\n {\r\n id,\r\n orderId,\r\n communityId,\r\n community {\r\n id,\r\n name,\r\n number,\r\n isActiveOnNHS,\r\n ${retrieveImages ? 'thumb1, thumb2, thumb3,' : ''}\r\n }\r\n planId,\r\n plan {\r\n id,\r\n name,\r\n number,\r\n isActiveOnNHS,\r\n ${retrieveImages ? ' thumbnail { localPath }' : ''}\r\n }\r\n specId,\r\n spec {\r\n id,\r\n number,\r\n streetAddress1,\r\n isActiveOnNHS,\r\n ${retrieveImages ? ' thumbnail { localPath }' : ''} \r\n }\r\n yearMonth,\r\n rateId,\r\n rate,\r\n market {\r\n id,\r\n name,\r\n state\r\n },\r\n sequence,\r\n type,\r\n startDate,\r\n endDate\r\n }`;\r\n\r\nexport const MARKET_FIELDS = `\r\n id\r\n name\r\n parentBuilderId\r\n state\r\n hasBuilderSpotlightContract\r\n hasSpotlightPendingSlots\r\n`;\r\n\r\nexport const MARKET_RATES_FIELDS = `\r\n id\r\n marketId\r\n marketName\r\n communityRate\r\n homeRate\r\n yearMonth\r\n sequence\r\n`;\r\n","import { dateNumericalFormater, empty, isNullish } from '@/lodash/';\r\nimport { SPOTLIGHT_ORDER_FIELDS, SPOTLIGHT_ORDER_DETAIL_FIELDS, MARKET_FIELDS, MARKET_RATES_FIELDS } from './fields';\r\nimport { qif } from '@/utils/api/graph-helpers';\r\nimport apiClient from '@/utils/api/api';\r\nimport { getSpotlightDateRange } from './selectors';\r\n\r\n/**\r\n * Request for the order detail by id\r\n */\r\nexport const spotlightOrdersRequestByDates = ({ builderId, marketId, isLanding, startDate, endDate }) => `\r\n query spotlightOrdersRequest {\r\n spotlightOrders(\r\n status: [Submitted, Approved, Disapproved, Deleted], \r\n ${qif(!isNullish(startDate), () => `startDate: \"${startDate}\",`)} \r\n ${qif(!isNullish(endDate), () => `endDate: \"${endDate}\",`)} \r\n ${qif(!isNullish(marketId), () => `marketIds: [${marketId}],`)} \r\n ${qif(!isNullish(builderId), () => `builderId: ${builderId},`)}) { \r\n id,\r\n ${SPOTLIGHT_ORDER_FIELDS}\r\n ${SPOTLIGHT_ORDER_DETAIL_FIELDS(!isLanding, marketId, startDate, endDate)} \r\n }\r\n }\r\n`;\r\n\r\nexport const saveSpotlightOrderMutationApi = (spotlight) => SAVE_SPOTLIGHT_MUTATION(spotlight);\r\n\r\nconst SAVE_SPOTLIGHT_MUTATION = ({ id, total, builderId, email, signeeName, billToCorp, isNew, details }) => {\r\n const { startDate: startPeriodDate, endDate: endPeriodDate } = getSpotlightDateRange();\r\n const start = dateNumericalFormater.format(new Date(startPeriodDate));\r\n const end = dateNumericalFormater.format(new Date(endPeriodDate));\r\n\r\n return `mutation {${!isNew ? `updateSpotlightOrder` : `insertSpotlightOrder`}(\r\n ${qif(!isNew, () => `id: ${id},`)}\r\n ${qif(!isNullish(builderId), () => `builderId: ${builderId},`)}\r\n ${qif(!isNullish(billToCorp), () => `billToCorp: ${billToCorp},`)}\r\n ${qif(!isNullish(email), () => `email: \"${email}\",`)}\r\n ${qif(!isNullish(signeeName), () => `signeeName: \"${signeeName}\",`)}\r\n ${qif(!isNullish(total), () => `total: ${total},`)}\r\n ${qif(isNew, () => `status: Submitted,`)}\r\n ${\r\n !empty(details)\r\n ? `details: [${details.map(({ id: detailId, rateId, communityId, specId, planId, type, endDate, startDate }) =>\r\n isNew\r\n ? `{ ${qif(!isNullish(detailId) && !isNaN(detailId), () => `id: ${detailId},`)}\r\n ${qif(!isNullish(rateId), () => `rateId: ${rateId},`)} \r\n ${qif(!isNullish(communityId), () => `communityId: ${communityId},`)}\r\n ${qif(!isNullish(specId), () => `specId: ${specId},`)}\r\n ${qif(!isNullish(planId), () => `planId: ${planId},`)}\r\n ${qif(!isNullish(type), () => `type: \"${type}\",`)}\r\n ${qif(!isNullish(endDate), () => `endDate: \"${endDate}\",`)}\r\n ${qif(!isNullish(startDate), () => `startDate: \"${startDate}\",`)}\r\n }`\r\n : `\r\n {\r\n ${qif(!isNullish(detailId) && !isNaN(detailId), () => `id: ${detailId},`)}\r\n ${qif(!isNullish(endDate), () => `endDate: \"${endDate}\",`)}\r\n },\r\n {\r\n ${qif(!isNullish(rateId), () => `rateId: ${rateId},`)} \r\n ${qif(!isNullish(communityId), () => `communityId: ${communityId},`)}\r\n ${qif(!isNullish(specId), () => `specId: ${specId},`)}\r\n ${qif(!isNullish(planId), () => `planId: ${planId},`)}\r\n ${qif(!isNullish(type), () => `type: \"${type}\",`)}\r\n ${qif(!isNullish(startDate), () => `startDate: \"${startDate}\",`)}\r\n }\r\n `\r\n )}]`\r\n : ''\r\n }\r\n )\r\n {\r\n id,\r\n ${SPOTLIGHT_ORDER_FIELDS}\r\n ${SPOTLIGHT_ORDER_DETAIL_FIELDS(true, null, start, end)}\r\n }\r\n }`.trim();\r\n};\r\n\r\nexport const deleteSpotlightOrderMutationApi = (spotlightDetails) => apiClient.post(null, { query: API_DELETE_SPOTLIGHT_ORDER(spotlightDetails) });\r\nexport const API_DELETE_SPOTLIGHT_ORDER = ({ id, endDate, builderId, detailId }) => `\r\n mutation {\r\n updateSpotlightOrder(\r\n isDeleted: true,\r\n ${qif(!isNullish(id), () => `id: ${id},`)}\r\n ${qif(!isNullish(builderId), () => `builderId: ${builderId},`)}\r\n details: [\r\n {\r\n ${qif(!isNullish(detailId) && !isNaN(detailId), () => `id: ${detailId},`)}\r\n ${qif(!isNullish(endDate), () => `endDate: \"${endDate}\",`)}\r\n }\r\n ]\r\n ) {\r\n id\r\n orderNumber\r\n builderId\r\n }\r\n }\r\n`;\r\n\r\n/**\r\n * Query for tree view population and header information.\r\n * @param {Number} builderId\r\n */\r\nexport async function marketTreeViewQuery(builderId, startDate) {\r\n let response = {};\r\n\r\n try {\r\n response = await apiClient.post(null, {\r\n query: `\r\n query MarketsTreeView {\r\n markets(builderIds: [${builderId}], ${empty(startDate) ? '' : `, startDate: \"${startDate}\"`} , isForSpotlight: true, commStatuses: [Approved]) {\r\n id,\r\n name,\r\n ${MARKET_FIELDS}\r\n }\r\n }\r\n `,\r\n });\r\n } catch (error) {\r\n return { error };\r\n }\r\n\r\n return { data: response?.data?.Result?.markets };\r\n}\r\n\r\n/**\r\n * Get a spotlight order by ID\r\n */\r\nexport async function spotlightOrderRequestById(orderId) {\r\n return apiClient.post(null, {\r\n query: `query {\r\n spotlightOrders(orderId: ${orderId}, status: [Submitted, Approved, Disapproved]) {\r\n id,\r\n ${SPOTLIGHT_ORDER_FIELDS}\r\n ${SPOTLIGHT_ORDER_DETAIL_FIELDS(false, null, null, null, true)} \r\n }\r\n }`,\r\n });\r\n}\r\n\r\n/**\r\n * Query for the calendar, retrieving all the oders data for a market\r\n */\r\nexport async function spotlightOrdersRequestByMarket(marketId, builderId, startDate, endDate) {\r\n let response = {};\r\n try {\r\n response = await apiClient.post(null, {\r\n query: `query {\r\n spotlightOrders(marketIds: [${marketId}], status: [Submitted, Approved]) {\r\n builderId,\r\n status,\r\n details(marketId: ${marketId}) {\r\n id,\r\n type,\r\n yearMonth,\r\n sequence\r\n }\r\n }\r\n spotlightMarket(marketIds: [${marketId}], builderId: ${builderId}, ${qif(!isNullish(startDate), () => `,startDate: \"${startDate}\"`)} ${qif(!isNullish(endDate), () => `,endDate: \"${endDate}\"`)}) {\r\n ${MARKET_RATES_FIELDS}\r\n }\r\n }`,\r\n });\r\n } catch (error) {\r\n return { data: {}, error };\r\n }\r\n\r\n const { spotlightOrders, spotlightMarket } = response?.data?.Result;\r\n\r\n return {\r\n data: {\r\n ordersData: spotlightOrders,\r\n marketRates: spotlightMarket,\r\n },\r\n error: {},\r\n };\r\n}\r\n\r\n/**\r\n * Get all the communities for builder corp and market\r\n * It was separated from the homes bc the community query is lots more faster than homes\r\n * so we can let the user search for comms (maybe it will be comon than homes, bc comms are more promoted on NHS)\r\n * @param {*} builderId builder corp id to return communities\r\n * @param {*} marketId market id to search on\r\n * @returns it returns a promise, so the child component that use it doesnt needs to wait until it returns\r\n */\r\nexport async function getCommunitiesByBuilderAndMarket(builderId, marketId) {\r\n return apiClient.post(null, {\r\n query: `query listingsByBuilderAndMarket {\r\n communities(\r\n marketIds: ${marketId}, \r\n builderId: ${builderId}, \r\n onlyNhsActive: true, \r\n ) {\r\n id\r\n name\r\n number\r\n }\r\n }`,\r\n });\r\n}\r\n\r\n/**\r\n * Get all the homes (plans and specs) for builder corp and market\r\n * It was separated from the comms bc the community query is lots more faster and common, so we can\r\n * display loading only in case user selected to add a home (less common)\r\n * @param {*} builderId builder corp id to return communities\r\n * @param {*} marketId market id to search on\r\n * @returns it returns a promise, so the child component that use it doesnt needs to wait until it returns\r\n */\r\nexport async function getHomesByBuilderAndMarket(builderId, marketId) {\r\n return apiClient.post(null, {\r\n query: `query listingsByBuilderAndMarket {\r\n plans(onlyNhsActive: true, marketIds: ${marketId}, builderId: ${builderId}, top: 1000) {\r\n id\r\n name\r\n number\r\n communityId\r\n } \r\n specs(onlyNhsActive: true,marketIds: ${marketId}, builderId: ${builderId}, top: 1000) {\r\n id\r\n number\r\n streetAddress1\r\n planId\r\n communityId\r\n }\r\n }`,\r\n });\r\n}\r\n\r\n/**\r\n * Get all the thumbnail images from NHS for a listing id to be displayed in the order detail once a listing is assigned\r\n * @param {*} type listing type: community, plan, spec\r\n * @param {*} id bdx id to retrieve\r\n * @returns an array of images, for community is 3 and for homes is 1\r\n */\r\nexport async function getListingsImage(type, id) {\r\n let response = {};\r\n try {\r\n response = await apiClient.post(null, {\r\n query: `query listingImages {\r\n ${\r\n type\r\n ? `\r\n ${type === 'plan' ? 'plans' : 'specs'}(${type === 'plan' ? 'planId' : 'specId'}: ${id}) {\r\n thumbnail {\r\n localPath\r\n }\r\n }\r\n `\r\n : `\r\n communities(communityId: ${id}) {\r\n thumb1\r\n thumb2\r\n thumb3\r\n }\r\n `\r\n }\r\n }`,\r\n });\r\n } catch (error) {\r\n return { data: {}, error };\r\n }\r\n const images = response?.data?.Result;\r\n return { data: { images }, error: {} };\r\n}\r\n\r\nexport async function sendCancelOrderEmailNotification(builderId) {\r\n return apiClient.post(null, {\r\n query: `mutation {\r\n cancelSpotlightOrder(corporationId: ${builderId})\r\n }`,\r\n });\r\n}\r\n","import { Model } from '../utils/models';\r\nimport { spotlightSchema } from '../app.entities';\r\nimport { spotlightOrderById } from '@/modules/spotlight/@redux/selectors';\r\nimport { saveSpotlightOrderMutationApi } from '@/modules/spotlight/@redux/api';\r\nimport { Builder } from './Builder';\r\n\r\nexport const SpotlightOrder = () =>\r\n new Model({\r\n name: 'spotlightOrders',\r\n model: 'spotlightOrders',\r\n urlKey: 'id',\r\n title: 'Spotlight Order',\r\n schema: spotlightSchema,\r\n routeBase: 'services/spotlight/manager',\r\n mutations: { save: saveSpotlightOrderMutationApi },\r\n baseSelector: spotlightOrderById,\r\n parent: Builder(),\r\n describerFields: {\r\n id: 'id',\r\n name: 'orderNumber',\r\n relation: 'builder',\r\n relationId: 'builderId',\r\n orderId: 'id',\r\n },\r\n });\r\n","import { SpotlightOrder } from '@/models/SpotlightOrder';\r\nimport { QueryFailAction, QueryRequestAction, QuerySuccessAction } from '@/redux/models/actions';\r\nimport { spotlightOrdersRequestByDates } from './api';\r\nimport { SPOTLIGHT_ORDERS_FAIL, SPOTLIGHT_ORDERS_REQUEST, SPOTLIGHT_ORDERS_SUCCESS } from './types';\r\n\r\n/**\r\n * spotlight Details Page request\r\n */\r\nexport const spotlightOrdersRequest = QueryRequestAction(SPOTLIGHT_ORDERS_REQUEST, spotlightOrdersRequestByDates, SpotlightOrder());\r\nexport const spotlightOrdersSuccess = QuerySuccessAction(SPOTLIGHT_ORDERS_SUCCESS);\r\nexport const spotlightOrdersFail = QueryFailAction(SPOTLIGHT_ORDERS_FAIL);\r\n","import { getModels } from '@/redux/models/sagas';\r\nimport { takeLatest } from 'redux-saga/effects';\r\nimport { SPOTLIGHT_ORDERS_REQUEST } from './types';\r\nimport { spotlightOrdersFail, spotlightOrdersSuccess } from './actions';\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const spotlightSagas = [\r\n /**\r\n * This effect listens to BRAND_TREE_VIEW_REQUEST\r\n * and cancels the current operation on future request\r\n * @param { string } pattern action type to be listened\r\n * @param { function } saga operation to be executed\r\n * @param { Array } args arguments to be passed to the started task\r\n */\r\n takeLatest(SPOTLIGHT_ORDERS_REQUEST, getModels, spotlightOrdersSuccess, spotlightOrdersFail),\r\n];\r\n","export const GREENFRAGMENT = `\r\n id: programId,\r\n internalName,\r\n displayName,\r\n greenUrl,\r\n level,\r\n thumbnailPath,\r\n flyer {\r\n filePath,\r\n }\r\n builder {\r\n builderId,\r\n builderName,\r\n parentBuilderId,\r\n parentBuilder {\r\n builderId,\r\n builderName,\r\n }\r\n }\r\n communities(top: 1500) {\r\n id,\r\n name,\r\n builderId,\r\n }\r\n`;\r\n","import { empty } from '@/lodash/empty';\r\nimport { GREENFRAGMENT } from './fields';\r\nimport { qif } from '@/utils/api/graph-helpers';\r\nimport { isNullish } from '@/lodash/isNullish';\r\nimport { JSONText } from '@/lodash/';\r\nimport apiClient from '@/utils/api/api';\r\nimport { greenLevel } from '@/constants/bdx-lookups';\r\n\r\nexport const GreenProgramsRequest = ({ entityId: builderId, search, pageNumber, pageSize }) =>\r\n `query {\r\n greenPrograms(builderId: ${builderId}, \r\n ${search ? `, search: ${JSONText(search)}` : ''}\r\n page: ${pageNumber - 1 || 0}\r\n ${pageSize ? `,top: ${pageSize}` : ''}) {\r\n ${GREENFRAGMENT}\r\n }\r\n greenProgramsCount(builderId: ${builderId}) \r\n }`;\r\n\r\nexport const updateGreenProgramMutationApi = ({ id, internalName, displayName, greenUrl, level, file, deleteAssociatedFile, corporationId, divisions, communities, added, deleted }) => {\r\n let greenFields = '';\r\n\r\n if (added && deleted) return;\r\n\r\n greenFields = `${qif(!isNullish(internalName), () => `internalName: ${JSONText(internalName)},`)}\r\n ${qif(!isNullish(displayName), () => `displayName: ${JSONText(displayName)},`)}\r\n ${qif(!isNullish(greenUrl), () => `greenUrl: ${JSONText(greenUrl)},`)}\r\n ${qif(!isNullish(level), () => `level: ${level},`)}\r\n ${qif(!isNullish(file), () => `file: $file${id},`)} \r\n ${deleteAssociatedFile ? ',deleteAssociatedFile: true,' : ''} \r\n ${qif(!isNullish(corporationId), () => `corporationId: ${corporationId},`)}\r\n ${qif(!isNullish(corporationId) && empty(communities) && level === greenLevel.CORP, () => `builderIds: [${corporationId}],`)}\r\n ${qif(!isNullish(divisions) && level === greenLevel.DIV, () => `builderIds: [${divisions.map((d) => d)}],`)}\r\n ${qif(!isNullish(communities) && !empty(communities), () => `communityIds: [${communities.map((k) => k)}]`)}`.trim();\r\n\r\n if (deleted) {\r\n return DELETE_GREEN_PROGRAM_MUTATION(id);\r\n } else if (added) {\r\n return INSERT_GREEN_PROGRAM_MUTATION(greenFields);\r\n }\r\n return `mutation { updateGreenProgram(\r\n programId: ${id},\r\n ${qif(!empty(greenFields), () => `${greenFields}`)} \r\n )\r\n {\r\n ${GREENFRAGMENT}\r\n }\r\n }`.trim();\r\n};\r\n\r\nexport const INSERT_GREEN_PROGRAM_MUTATION = (greenFields) =>\r\n `mutation { insertGreenProgram(\r\n ${qif(!empty(greenFields), () => `${greenFields}`)} \r\n )\r\n {\r\n ${GREENFRAGMENT}\r\n }\r\n }`.trim();\r\n\r\nexport const DELETE_GREEN_PROGRAM_MUTATION = (id) => `mutation {\r\n deleteGreenProgram(ids:${id}){\r\n id,\r\n deleted\r\n }\r\n}\r\n`;\r\n\r\n/**\r\n * Return the complete list of communities for a corporation id\r\n * @param {A} builderId Corporation id\r\n * @returns a promise to the request, so the client can handle the error or success of the operation\r\n */\r\nexport async function greenGetDivisionsData(builderId) {\r\n return apiClient.post(null, {\r\n query: `\r\n query {\r\n communities(builderId: ${builderId}, top: 1500, onlyNhsActive: true, orgTypeCodes: [CST, PRD, MFR]) {\r\n id\r\n name\r\n hasGreenProgram\r\n builder {\r\n builderId\r\n builderName\r\n hasGreenProgram\r\n }\r\n }\r\n }\r\n `,\r\n });\r\n}\r\n","import { greenProgramUpdateMutateRequest } from '@/modules/listings-detail/community-detail/@redux/marketing/actions';\r\nimport { greenProgramSchema } from '../app.entities';\r\n\r\nimport { Model } from '../utils/models';\r\nimport { GraphQLQuery } from '@/utils/api/graph-helpers';\r\nimport { updateGreenProgramMutationApi } from '@/modules/content-libraries/green-program/@redux/api';\r\n\r\nexport const GreenProgram = () =>\r\n new Model({\r\n name: 'greenPrograms',\r\n model: 'greenPrograms',\r\n urlKey: 'id',\r\n describerFields: {\r\n id: 'id',\r\n name: 'displayName',\r\n relation: 'builder',\r\n relationId: 'builderId',\r\n },\r\n schema: greenProgramSchema,\r\n mutations: { insert: greenProgramUpdateMutateRequest, update: greenProgramUpdateMutateRequest, save: updateGreenProgramMutationApi },\r\n query: new GraphQLQuery([\r\n {\r\n operation: 'greenPrograms',\r\n argument: {},\r\n fields: ['builderId'],\r\n },\r\n ]),\r\n template(id, context) {\r\n return {\r\n id,\r\n internalName: String(),\r\n displayName: String(),\r\n greenUrl: String(),\r\n flyerFilePath: String(),\r\n communities: Array,\r\n builder: Array,\r\n ...context,\r\n };\r\n },\r\n });\r\n","import { GreenProgram } from '@/models/GreenProgram';\r\nimport { GREEN_PROGRAMS_FAIL, GREEN_PROGRAMS_REQUEST, GREEN_PROGRAMS_SUCCESS } from './types';\r\nimport { GreenProgramsRequest } from './api';\r\nimport { QueryFailAction, QueryRequestAction, QuerySuccessAction } from '@/redux/models/actions';\r\nimport { setParam, setParams } from '@/redux/page-location/actions';\r\nimport { PAGE_NUMBER, PAGE_SIZE, SEARCH, SORT } from '@/constants/params';\r\n\r\nexport const greenProgramsRequest = QueryRequestAction(GREEN_PROGRAMS_REQUEST, GreenProgramsRequest, GreenProgram());\r\nexport const greenProgramsSuccess = QuerySuccessAction(GREEN_PROGRAMS_SUCCESS);\r\nexport const greenProgramsFail = QueryFailAction(GREEN_PROGRAMS_FAIL);\r\n\r\n/**\r\n * Filters.\r\n */\r\nexport const setGreemProgramPageNumber = (pageNumber) => setParam(PAGE_NUMBER, pageNumber);\r\nexport const setGreemProgramPagination = (pageSize) => setParams({ [PAGE_SIZE]: pageSize, [PAGE_NUMBER]: 1 });\r\nexport const setGreemProgramSearch = (search) => setParams({ [SEARCH]: search, [PAGE_NUMBER]: 1 });\r\n","import { takeLatest } from 'redux-saga/effects';\r\nimport { GREEN_PROGRAMS_REQUEST } from './types';\r\nimport { getModels } from '@/redux/models/sagas';\r\nimport { greenProgramsFail, greenProgramsSuccess } from './actions';\r\n\r\n/**\r\n * Saga Models\r\n */\r\nexport const greenProgramSagas = [takeLatest(GREEN_PROGRAMS_REQUEST, getModels, greenProgramsSuccess, greenProgramsFail)];\r\n","import { all, put, call, takeEvery } from 'redux-saga/effects';\r\nimport { planLibrarySagas } from '@/modules/content-libraries/plans/@redux/sagas';\r\nimport { assignedCommunitiesSagas } from '@/modules/content-libraries/plans/@redux/assigned-communities/sagas';\r\nimport { planParentSagas } from '@/modules/content-libraries/plans/plan-parent-detail/@redux/sagas';\r\nimport { manageCommunitiesSagas } from '@/modules/landing-pages/community/@redux/sagas';\r\nimport { manageMpcsSagas } from '@/modules/landing-pages/mpc/@redux/sagas';\r\nimport { manageSpecsSagas } from '@/modules/landing-pages/spec/@redux/sagas';\r\nimport { quickEditSagas } from '@/modules/quick-edit-table/redux/sagas';\r\nimport { leadRecipientsSagas } from '@/modules/lead-recipients/redux/sagas';\r\nimport { authSagas } from '../modules/auth/@redux/sagas';\r\nimport { modelsSagas } from './models/sagas';\r\nimport { globalSagas } from '../modules/global/@redux/sagas';\r\nimport { searchSagas } from './search/sagas';\r\nimport { changeHistorySagas } from '../modules/global/components/bdx-change-history/@redux/sagas';\r\nimport { dataLocksSagas } from '../modules/global/components/bdx-data-locks/@redux/sagas';\r\nimport { contentSagas } from './content/sagas';\r\nimport { listingDetailSagas } from '../modules/listings-detail/@redux/sagas';\r\nimport { communityDetailSagas } from '../modules/listings-detail/community-detail/@redux/sagas';\r\nimport { userDetailSagas } from '../modules/user-management/redux/sagas';\r\nimport { planDetailSagas } from '../modules/listings-detail/plan-detail/@redux/sagas';\r\nimport { specDetailSagas } from '../modules/listings-detail/spec-detail/@redux/sagas';\r\nimport { imageSagas } from './images/sagas';\r\nimport { videoSagas } from './videos/sagas';\r\nimport { locationSagas } from './location/sagas';\r\nimport { promosSagas } from '../modules/content-libraries/promotions/@redux/sagas';\r\nimport { eventsSagas } from '../modules/content-libraries/events/@redux/sagas';\r\nimport { bdxTypesSagas } from './bdx-type/sagas';\r\nimport { contextSagas } from './context/sagas';\r\nimport { pciSagas } from '../modules/listings-detail/community-detail/@redux/pci/sagas';\r\nimport { interactiveMediaSagas } from '../modules/listings-detail/@redux/interactive-media/sagas';\r\nimport { configSagas } from './config/sagas';\r\nimport { plansSagas } from './entities/plan/sagas';\r\nimport { builderSagas } from './entities/builder/sagas';\r\nimport { runAsyncFail, runAsyncSuccess } from './actions';\r\nimport { RUN_ASYNC_REQUEST } from './types';\r\nimport { lotDetailSagas } from '@/modules/listings-detail/lot-detail/@redux/sagas';\r\nimport { genericFormSagas } from './forms/sagas';\r\nimport { loaderDataSagas } from '@/modules/admin/loader-data/@redux/sagas';\r\nimport { mlsNamesSagas } from '@/modules/admin/mls-management/@redux/sagas';\r\nimport { brandSagas } from '@/modules/brand/@redux/sagas';\r\nimport { agentSagas } from '@/modules/agent/@redux/sagas';\r\nimport { listHubSagas } from '@/modules/listhub/@redux/sagas';\r\nimport { billingSagas } from '@/modules/billing/@redux/sagas';\r\nimport { spotlightSagas } from '@/modules/spotlight/@redux/sagas';\r\nimport { greenProgramSagas } from '@/modules/content-libraries/green-program/@redux/sagas';\r\n\r\n// Default Global purpose app Sagas\r\n\r\nexport function* runner({ data: { operation } }) {\r\n try {\r\n /**\r\n * Execute the async request\r\n */\r\n yield call(operation);\r\n yield put(runAsyncSuccess(operation));\r\n } catch {\r\n yield put(runAsyncFail(operation));\r\n }\r\n}\r\n\r\nexport function* rootSaga() {\r\n // prettier-ignore\r\n yield all(\r\n [\r\n takeEvery(RUN_ASYNC_REQUEST, runner),\r\n ...authSagas,\r\n ...genericFormSagas,\r\n ...(modelsSagas || []),\r\n ...contextSagas,\r\n ...globalSagas,\r\n ...configSagas,\r\n ...searchSagas,\r\n ...changeHistorySagas,\r\n ...dataLocksSagas,\r\n ...contentSagas,\r\n ...listingDetailSagas,\r\n ...communityDetailSagas,\r\n ...planDetailSagas,\r\n ...specDetailSagas,\r\n ...lotDetailSagas,\r\n ...brandSagas,\r\n ...agentSagas, \r\n ...listHubSagas,\r\n ...imageSagas,\r\n ...videoSagas,\r\n ...locationSagas,\r\n ...promosSagas,\r\n ...eventsSagas,\r\n ...bdxTypesSagas,\r\n ...pciSagas,\r\n ...interactiveMediaSagas,\r\n ...planLibrarySagas,\r\n ...assignedCommunitiesSagas,\r\n ...planParentSagas,\r\n ...manageCommunitiesSagas,\r\n ...manageMpcsSagas,\r\n ...manageSpecsSagas,\r\n ...quickEditSagas,\r\n ...userDetailSagas,\r\n ...leadRecipientsSagas,\r\n ...loaderDataSagas,\r\n ...mlsNamesSagas, \r\n ...plansSagas,\r\n ...builderSagas,\r\n ...billingSagas,\r\n ...spotlightSagas,\r\n ...greenProgramSagas,\r\n ]\r\n );\r\n}\r\n","import { EDIT_ENTITY, FORM_CHANGE, UPDATE_ENTITY, CREATE_ENTITY, DELETE_ENTITY } from './types';\r\nimport { modelById } from '../models/selectors';\r\nimport { Model } from '../../utils/models';\r\nimport { editEntitiesDifferencesSelector, editEntitySelector, editEntityByModelSelector } from './selectors';\r\nimport { objectPath, empty } from '../../utils/bdx-lodash-lite';\r\n\r\n/**\r\n * Form incharged of processing form request\r\n * This will find the entities based on their id and model and add them to the action\r\n * on that way we can assure that the correct data reach the reducer and that no side effects are run from it.\r\n */\r\nexport const formsMiddleware =\r\n () =>\r\n ({ getState }) =>\r\n (next) =>\r\n (action = {}) => {\r\n const { type, data: { entityId, changes, model: bulkModel, arrayOnlyChanges = [] } = {}, mutation, meta: { model, context, required, $bulk, formData: { formData, variables } = {} } = {} } = action;\r\n /**\r\n * The 2 possible types are EDIT_ENTITY and FORM_CHANGE\r\n * - EDIT_ENTITY will request an entity to enter edit mode\r\n * - FORM_CHANGE will process a change in an entity that's currently on edit mode\r\n */\r\n const TYPES = [EDIT_ENTITY, DELETE_ENTITY, FORM_CHANGE];\r\n if (model instanceof Model && entityId) {\r\n if (TYPES.includes(type) || mutation) {\r\n // Get the respective entity from the store\r\n let diff = mutation ? editEntitiesDifferencesSelector(getState(), entityId, model.name, required, arrayOnlyChanges) || [] : undefined;\r\n let entity = modelById(getState(), entityId, model);\r\n\r\n if (empty(entity) && empty(diff)) {\r\n const { entity: formEntity } = editEntitySelector(getState(), entityId, model.name) || {};\r\n entity = formEntity;\r\n diff = formEntity;\r\n }\r\n // Add the entity to the action\r\n action = {\r\n ...action,\r\n data: {\r\n entity,\r\n id: entityId,\r\n model: model.name,\r\n modelObject: model,\r\n changes: mutation ? diff : changes,\r\n },\r\n meta: {\r\n ...action.meta,\r\n edit: true,\r\n },\r\n };\r\n\r\n if (mutation && diff) {\r\n const changesEntity = { [model.describerFields.id]: entityId };\r\n // eslint-disable-next-line prettier/prettier\r\n Object.keys(diff).map(field => \r\n objectPath(changesEntity).set(field, diff[field])\r\n );\r\n\r\n action.mutation = action.mutation(changesEntity, formData instanceof FormData);\r\n }\r\n if (formData instanceof FormData) {\r\n formData.delete('operations');\r\n formData.append(\r\n 'operations',\r\n JSON.stringify({\r\n query: action.mutation,\r\n variables,\r\n })\r\n );\r\n action.formData = formData;\r\n }\r\n } else if (type === CREATE_ENTITY) {\r\n const entity = model.template(entityId, context);\r\n action = {\r\n ...action,\r\n data: {\r\n id: entityId,\r\n entity: empty(changes) ? entity : { ...entity, ...changes },\r\n model: model.name,\r\n modelObject: model,\r\n },\r\n meta: {\r\n ...action.meta,\r\n edit: true,\r\n },\r\n };\r\n } else if (type === UPDATE_ENTITY) {\r\n action = {\r\n ...action,\r\n data: {\r\n id: entityId,\r\n model,\r\n ...action.data,\r\n },\r\n meta: {\r\n ...action.meta,\r\n edit: true,\r\n },\r\n };\r\n }\r\n } else if ($bulk && mutation instanceof Function && bulkModel instanceof Model) {\r\n const editEntities = editEntityByModelSelector(getState(), bulkModel.name);\r\n action = {\r\n ...action,\r\n data: {\r\n entities: editEntities,\r\n entityId,\r\n ids: editEntities.map((editEntity) => editEntity[bulkModel.describerFields.id]),\r\n model: bulkModel.name,\r\n modelObject: bulkModel,\r\n },\r\n meta: {\r\n ...action.meta,\r\n $saveByModel: true,\r\n },\r\n };\r\n if (mutation) {\r\n const changesEntities = editEntities.map(({ entity }) => {\r\n /**\r\n * The entity with changes\r\n */\r\n const changesEntity = { [bulkModel.describerFields.id]: entity[bulkModel.describerFields.id] };\r\n /**\r\n * Find the differences for an specific entity\r\n */\r\n const diff = editEntitiesDifferencesSelector(getState(), entity[bulkModel.describerFields.id], bulkModel.name, required);\r\n /**\r\n * Commit the differences into the changes entity\r\n */\r\n Object.keys(diff).forEach((field) => objectPath(changesEntity).set(field, diff[field]));\r\n /**\r\n * Return the changes entity\r\n */\r\n return changesEntity;\r\n });\r\n action.mutation = action.mutation(changesEntities);\r\n }\r\n }\r\n return next(action);\r\n };\r\n","import produce from 'immer';\r\nimport { IMAGES_QUERY_SUCCESS } from './types';\r\n\r\nexport const imagesReducer = (state = {}, { type, data: { result, params } = {} }) =>\r\n produce(state, (draft) => {\r\n switch (type) {\r\n case IMAGES_QUERY_SUCCESS:\r\n if (params?.brandId) {\r\n // if we didnt request the counters (case of paging change, just keep the existint)\r\n if (!result.imageCounter) {\r\n result.imageCounter = draft.brand[params.brandId].imageCounter;\r\n }\r\n\r\n /** save the search innformation for brand by brand id */\r\n return { brand: { [params.brandId]: result } };\r\n }\r\n return result;\r\n }\r\n });\r\n","import produce from 'immer';\r\nimport { VIDEOS_QUERY_SUCCESS } from './types';\r\n\r\nexport const videosReducer = (state = {}, { type, data: { result, params } = {} }) =>\r\n produce(state, (draft) => {\r\n switch (type) {\r\n case VIDEOS_QUERY_SUCCESS:\r\n if (params?.brandId) {\r\n // if we didnt request the counters (case of paging change, just keep the existint)\r\n if (!result.videoCounter) {\r\n result.videoCounter = draft.brand[params.brandId].videoCounter;\r\n }\r\n\r\n /** save the search innformation for brand by brand id */\r\n return { brand: { [params.brandId]: result } };\r\n }\r\n return result;\r\n }\r\n });\r\n","import { produce } from 'immer';\r\nimport { empty } from '../../utils/bdx-lodash-lite';\r\nimport { CONTEXT_LOADING } from './types';\r\nimport { NAV_FULL_CONTEXT } from '../../modules/global/@redux/types';\r\n\r\nexport const contextReducer = (state = { loading: false }, action = {}) =>\r\n produce(state, (draft) => {\r\n const { loading } = action.data || {};\r\n switch (action.type) {\r\n case CONTEXT_LOADING:\r\n draft.loading = loading;\r\n break;\r\n case NAV_FULL_CONTEXT:\r\n draft.loading = false;\r\n break;\r\n default:\r\n addContext(draft, action);\r\n break;\r\n }\r\n });\r\n\r\nconst addContext = (draft, { meta: { context } = {}, data: { result, section } = {} }) => {\r\n if (!empty(section) && context) {\r\n const resultId = result[section] && (result[section][0]?.id || result[section][0]);\r\n if (typeof resultId === 'number') {\r\n const set = new Set(draft[section] || []);\r\n set.add(resultId);\r\n draft[section] = Array.from(set);\r\n }\r\n } else {\r\n return draft;\r\n }\r\n};\r\n","import produce from 'immer';\r\nimport { PCI_MODAL_IMAGES_SUCCESS } from './types';\r\n\r\nexport const pciReducer = (state = [], { type, data: { result: { communities: [result] = [] } = {} } = {} }) =>\r\n produce(state, (draft) => {\r\n switch (type) {\r\n case PCI_MODAL_IMAGES_SUCCESS:\r\n if (typeof result === 'number') {\r\n const set = new Set([...draft] || []);\r\n set.add(result);\r\n return Array.from(set);\r\n }\r\n }\r\n });\r\n","import produce from 'immer';\r\n\r\nimport { INCREMENT_BOOST_PERF_FIRST_SLIDE } from './types';\r\n\r\nconst defaultState = { whatsNew: true };\r\n\r\nexport const dashboardReducer = (state = defaultState, { type, max }) =>\r\n produce(state, (draft) => {\r\n switch (type) {\r\n case INCREMENT_BOOST_PERF_FIRST_SLIDE: {\r\n let index = state.boostPerfFirstSlideIndex;\r\n\r\n if (index === undefined || !(index + 1 < max)) {\r\n index = 0;\r\n } else {\r\n index += 1;\r\n }\r\n\r\n draft.boostPerfFirstSlideIndex = index;\r\n break;\r\n }\r\n }\r\n });\r\n","export const CHANGE_THEME = 'bdxlive/theme/change_theme';\r\n","import produce from 'immer';\r\nimport { CHANGE_THEME } from './types';\r\n\r\nexport const themeReducer = (state = localStorage.getItem('theme') || 'light', { type, data: { theme } = {} }) =>\r\n produce(state, () => {\r\n switch (type) {\r\n case CHANGE_THEME:\r\n return theme;\r\n default:\r\n return state;\r\n }\r\n });\r\n","import { Subject } from 'rxjs';\r\n\r\n/**\r\n * @type {import('redux/index').Store}\r\n */\r\nlet store = null;\r\n/**\r\n * @type {import('rxjs/internal/Subject').Subject}\r\n */\r\nlet subject = null;\r\n\r\n/**\r\n *\r\n * @param {import('redux/index').Store} _store\r\n */\r\nexport const initSubject = (_store) => {\r\n store = _store;\r\n store.subscribe(() => {\r\n subject.next(store.getState());\r\n });\r\n subject = new Subject();\r\n};\r\n\r\nexport const storeSubject = () => subject.asObservable();\r\n","import produce from 'immer';\r\nimport { statusText, statusIds } from '@/constants/bdx-lookups';\r\nimport { CHANGE_LOCATION } from '@/redux/routes/types';\r\nimport { NAV_COMMUNITY_CONTEXT } from '@/modules/global/@redux/types';\r\nimport { NAV_PLAN_LIST_VIEW_FILTER, PARENT_PAGE_NAVIGATING_FLAG } from './types';\r\n\r\nconst initialState = { planListViewFilter: statusText[statusIds.Active], navigationFlag: false };\r\n\r\nexport const planParentReducer = (state = initialState, { type, data: { filter, pathname, community } = {} }) =>\r\n produce(state, (draft) => {\r\n switch (type) {\r\n case NAV_PLAN_LIST_VIEW_FILTER:\r\n draft.planListViewFilter = filter;\r\n break;\r\n /**\r\n * This makes sure the community is not updated on further navigation\r\n */\r\n case PARENT_PAGE_NAVIGATING_FLAG:\r\n draft.navigationFlag = true;\r\n break;\r\n /**\r\n * If navigation out of the parent plan page, then the context can be setup again\r\n */\r\n case CHANGE_LOCATION: {\r\n if (!pathname.includes('/library/plan/')) {\r\n draft.navigationFlag = false;\r\n }\r\n break;\r\n }\r\n /**\r\n * When setting the community value, then make sure it should be possible to set the context\r\n */\r\n case NAV_COMMUNITY_CONTEXT: {\r\n draft.navigationFlag = !community;\r\n }\r\n }\r\n });\r\n","import produce from 'immer';\r\nimport { getRouter } from '@/utils/routing/router-helpers';\r\nimport { empty } from '@/lodash/';\r\nimport { NAV_PARTNER_CONTEXT, NAV_BUILDER_CONTEXT, NAV_DIVISON_CONTEXT, NAV_COMMUNITY_CONTEXT, NAV_PLAN_CONTEXT, NAV_SPEC_CONTEXT } from '@/modules/global/@redux/types';\r\nimport { PARTNER, BUILDER, DIVISION, COMMUNITY, PLAN, SPEC, PAGE_NUMBER, SEARCH } from '@/app/constants/params';\r\nimport { hasOwnProp } from '@/lodash/hasOwnProp';\r\nimport { SET_PARAMS, SET_PARAM } from './types';\r\n\r\nexport const pageLocationReducer = (state = {}, action) =>\r\n produce(state, (draft) => {\r\n const { location } = getRouter() || {};\r\n\r\n if (!location) return draft;\r\n\r\n const route = location.route || {};\r\n\r\n const path = action.path || route.name || route.title || location.pathname;\r\n\r\n const setParam = (param, paramValue) => {\r\n if (empty(draft[path])) {\r\n draft[path] = {};\r\n }\r\n\r\n if (!empty(location.route.params) && hasOwnProp(location.route.params, param)) {\r\n draft[path][param] = paramValue;\r\n }\r\n };\r\n\r\n switch (action.type) {\r\n case SET_PARAM: {\r\n setParam(action.name, action.value);\r\n return draft;\r\n }\r\n case SET_PARAMS: {\r\n Object.entries(action.params).forEach(([name, value]) => setParam(name, value));\r\n return draft;\r\n }\r\n case NAV_PARTNER_CONTEXT: {\r\n setParam(PARTNER, action.data.partner);\r\n setParam(PAGE_NUMBER, 1);\r\n return draft;\r\n }\r\n case NAV_BUILDER_CONTEXT: {\r\n if (!draft[path]?.[BUILDER] || (draft[path]?.[BUILDER] && draft[path]?.[DIVISION])) {\r\n setParam(SEARCH, null);\r\n }\r\n setParam(BUILDER, action.data.builder);\r\n setParam(DIVISION, null);\r\n setParam(COMMUNITY, null);\r\n setParam(PAGE_NUMBER, 1);\r\n return draft;\r\n }\r\n case NAV_DIVISON_CONTEXT: {\r\n setParam(SEARCH, null);\r\n setParam(DIVISION, action.data.division);\r\n setParam(COMMUNITY, null);\r\n setParam(PAGE_NUMBER, 1);\r\n return draft;\r\n }\r\n case NAV_COMMUNITY_CONTEXT: {\r\n setParam(COMMUNITY, action.data.community);\r\n setParam(PAGE_NUMBER, 1);\r\n return draft;\r\n }\r\n case NAV_PLAN_CONTEXT: {\r\n setParam(PLAN, action.data.plan);\r\n setParam(PAGE_NUMBER, 1);\r\n return draft;\r\n }\r\n case NAV_SPEC_CONTEXT: {\r\n setParam(SPEC, action.data.spec);\r\n setParam(PAGE_NUMBER, 1);\r\n return draft;\r\n }\r\n }\r\n\r\n return draft;\r\n });\r\n","import { PLAN_LIBRARY_ASSIGNED } from './plan/types';\r\nimport { Plan } from '@/models/Plan';\r\nimport { empty } from '@/lodash/';\r\n\r\nexport const entitiesMiddleware =\r\n () =>\r\n () =>\r\n (next) =>\r\n (action = {}) => {\r\n const { type, data: { assignedPlans } = {} } = action;\r\n\r\n switch (type) {\r\n case PLAN_LIBRARY_ASSIGNED:\r\n if (!empty(assignedPlans)) {\r\n localStorage.setItem('new_inserts', JSON.stringify(assignedPlans?.map(({ id }) => ({ id, model: Plan().name }))));\r\n }\r\n break;\r\n default:\r\n return next(action);\r\n }\r\n };\r\n","let DB;\r\nlet DB_NAME;\r\n\r\nexport const createDataBase = () => {\r\n DB_NAME = `BDX_DB`;\r\n\r\n window.supportedIndexedDB = window?.indexedDB || window?.mozIndexedDB || window?.webkitIndexedDB || window?.msIndexedDB;\r\n\r\n /**\r\n * Open the DB\r\n */\r\n const request = window.supportedIndexedDB.open(DB_NAME, 1);\r\n\r\n /**\r\n * On creation error\r\n */\r\n request.onerror = () => {\r\n /* eslint-disable-next-line */\r\n console.error(new Error('Database failed to open'));\r\n };\r\n\r\n /**\r\n * On creation success\r\n */\r\n request.onsuccess = () => {\r\n DB = request.result;\r\n };\r\n\r\n /**\r\n * Setup the database tables if this has not already been done\r\n */\r\n request.onupgradeneeded = (event) => {\r\n /**\r\n * Get opened DB\r\n */\r\n const db = event.target.result;\r\n\r\n // Create an objectStore to store our notes in (basically like a single table)\r\n // including a auto-incrementing key\r\n const objectStore = db.createObjectStore('config_os');\r\n\r\n /**\r\n * Define schema\r\n */\r\n objectStore.createIndex('value', 'value', { unique: false });\r\n };\r\n};\r\n\r\n/**\r\n * @param { String } store\r\n * @returns { IDBObjectStore }\r\n */\r\nconst createTransaction = (store = 'config_os') => {\r\n if (DB) {\r\n const transaction = DB.transaction([store], 'readwrite');\r\n const objectStore = transaction.objectStore(store);\r\n return objectStore;\r\n }\r\n};\r\n\r\nexport const getValue = async (key, store) => {\r\n const transaction = createTransaction(store);\r\n if (transaction) {\r\n const request = transaction.get(key);\r\n return new Promise((resolve) => {\r\n request.onsuccess = () => {\r\n resolve(request.result);\r\n };\r\n });\r\n }\r\n};\r\n\r\nexport const setValue = async (key, value, store) => {\r\n const transaction = createTransaction(store);\r\n if (transaction) {\r\n const request = transaction.put(value, key);\r\n return new Promise((resolve) => {\r\n request.onsuccess = () => {\r\n resolve(request.result);\r\n };\r\n });\r\n }\r\n};\r\n","import produce from 'immer';\r\nimport { LEAD_RECIPIENTS_SUCCESS } from './types';\r\n\r\nexport const leadRecipientsReducer = (state = [], { type, data: { result } = {} }) =>\r\n produce(state, () => {\r\n switch (type) {\r\n case LEAD_RECIPIENTS_SUCCESS:\r\n return result.leadRecipients;\r\n }\r\n });\r\n","export const CLEAR_SCROLLS = 'bdxlive/scroll/clear_scrolls';\r\n","import produce from 'immer';\r\n\r\nimport { COMMUNITIES_BY_MILES_REQUEST, COMMUNITIES_BY_MILES_SUCCESS } from '@/modules/listings-detail/mpc-detail/components/mpc-linked-communities/@redux/types';\r\nimport { CLEAR_SCROLLS } from './types';\r\n\r\nexport const scrollReducer = (state = {}, { type, data: { result, group } = {}, meta: { clearScroll } = {} }) =>\r\n produce(state, (draft) => {\r\n switch (type) {\r\n case CLEAR_SCROLLS: {\r\n delete draft[group];\r\n break;\r\n }\r\n case COMMUNITIES_BY_MILES_REQUEST: {\r\n if (clearScroll) {\r\n delete draft[COMMUNITIES_BY_MILES_SUCCESS];\r\n }\r\n break;\r\n }\r\n case COMMUNITIES_BY_MILES_SUCCESS: {\r\n const { data = [], total } = draft[COMMUNITIES_BY_MILES_SUCCESS] ?? {};\r\n draft[COMMUNITIES_BY_MILES_SUCCESS] = {\r\n data: [...data, ...(result?.communities || [])],\r\n total: total ?? result?.communityCount,\r\n };\r\n }\r\n }\r\n });\r\n","// Utils\r\nimport { createStore, combineReducers, compose as origCompose, applyMiddleware } from 'redux';\r\nimport { lazyReducerEnhancer } from 'pwa-helpers/lazy-reducer-enhancer';\r\nimport thunk from 'redux-thunk';\r\nimport reduxReset from 'redux-reset';\r\n\r\nimport createSagaMiddleware from 'redux-saga';\r\nimport { persistStore, persistCombineReducers, persistReducer } from 'redux-persist-erksch';\r\nimport createExpirationTransform from 'redux-persist-transform-expire';\r\nimport storage from 'redux-persist-erksch/lib/storage';\r\nimport autoMergeLevel3 from 'redux-persist-erksch/es/stateReconciler/autoMergeLevel2';\r\nimport createDebounce from 'redux-debounced';\r\nimport { composeWithDevTools } from '@redux-devtools/extension';\r\n\r\n// defaults to localStorage for web and AsyncStorage for react-native\r\n// import { configuration } from './app.settings';\r\n\r\n// History\r\nimport { createBrowserHistory } from 'history';\r\nimport { startRouterListener } from './utils/routing/router-helpers';\r\n// Middlewares\r\nimport { normalizrMiddleware, flagsMiddleware } from './@redux/models/middlewares';\r\nimport { errorLoggingMiddleware } from './@redux/middlewares';\r\nimport { routerMiddleware } from './@redux/routes/middlewares';\r\n\r\n// Reducers\r\nimport { routerReducer } from './@redux/routes/reducers';\r\nimport { globalReducer, errorReducer, loadingReducer, successReducer } from './@redux/reducers';\r\nimport { formReducer } from './@redux/forms/reducers';\r\nimport { APP_RESET } from './@redux/types';\r\nimport { authReducer } from './modules/auth/@redux/reducers';\r\nimport { configReducer } from './@redux/config/reducers';\r\nimport { contentReducer } from './@redux/content/reducers';\r\nimport { modelsReducer } from './@redux/models/reducers';\r\nimport { navigationReducer } from './modules/global/@redux/reducers';\r\nimport { searchReducer } from './@redux/search/reducers';\r\nimport { locationsReducer } from './@redux/location/reducers';\r\n\r\n// Sagas\r\nimport { rootSaga } from './@redux/sagas'; // global app reducers and sagas from default in app index\r\nimport { formsMiddleware } from './@redux/forms/middlewares';\r\nimport { imagesReducer } from './@redux/images/reducers';\r\nimport { videosReducer } from './@redux/videos/reducers';\r\nimport { contextReducer } from './@redux/context/reducers';\r\nimport { pciReducer } from './modules/listings-detail/community-detail/@redux/pci/reducers';\r\nimport { dashboardReducer } from './modules/content/views/dashboard/@redux/reducers';\r\nimport { themeReducer } from './@redux/theme/reducers';\r\nimport { initSubject } from './utils/redux/storeSubscriptionSubject';\r\nimport { planParentReducer } from './modules/content-libraries/plans/plan-parent-detail/@redux/reducers';\r\nimport { actionEffectMiddleware } from './@redux/actionEffect';\r\nimport { pageLocationReducer } from './@redux/page-location/reducers';\r\nimport { entitiesMiddleware } from './@redux/entities/middleware';\r\nimport { createDataBase } from '@/utils/indexed-db';\r\nimport { leadRecipientsReducer } from './modules/lead-recipients/redux/reducers';\r\nimport { scrollReducer } from './@redux/scroll/reducers';\r\n\r\n// If a reducers presents the 'expiration' key it will expires at the specified time\r\nconst expireTransform = createExpirationTransform({\r\n expireKey: 'expiration',\r\n defaultState: {},\r\n});\r\n\r\nconst persistConfig = {\r\n key: 'reduxstate',\r\n storage,\r\n stateReconciler: autoMergeLevel3,\r\n transforms: [expireTransform],\r\n blacklist: ['context', 'loadings', 'errors', 'router', 'navigation', 'forms'],\r\n};\r\n\r\nconst navigationConfig = { key: 'navigation', storage, blacklist: ['locationForced'] };\r\nconst contextConfig = { key: 'context', storage, blacklist: ['loading'] };\r\n\r\n// const appReducers = combineReducers();\r\n\r\nconst history = createBrowserHistory();\r\nconst router = routerMiddleware(history);\r\nconst normalizr = normalizrMiddleware();\r\nconst jsErrorLogging = errorLoggingMiddleware();\r\nconst forms = formsMiddleware();\r\nconst flags = flagsMiddleware();\r\nconst entities = entitiesMiddleware();\r\n\r\nexport const sagaMiddleware = createSagaMiddleware();\r\n\r\n/**\r\n * Store Creation\r\n */\r\nlet compose;\r\nif (import.meta.env.DEV) {\r\n // eslint-disable-next-line\r\n const composeEnhancers = (window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ && composeWithDevTools({ trace: true, traceLimit: 25 })) || origCompose;\r\n compose = composeEnhancers;\r\n} else {\r\n compose = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || origCompose;\r\n}\r\n\r\nexport const store = createStore((state) => state, compose(lazyReducerEnhancer(combineReducers), applyMiddleware(createDebounce(), actionEffectMiddleware, thunk, jsErrorLogging, forms, router, normalizr, flags, entities, sagaMiddleware), reduxReset(APP_RESET)));\r\n\r\nconst appReducers = persistCombineReducers(persistConfig, {\r\n forms: formReducer,\r\n global: globalReducer,\r\n errors: errorReducer,\r\n success: successReducer,\r\n loadings: loadingReducer,\r\n authentication: authReducer,\r\n router: routerReducer,\r\n config: configReducer,\r\n entities: modelsReducer,\r\n navigation: persistReducer(navigationConfig, navigationReducer),\r\n search: searchReducer,\r\n locations: locationsReducer,\r\n content: contentReducer,\r\n dashboard: dashboardReducer,\r\n images: imagesReducer,\r\n videos: videosReducer,\r\n pci: pciReducer,\r\n context: persistReducer(contextConfig, contextReducer),\r\n theme: themeReducer,\r\n planParent: planParentReducer,\r\n pageLocation: pageLocationReducer,\r\n leadRecipients: leadRecipientsReducer,\r\n scroll: scrollReducer,\r\n});\r\n\r\n// wrap the root reducer to this one to handle the APP_RESET action so we\r\n// can reset redux store when log out (this action is fired from LOGOUT saga)\r\nconst rootReducer = (state, action) => {\r\n if (action.type === APP_RESET) {\r\n localStorage.setItem('theme', state.theme);\r\n state = undefined;\r\n const currentVersion = localStorage.getItem('app_version');\r\n localStorage.clear();\r\n localStorage.setItem('app_version', currentVersion);\r\n }\r\n return appReducers(state, action);\r\n};\r\n\r\n/**\r\n * Lazy load reducers\r\n */\r\nstore.addReducers({ app: rootReducer });\r\n\r\nexport const persistor = persistStore(store);\r\n\r\n// Register Sagas\r\nsagaMiddleware.run(rootSaga);\r\n\r\nstartRouterListener(history, store);\r\ncreateDataBase();\r\n\r\n/**\r\n * Initialize the global redux subject\r\n */\r\ninitSubject(store);\r\n\r\nif (import.meta.env.DEV) {\r\n window.store = store;\r\n window.persistor = persistor;\r\n window.clearState = () => {\r\n localStorage.clear();\r\n sessionStorage.clear();\r\n caches.keys().then((names) => names.forEach((name) => caches.delete(name)));\r\n };\r\n}\r\n","import { store } from '../../app.store';\r\n\r\n/**\r\n *\r\n * @param {import('@/constants/bhi-config-keys').BHI_CONFIG} property\r\n */\r\nexport const config = (property) => store.getState().app.config[property || ''] || undefined;\r\n","import * as Sentry from '@sentry/browser';\r\nimport { enviroments } from '@/constants/enviroments';\r\nimport { isTablet } from '@/lodash/isMobile';\r\nimport { config } from '../../@redux/config/selectors';\r\nimport { store } from '../../app.store';\r\nimport { getCurrentUser } from '../../modules/auth/@redux/selectors';\r\nimport { logErrorType } from './helpers';\r\nimport { isDevMode } from '@/lodash/isDevMode';\r\n\r\n/**\r\n * Captures additional error information in Sentry\r\n * @param {*} error The error object\r\n */\r\nexport function logExtraInfo(error) {\r\n const user = getCurrentUser(store.getState());\r\n\r\n if (error.config) {\r\n if (error.config.data) {\r\n const parsedData = JSON.parse(unescape(error.config.data)); // Convert to object if valid JSON\r\n Sentry.setContext('Request Query', { Data: parsedData });\r\n }\r\n Sentry.setContext('API URL', { Url: error.config.baseURL });\r\n }\r\n\r\n if (user) {\r\n configureErrorLogging(user.email);\r\n }\r\n}\r\n\r\n/**\r\n * Logs the last 10 actions before an error occurs\r\n * @param {Array} actions List of recent actions\r\n */\r\nexport function logActions(actions) {\r\n if (actions.length) {\r\n const formattedActions = {};\r\n\r\n actions.forEach((action, index) => {\r\n const actionKey = `Action ${String(index + 1).padStart(2, '0')}`;\r\n\r\n formattedActions[actionKey] = {\r\n ...action.data,\r\n type: action.type,\r\n };\r\n });\r\n\r\n Sentry.setContext('Last Actions', formattedActions);\r\n }\r\n}\r\n\r\n/**\r\n * Captures an error and sends it to Sentry\r\n * @param {*} error The error object\r\n * @param {Array} actionsList List of recent actions before the error\r\n */\r\nexport function logError(error, actionsList) {\r\n logActions(actionsList);\r\n logExtraInfo(error);\r\n\r\n // Use error.errorMessage as the error name if available\r\n const errorName = error.errorMessage || error.appMessage || 'UnknownError';\r\n\r\n // Create an Error instance with the correct name\r\n const customError = new Error(error.message || error.appMessage || '');\r\n customError.name = errorName;\r\n\r\n if (!logErrorType(error) && !isDevMode()) {\r\n Sentry.captureException(customError);\r\n }\r\n}\r\n\r\n/**\r\n * Configures Sentry with user information\r\n * @param {string} email User email\r\n */\r\nexport function configureErrorLogging(email) {\r\n Sentry.setUser({ email });\r\n}\r\n\r\n/**\r\n * Sets up Sentry and initializes the error tracking client\r\n */\r\nexport function setupErrorLogging() {\r\n Sentry.init({\r\n dsn: config('DsnSentry'),\r\n environment: config('Enviroment')?.toUpperCase(),\r\n tracesSampleRate: 0.2,\r\n beforeSend(event) {\r\n const user = getCurrentUser(store.getState());\r\n\r\n // Do not send errors in development environments\r\n if (event?.request?.url?.includes('localhost') || event?.request?.url?.includes('dev') || event?.tags?.environment === enviroments.DEV) {\r\n return null;\r\n }\r\n\r\n // Attach user information if available\r\n if (user) {\r\n event.user = { email: user.email };\r\n event.extra = {\r\n 'Current User': user,\r\n 'User Email': user.email,\r\n };\r\n }\r\n\r\n // Add additional metadata\r\n event.extra = {\r\n ...event.extra,\r\n URL: window.location.href,\r\n Device: isTablet() ? 'Mobile' : 'Desktop',\r\n Screen: `${window.screen.width}x${window.screen.height}`,\r\n };\r\n\r\n return event;\r\n },\r\n });\r\n}\r\n","export class LitEvent extends CustomEvent {\r\n constructor(name, detail) {\r\n super(name, { bubbles: true, composed: true, cancelable: true, detail });\r\n }\r\n}\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import '@vaadin/vaadin-material-styles/color';\r\nimport '@vaadin/vaadin-material-styles/shadow';\r\nimport '@vaadin/vaadin-material-styles/typography';\r\n\r\nconst $documentContainer = document.createElement('template');\r\n\r\n$documentContainer.innerHTML = `\r\n \r\n`;\r\n\r\ndocument.head.appendChild($documentContainer.content);\r\n","import { html } from 'lit-element';\r\n\r\nimport '../custom-components/custom-btn';\r\nimport '../custom-components/custom-combobox';\r\nimport '../custom-components/custom-combobox-item';\r\nimport '../custom-components/custom-text-field';\r\nimport '../custom-components/custom-number-field';\r\nimport '../custom-components/custom-select-text-field';\r\nimport '../custom-components/custom-select';\r\nimport '../custom-components/custom-select-overlay';\r\nimport '../custom-components/custom-item';\r\nimport '../custom-components/custom-dropdown-menu-text-field';\r\nimport '../custom-components/custom-radio-group';\r\nimport '../custom-components/custom-checkbox';\r\nimport '../custom-components/custom-text-area';\r\nimport '../custom-components/custom-radio-button';\r\nimport '../custom-components/custom-dropdown-menu-overlay';\r\nimport '../custom-components/custom-password-field';\r\nimport '../custom-components/custom-upload-file';\r\nimport '../custom-components/custom-upload';\r\nimport '../custom-components/custom-grid';\r\nimport '../custom-components/custom-grid-sorter';\r\nimport '../custom-components/custom-date-picker';\r\nimport '../custom-components/custom-date-picker-overlay';\r\nimport '../custom-components/custom-combo-box-overlay';\r\nimport '../custom-components/custom-progress-bar';\r\nimport '../custom-components/custom-notification';\r\nimport '../custom-components/custom-context-menu-overlay';\r\n\r\nexport const material = html`\r\n \r\n`;\r\n\r\nexport const darkTheme = html`\r\n \r\n`;\r\n\r\nexport const lightTheme = html`\r\n \r\n`;\r\n\r\nexport const dark = html`\r\n \r\n`;\r\n\r\nexport const light = html`\r\n \r\n`;\r\n\r\nexport const sharedColors = html`\r\n \r\n`;\r\n","import { html } from 'lit-element';\r\n\r\nexport const colors = html`\r\n \r\n \r\n \r\n`;\r\n","import { html } from 'lit-element';\r\n\r\nexport const sharedStyles = html`\r\n \r\n`;\r\n","import { html } from 'lit-element';\r\n\r\nexport const typography = html`\r\n \r\n \r\n \r\n`;\r\n","import { svg } from 'lit-element';\r\n\r\nexport const loadingCircle = svg``;\r\nexport const warning = svg``;\r\nexport const list = svg``;\r\nexport const viewList = svg``;\r\nexport const gridOn = svg``;\r\nexport const search = svg``;\r\nexport const notifications = svg``;\r\nexport const brand = svg``;\r\nexport const agent = svg``;\r\nexport const buyer = svg``;\r\nexport const performance = svg``;\r\nexport const arrowLeft = svg``;\r\nexport const arrowLeftFilled = svg``;\r\nexport const arrowRight = svg``;\r\nexport const arrowRightFilled = svg``;\r\nexport const arrowRightAlt = svg``;\r\nexport const arrowDown = svg``;\r\nexport const arrowDownFilled = svg``;\r\nexport const arrowUp = svg``;\r\nexport const right = svg``;\r\nexport const left = svg``;\r\nexport const dropdown = svg``;\r\nexport const bricks = svg``;\r\nexport const sheets = svg``;\r\nexport const question = svg``;\r\nexport const brochure = svg``;\r\nexport const reports = svg``;\r\nexport const homes = svg``;\r\nexport const services = svg``;\r\nexport const settings = svg``;\r\nexport const contacts = svg``;\r\nexport const dashboard = svg`;`;\r\nexport const dolar = svg``;\r\nexport const articles = svg``;\r\nexport const product = svg``;\r\nexport const boost = svg``;\r\nexport const info = svg``;\r\nexport const check = svg``;\r\nexport const checkMark = svg``;\r\nexport const checkMarkBig = svg``;\r\nexport const xMark = svg``;\r\nexport const phone = svg``;\r\nexport const phoneReprovision = svg``;\r\nexport const email = svg``;\r\nexport const community = svg``;\r\nexport const upload = svg``;\r\nexport const plus = svg``;\r\nexport const minus = svg``;\r\nexport const link = svg``;\r\nexport const linkto = svg``;\r\nexport const user = svg``;\r\nexport const userSimple = svg``;\r\nexport const drag = svg``;\r\nexport const play = svg``;\r\nexport const eye = svg``;\r\nexport const eyeshadow = svg``;\r\nexport const hide = svg``;\r\nexport const trash = svg``;\r\nexport const grid = svg``;\r\nexport const error = svg``;\r\nexport const bucket = svg``;\r\nexport const dragArrow = svg``;\r\nexport const reorder = svg``;\r\nexport const megaphone = svg``;\r\nexport const calendar = svg``;\r\nexport const paperClip = svg``;\r\nexport const camera = svg``;\r\nexport const mouse = svg``;\r\nexport const car = svg``;\r\nexport const leads = svg``;\r\nexport const asterisk = svg``;\r\nexport const division = svg``;\r\nexport const infoShadow = svg``;\r\nexport const partner = svg``;\r\nexport const done = svg``;\r\nexport const alert = svg``;\r\nexport const home = svg``;\r\nexport const plan = svg``;\r\nexport const planLibrary = svg``;\r\nexport const sync = svg``;\r\nexport const edit = svg``;\r\nexport const hand = svg``;\r\nexport const openInNew = svg``;\r\nexport const heart = svg``;\r\nexport const heartBroken = svg``;\r\nexport const history = svg``;\r\nexport const tool = svg``;\r\nexport const builder = svg``;\r\nexport const PDF = svg``;\r\nexport const data = svg``;\r\nexport const file = svg``;\r\nexport const xml = svg``;\r\nexport const photo = svg``;\r\nexport const unlock = svg``;\r\nexport const lock = svg``;\r\nexport const star = svg``;\r\nexport const houseWithStars = svg``;\r\nexport const leadRecipients = svg``;\r\nexport const sortableUp = svg``;\r\nexport const sortableDown = svg``;\r\nexport const schoolsIcon = svg``;\r\nexport const openUrlIcon = svg``;\r\nexport const noFile = svg``;\r\nexport const successIcon = svg``;\r\nexport const errorIcon = svg``;\r\nexport const closeIconStr = ``;\r\nexport const eraseIcon = svg``;\r\nexport const builderCorpIcon = svg``;\r\nexport const divisionIcon = svg``;\r\nexport const marketsIcon = svg``;\r\nexport const listhub = svg``;\r\nexport const spotlightIcon = svg``;\r\nexport const shoppingCart = svg``;\r\nexport const circle = svg``;\r\nexport const hourglass = svg``;\r\nexport const denied = svg``;\r\nexport const checkCircle = svg``;\r\nexport const download = svg``;\r\nexport const twoX = svg``;\r\nexport const contract = svg``;\r\nexport const market = svg``;\r\nexport const longArrowRight = svg``;\r\nexport const trendingUp = svg``;\r\nexport const pinkUnion = svg``;\r\nexport const zondaLogoLight = svg``;\r\nexport const fileApiIcon = svg``;\r\nexport const greenProgram = svg``;\r\nexport const pdf = svg``;\r\nexport const emptyCheckbox = svg``;\r\nexport const checkboxChecked = svg``;\r\nexport const checkboxXMark = svg``;\r\n","/**\r\n * Component Base Elements\r\n */\r\nimport { html } from 'lit-element';\r\nimport { nothing } from 'lit-html';\r\n\r\n/**\r\n * Component Style Importings\r\n */\r\nimport viewStyle from './message.css?inline';\r\n\r\nexport default function () {\r\n return html`\r\n \r\n
\r\n

\r\n ${this.icon ? html` ${this.icon} ` : nothing}\r\n \r\n

\r\n ${this.actions ? html`
${this.actions}
` : nothing}\r\n
\r\n `;\r\n}\r\n","/**\r\n * Helper Importings\r\n */\r\nimport { LitElement, SVGTemplateResult, TemplateResult, customElement, property } from 'lit-element';\r\n\r\n/**\r\n * Component Importings\r\n */\r\nimport template from './message.html';\r\n\r\n/**\r\n * `` is a Custom Web Component providing an accessible and customizable message banner.\r\n *\r\n * ```html\r\n * \r\n * `}>\r\n * Message goes here\r\n * \r\n * ```\r\n *\r\n * The following properties are exposed for customization:\r\n *\r\n * Properties | Description\r\n * ---------- | -----------\r\n * `icon` | Sets the icon SVG for each message banner, if is not specified shows empty.\r\n * `actions` | Sets custom HTML inside e.g. .\r\n * `theme` | Tree themes are available for the messages: info--blue, info--gray, error--orange, error--red, warning--yellow.\r\n *\r\n */\r\n@customElement('bdx-message')\r\nexport class BdxMessage extends LitElement {\r\n @property({ type: SVGTemplateResult })\r\n icon;\r\n\r\n @property({ type: TemplateResult })\r\n actions;\r\n\r\n @property({ type: String })\r\n theme;\r\n\r\n /**\r\n * Invoked on each update to perform rendering tasks. This method must return\r\n * a lit-html TemplateResult. Setting properties inside this method will *not*\r\n * trigger the element to update.\r\n * @returns {TemplateResult} Must return a lit-html TemplateResult.\r\n */\r\n render() {\r\n return template.call(this);\r\n }\r\n}\r\n","/**\r\n * Component Base Elements\r\n */\r\nimport { html } from 'lit-element';\r\n\r\n/**\r\n * Component Style Importings\r\n */\r\nimport { cache } from 'lit-html/directives/cache';\r\nimport { nothing } from 'lit-html';\r\nimport viewStyle from './modal.css?inline';\r\nimport backdrop from '../../../../assets/css/shared/backdrop.css?inline';\r\nimport { material, lightTheme, sharedColors } from '../../../../assets/css/theming/material-theme';\r\nimport { colors } from '../../../../assets/css/theming/colors';\r\nimport { sharedStyles } from '../../../../assets/css/shared/shared-styles';\r\nimport { typography } from '../../../../assets/css/theming/typography';\r\nimport { loadingCircle, error } from '../../../../assets/css/images/icons';\r\nimport '@vaadin/vaadin-checkbox/theme/material/vaadin-checkbox';\r\n\r\nimport '@/components/messages/message';\r\n\r\n/**\r\n * @this {import('./modal').BdxModal}\r\n */\r\nexport default function () {\r\n return html`\r\n ${material} ${lightTheme} ${colors} ${sharedStyles} ${typography} ${this.currentTheme} ${sharedColors}\r\n \r\n ${this.modalTheme}\r\n \r\n ${cache(this.backdrop ? html`
this.cancel() : () => undefined}\">
` : nothing)}\r\n \r\n
\r\n \r\n
\r\n \r\n this.cancel()}\">\r\n \r\n ${cache(\r\n this.buttons\r\n ? html`\r\n \r\n
\r\n ${this.confirmationCheckbox ? html` ${this.checkboxLabel} ` : nothing}\r\n\r\n \r\n \r\n
\r\n ${this.cancel && this.isCancelButtonVisible ? html` this.cancel(true)}\" ?disabled=\"${this.confirmLoading || this.cancelDisabled}\" theme=\"outlined\" class=\"modal__btn blue--button\">${this.cancelLabel} ` : nothing}\r\n \r\n \r\n ${this.confirm && this.isConfirmButtonVisible ? html` this.confirm(true)}\" ?disabled=\"${this.confirmLoading || this.confirmDisabled}\" theme=\"contained\" class=\"modal__btn blue--contained\"> ${this.confirmLoading ? html` ${loadingCircle} ` : html` ${this.confirmLabel} `} ` : nothing}\r\n
\r\n
\r\n ${this.errorMessage ? html` ${this.errorMessage} ` : nothing}\r\n `\r\n : nothing\r\n )}\r\n
\r\n
\r\n `;\r\n}\r\n","export const themeSelector = (state) => state && state.app && state.app.theme;\r\n","import { html } from 'lit-element';\r\nimport { connect } from 'pwa-helpers/connect-mixin';\r\nimport { light, dark } from '../../../../assets/css/theming/material-theme';\r\nimport { store } from '../../../app.store';\r\nimport { themeSelector } from '../../../@redux/theme/selectors';\r\nimport { deepCompare } from '../../bdx-lodash-lite';\r\n\r\nexport const BdxThemeMixin = (baseElement) =>\r\n /**\r\n * Theme Mixin\r\n *\r\n * @protected\r\n */\r\n class extends connect(store)(baseElement) {\r\n static get properties() {\r\n return { theme: { type: String } };\r\n }\r\n\r\n get currentTheme() {\r\n switch (this.theme) {\r\n case 'light':\r\n return html` ${light} `;\r\n case 'dark':\r\n return html` ${dark} `;\r\n default:\r\n return html` ${light} `;\r\n }\r\n }\r\n\r\n stateChanged(state) {\r\n super.stateChanged(state);\r\n const theme = themeSelector(state);\r\n if (!deepCompare(theme, this.theme)) {\r\n this.theme = theme;\r\n }\r\n }\r\n };\r\n","/**\r\n * Helper Importings\r\n */\r\nimport { LitElement, customElement, property, query } from 'lit-element';\r\n\r\n/**\r\n * Component Importings\r\n */\r\nimport { TemplateResult } from 'lit-html';\r\nimport { LitEvent } from '@/utils/events/LitEvent';\r\nimport template from './modal.html';\r\nimport { deepCompare } from '../../../utils/bdx-lodash-lite';\r\nimport { BdxThemeMixin } from '../../../utils/mixins/views/bdx-theme-mixin';\r\n\r\n/**\r\n * Element Definition\r\n */\r\n@customElement('bdx-modal')\r\nexport class BdxModal extends BdxThemeMixin(LitElement) {\r\n @property({ type: Boolean, reflect: true })\r\n closing = false;\r\n\r\n @property({ type: TemplateResult, attribute: false })\r\n modalTheme = '';\r\n\r\n @property({ type: String })\r\n classList = '';\r\n\r\n @property({ type: Boolean })\r\n backdrop = true;\r\n\r\n @property({ type: Boolean, reflect: true })\r\n fullscreen = false;\r\n\r\n @property({ type: Boolean })\r\n buttons = true;\r\n\r\n @property({ type: String })\r\n buttonsPosition = 'center';\r\n\r\n @property({ type: String })\r\n buttonsPadding = ' ';\r\n\r\n @property({ type: String })\r\n modalWidth = ' ';\r\n\r\n @property({ type: Boolean })\r\n confirmLoading;\r\n\r\n @property({ type: String })\r\n confirmLabel = 'Yes';\r\n\r\n @property({ type: Boolean })\r\n confirmDisabled = false;\r\n\r\n @property({ type: String })\r\n cancelLabel = 'No';\r\n\r\n @property({ type: Boolean })\r\n cancelDisabled = false;\r\n\r\n @property({ type: Boolean })\r\n confirmationCheckbox = false;\r\n\r\n @property({ type: String })\r\n checkboxLabel = '';\r\n\r\n @property({ type: Boolean })\r\n checkboxChecked = false;\r\n\r\n @property({ type: String })\r\n errorMessage = '';\r\n\r\n @property({ type: Boolean })\r\n isCancelButtonVisible = true;\r\n\r\n @property({ type: Boolean })\r\n isConfirmButtonVisible = true;\r\n\r\n @query('#cancel')\r\n cancelButton;\r\n\r\n @query('#confirm')\r\n confirmButton;\r\n\r\n @query('.container')\r\n container;\r\n\r\n confirm = true;\r\n\r\n cancel = true;\r\n\r\n theme = '';\r\n\r\n /**\r\n * Invoked on each update to perform rendering tasks. This method must return\r\n * a lit-html TemplateResult. Setting properties inside this method will *not*\r\n * trigger the element to update.\r\n * @returns {TemplateResult} Must return a lit-html TemplateResult.\r\n */\r\n render() {\r\n return template.call(this);\r\n }\r\n\r\n disconnectedCallback() {\r\n super.disconnectedCallback();\r\n window.removeEventListener('keyup', this.keyUpBounded);\r\n this.close();\r\n }\r\n\r\n firstUpdated() {\r\n super.firstUpdated();\r\n window.addEventListener('keyup', this.keyUpBounded);\r\n }\r\n\r\n checkboxChange = ({ target }) => {\r\n this.checkboxChecked = target.checked;\r\n this.dispatchEvent(new LitEvent('checkbox-change', target.checked));\r\n };\r\n\r\n keyUpBounded = ({ key }) => {\r\n if (deepCompare(key, 'Escape')) {\r\n this.cancel();\r\n }\r\n };\r\n}\r\n","import { TemplateResult } from 'lit-html';\r\nimport { loopObject } from '../bdx-lodash-lite/loopObject';\r\n\r\nimport '../../shared/components/modal/modal';\r\nimport { omit } from '../bdx-lodash-lite/omit';\r\nimport { empty } from '../bdx-lodash-lite';\r\n\r\n/**\r\n * Lit Test suite for web components\r\n * @author Gary Valverde Hampton \r\n * @class ModalService\r\n * @description\r\n * -----\r\n *\r\n * This is a service used to invoke and *lazy load* web components as modals\r\n *\r\n * -----\r\n *\r\n * Any component invoked through the __**ModalService**__ will get the following lifecycle callbacks\r\n * - **beforeModalOpen:** Executed before the opening of the modal, if an object with the property **(prevent: true)** is returned then the modal won't be opened\r\n * - **afterModalOpen:** Executed once the modal has fully loaded, this takes help from the **updateCompleted** promise from **litElement**\r\n * - **modalCancel:** Executed when the modal is canceled, if an object with the property **(prevent: true)** is returned then the modal won't be closed\r\n * - **modalConfirm:** Executed when the modal is confirmed, if an object with the property **(prevent: true)** is returned then the modal won't be closed\r\n * - **beforeModalClose:** Executed before the modal is closed, this will only run when the cancel or confirm event is not prevented\r\n * - **afterModalClose:** Executed once the modal is disconnected from the dom, this takes advantage of **disconnectedCallback** event\r\n *\r\n * -----\r\n *\r\n * The component invoked additionally can **omit** the usage of the **default buttons** provided by the modal.\r\n * In order to **confirm or cancel** the modal, the component can dispatch a **custom action** with the name 'cancel' or 'confirm'\r\n *\r\n * -----\r\n *\r\n * The component will be provided with this property **this.parent** which points at the modal element that contains the invoked component,\r\n * this can be used to update the model properties, such as **confirmLoading** that sets the loading button in confirm mode\r\n *\r\n * -----\r\n *\r\n * @example\r\n * // Default modal service implementation\r\n * ModalService.show({\r\n * // The name of the component\r\n * component: 'web-component-name',\r\n * // The import function that will lazy load the modal\r\n * importFn: () => import('../path/to/web/component'),\r\n * // The configuration to the modal display, default values displayed\r\n * config: {\r\n * // Padding applied to the contents of the config\r\n * padding: '',\r\n * // Margin from the modal to the outter window (as the container uses viewports to size itself)\r\n * margin: '5% 0',\r\n * // Width of the modal\r\n * width: 'auto',\r\n * // Height of the modal\r\n * height: 'auto',\r\n * // Defines whether or not the backdrop (transparent background) should be displayed\r\n * backdrop: true,\r\n * // Defines if the modal should be in fullscreen mode (modals in fullscreen take 100% of the space provided by viewports)\r\n * fullscreen: false,\r\n * // Buttons defines if the 'cancel' and 'confirm' buttoms should be displayed (usefull if configuring custom buttons)\r\n * buttons: true,\r\n * // Confirm button label\r\n * confirmLabel: 'Yes',\r\n * // Cancel button label\r\n * cancelLabel: 'No',\r\n * // Buttons alignment\r\n * buttonsPosition: 'center'\r\n * },\r\n * // Any kind of data to be inyected into the rendered web component\r\n * data: {}\r\n * })\r\n * // Executed once the modal is closed, the parameter confirmed defines whether the form was confirmed or canceled (confirmed is Boolean)\r\n * .then(confirmed => console.log(confirmed))\r\n * // Used to catch any problem occurred in the modal\r\n * .catch(error => throw new Error(error))\r\n *\r\n *\r\n *\r\n * @example\r\n * // Lifecycle callback implementation on the invoked component\r\n * class WebComponent extends LitElement {\r\n * // Any of this callbacks can be implemented on the element to be rendered\r\n * beforeModalOpen() {\r\n * // (...) Actions prior to opening the modal\r\n * if(!this.prepared) {\r\n * // I.E: If the modal is not prepared then prevent it from opening\r\n * return { prevent: true };\r\n * }\r\n * }\r\n *\r\n * afterModalOpen() {\r\n * if (super.afterModalOpen) {\r\n * super.afterModalOpen();\r\n * }\r\n * // (...) Actions after the modal is launched\r\n * }\r\n *\r\n * modalCancel() {\r\n * // (...) Actions when the model is cancelled\r\n * if (!this.requestCanceled) {\r\n * // I.E: If the request was not cancelled, then prevent the modal from closing\r\n * return { prevent: true };\r\n * }\r\n * }\r\n *\r\n * modalConfirm() {\r\n * // (...) Actions when the model is confirmed\r\n * if (!this.requestProcessed) {\r\n * // I.E: If the request was not processed, then prevent the modal from closing\r\n * return { prevent: true };\r\n * }\r\n * }\r\n *\r\n * beforeModalClose() {\r\n * // (...) Actions before the modal is closed\r\n * }\r\n *\r\n * afterModalClose() {\r\n * // (...) Actions once the modal is closed\r\n * }\r\n * }\r\n * customElements.define('web-component-name', WebComponent);\r\n *\r\n * @example\r\n * // Custom buttons implementaiton\r\n * class WebComponent extends LitElement {\r\n * // Any of this callbacks can be implemented on the element to be rendered\r\n * cancel() {\r\n * // (...) perform some action on the component\r\n * this.dispatchEvent(new CustomEvent('cancel'));\r\n * }\r\n * confirm() {\r\n * // (...) perform some action on the component\r\n * this.dispatchEvent(new CustomEvent('confirm'));\r\n * }\r\n * }\r\n * customElements.define('web-component-name', WebComponent);\r\n *\r\n * @example\r\n * // Accessing the parrent propery\r\n * class WebComponent extends LitElement {\r\n * // Any of this callbacks can be implemented on the element to be rendered\r\n * requestMedia() {\r\n * // (...) dispatch some actions to the store to start an API request\r\n * this.parent.confirmLoading = true;\r\n * }\r\n * }\r\n * customElements.define('web-component-name', WebComponent);\r\n *\r\n */\r\nexport class ModalService {\r\n /**\r\n * Validates if the given value is a function.\r\n *\r\n * @param {*} value to be validated.\r\n * @returns true if the given value is a function, otherwise false.\r\n */\r\n static isFunction(value) {\r\n return typeof value === 'function';\r\n }\r\n\r\n /**\r\n * Schema object to validate the configuration information that is passed to the Modal Service.\r\n */\r\n static get configurationSchema() {\r\n return {\r\n cancel: this.isFunction,\r\n close: this.isFunction,\r\n confirm: this.isFunction,\r\n hide: this.isFunction,\r\n };\r\n }\r\n\r\n /**\r\n * Method that invokes a modal\r\n * The options will contain\r\n * - The component to be rendered\r\n * - The import function to lazy load the component\r\n * - The data to inyect into the component\r\n * - The modal configuration\r\n * @param { Object } options the modal options\r\n */\r\n static show({ component, importFn, data, config, unique, closeDelay }) {\r\n /**\r\n * If a modal is marked as unique, make sure to close any other opening\r\n */\r\n if (unique && !empty(this.elements)) {\r\n const alreadyOpened = this.elements.find((element) => element.localName === component);\r\n if (alreadyOpened) {\r\n alreadyOpened.parent.cancel();\r\n }\r\n }\r\n\r\n /**\r\n * Create an instance of the element\r\n * There's no issue creating it before importing, as web components API will updated the element\r\n */\r\n const element = document.createElement(component);\r\n\r\n /**\r\n * Dynamic import the component\r\n */\r\n const subscribe = (subscriptionConfig = {}) =>\r\n new Promise((resolve, reject) => {\r\n try {\r\n /**\r\n * Process the dynamic import\r\n */\r\n importFn().then(() => {\r\n /**\r\n * Check if the custom element is registered\r\n */\r\n if (window.customElements.get(component)) {\r\n /**\r\n * Inject data into the modal\r\n */\r\n this.injectData(element, { ...data, ...subscriptionConfig });\r\n /**\r\n * [Lifecycle]: beforeModalOpen\r\n */\r\n const { prevent = false } = this.runCallback(element.beforeModalOpen, element) || {};\r\n if (!prevent) {\r\n /**\r\n * Append modal to body\r\n */\r\n this.appendModal(element, { closeDelay, subscriptionConfig });\r\n /**\r\n * Inject config to the modal\r\n */\r\n this.injectData(element.parent, config);\r\n /**\r\n * [Lifecycle]: afterModalOpen\r\n */\r\n element.parent.updateComplete.then(() => this.runCallback(element.afterModalOpen, element));\r\n if (element.parent.style) {\r\n element.parent.style.zIndex = 1000000000 + this.elements.length;\r\n }\r\n /**\r\n * Set the resolve event\r\n */\r\n element.parent.__resolve = resolve;\r\n }\r\n } else {\r\n reject(new Error(`Unable to find ${component} in customElements registry`));\r\n }\r\n });\r\n } catch (err) {\r\n reject(new Error(`Unable to load ${component}: ${err}`));\r\n }\r\n });\r\n\r\n return {\r\n subscribe,\r\n element,\r\n };\r\n }\r\n\r\n /**\r\n * Inject data into the node\r\n * @param { Node } element the node\r\n * @param { Object } data the data to be inyected\r\n */\r\n static injectData(element, data) {\r\n const schema = this.configurationSchema;\r\n Object.keys(schema)\r\n .filter((key) => !schema[key](data[key]))\r\n .forEach((key) => delete data[key]);\r\n\r\n loopObject(data, (value, key) => {\r\n element[key] = value;\r\n });\r\n }\r\n\r\n /**\r\n * Appends the node to the service\r\n * @param { Node } element the node\r\n */\r\n static appendModal(element, { closeDelay, subscriptionConfig }) {\r\n /**\r\n * Create the container modal\r\n */\r\n const modal = document.createElement('bdx-modal');\r\n if (subscriptionConfig?.id) {\r\n modal.setAttribute('id', subscriptionConfig.id);\r\n }\r\n\r\n /**\r\n * Append the element to the modal slot\r\n */\r\n modal.appendChild(element);\r\n /**\r\n * Register the events\r\n */\r\n modal.hide = () => this.hide(element);\r\n modal.close = () => this.close(element);\r\n modal.cancel = (cancelButton = false) => this.cancel(element, closeDelay, cancelButton);\r\n modal.confirm = (confirmButton = false) => this.confirm(element, closeDelay, confirmButton);\r\n /**\r\n * Append the modal, and register the elements\r\n */\r\n document.body.appendChild(modal);\r\n element.parent = modal;\r\n\r\n modal.component = element; // save a reference for the current modal service\r\n\r\n if (element.modalTheme && element.modalTheme instanceof TemplateResult) {\r\n element.parent.modalTheme = element.modalTheme;\r\n }\r\n\r\n /**\r\n * Register the modal to the list, and initialize if first\r\n */\r\n if (empty(this.elements)) {\r\n this.elements = [];\r\n }\r\n this.elements.push(element);\r\n }\r\n\r\n /**\r\n * On modal cancel event\r\n */\r\n static cancel(element, closeDelay, buttonCancel) {\r\n /**\r\n * [Lifecycle]: modalCancel\r\n */\r\n const { prevent = false } = this.runCallback(element.modalCancel, element, buttonCancel) || {};\r\n /**\r\n * [Lifecycle]: beforeModalClose\r\n */\r\n if (!prevent) {\r\n /**\r\n * Remove the modal on confirmed\r\n */\r\n this.runCallback(element.beforeModalClose, element);\r\n this.removeModal(false, element, buttonCancel, null, closeDelay);\r\n }\r\n }\r\n\r\n /**\r\n * On modal confirm event\r\n */\r\n static confirm(element, closeDelay, confirmButton) {\r\n /**\r\n * [Lifecycle]: modalConfirm\r\n */\r\n const { prevent = false, data = null } = this.runCallback(element.modalConfirm, element) || {};\r\n /**\r\n * [Lifecycle]: beforeModalClose\r\n */\r\n if (!prevent) {\r\n /**\r\n * Remove the modal on cancel\r\n */\r\n this.runCallback(element.beforeModalClose, element);\r\n this.removeModal(true, element, confirmButton, data, closeDelay);\r\n }\r\n }\r\n\r\n static hide(element) {\r\n element.parent.hidden = true;\r\n }\r\n\r\n /**\r\n * Remove the modal and resolve the promise\r\n * @param { Boolean } confirmed whether or not the modal was confirmed\r\n */\r\n static removeModal(confirmed, element, buttonAction, data, closeDelay = 0) {\r\n /**\r\n * Remove the element from the body and unregister the element\r\n */\r\n element.parent.closing = true;\r\n setTimeout(() => {\r\n if (Array.from(document?.body?.children).includes(element?.parent)) {\r\n document.body.removeChild(element.parent);\r\n }\r\n this.elements = omit(this.elements, [element]);\r\n /**\r\n * Resolve the promise with the confirmed state\r\n */\r\n element.parent.__resolve({ confirmed, buttonAction, data });\r\n\r\n /**\r\n * Focus any provided element\r\n */\r\n if (element?.focusOnClose instanceof Element && element?.focusOnClose?.isConnected) {\r\n element.focusOnClose.focus();\r\n element.focusOnClose.setAttribute('focus-ring', '');\r\n }\r\n }, closeDelay);\r\n }\r\n\r\n /**\r\n * Close event on disconnectedCallback\r\n */\r\n static close(element) {\r\n /**\r\n * [Lifecycle]: afterModalClose\r\n */\r\n this.runCallback(element.afterModalClose, element);\r\n }\r\n\r\n /**\r\n * Run a lifecycle callback\r\n * @param { Function } callback the function to call\r\n * @param { Node } element the node to invoke the function in\r\n * @param { ...any } options the options to pass through\r\n */\r\n static runCallback(callback, element, ...options) {\r\n /**\r\n * Only functions can be considered lifecycle callbacks\r\n */\r\n if (callback instanceof Function) {\r\n return callback.apply(element, options);\r\n }\r\n }\r\n}\r\n","import { ModalService } from '@/utils/services/modal-service';\r\nimport { store } from '@/app/app.store';\r\nimport { config } from '@/redux/config/selectors';\r\nimport { versionType } from '@/constants/bdx-lookups';\r\nimport { revalidate } from '@/modules/auth/@redux/actions';\r\nimport { getLastLocation } from '@/redux/routes/selectors';\r\nimport { LOGIN } from '@/app/app.location';\r\nimport { hasQueryParam } from '../routing/queryParams';\r\n\r\nlet lastCheck = new Date();\r\nlet notTheFirstTime = true;\r\n\r\n// const alreadyNotified = false;\r\nconst VERSION_INITIAL_CHECK_MINUTES = 10;\r\nconst VERSION_SECOND_UPDATE_CHECK_MINUTES = 60;\r\n\r\nconst isWizardMode = () => hasQueryParam('wizard') || document.location.href.includes('/new');\r\n\r\n/** Call a Fetch to the local site api to check whats the current version number */\r\nexport const getAppVersion = async () => {\r\n // this is to test version functionality with mock data, lets keep this here for future tests\r\n // const res = await fetch(`https://60b6704617d1dc0017b87d80.mockapi.io/api/version`); // user asolis@builderhomesite.com//password to test this mockup endpint\r\n let version = null;\r\n\r\n try {\r\n const res = await fetch(`${config('AppApiBaseUrl')}/version`);\r\n ({ version } = await res.json());\r\n } catch (ex) {\r\n version = null;\r\n }\r\n\r\n return version;\r\n};\r\n\r\n/**\r\n *\r\n * Checks for the server version, returns null or false if no new version was found, or the\r\n * version number in case the version is different\r\n */\r\nexport const checkNewVersion = async () => {\r\n const version = await getAppVersion();\r\n if (!version) return;\r\n // if the current session have the version set use it first if not check it from localstorage\r\n let clientVersion = sessionStorage.getItem('app_version');\r\n\r\n if (!clientVersion) {\r\n clientVersion = localStorage.getItem('app_version');\r\n }\r\n\r\n // first time wed ont need to update client\r\n if (!clientVersion) {\r\n localStorage.setItem('app_version', version);\r\n sessionStorage.setItem('app_version', version);\r\n return false;\r\n }\r\n if (clientVersion !== version) {\r\n return { newVersion: version, oldVersion: clientVersion };\r\n }\r\n\r\n // if session app version is not set, set it same as localstorage\r\n if (!sessionStorage.getItem('app_version')) {\r\n sessionStorage.setItem('app_version', localStorage.getItem('app_version'));\r\n }\r\n\r\n return false;\r\n};\r\n\r\nexport const checkSiteUpdate = async (noModal = false) => {\r\n if (isWizardMode()) return;\r\n\r\n // if we already update the version in this session, avoid keep asking for version every 5 minutes after redirect, do it each hour\r\n const minutesElanpsed = Math.floor((new Date() - lastCheck) / 60000);\r\n const shouldCheckVersion = minutesElanpsed >= (localStorage.getItem('alreadyUpdated') ? VERSION_SECOND_UPDATE_CHECK_MINUTES : VERSION_INITIAL_CHECK_MINUTES);\r\n\r\n // by default version didnt changed\r\n let updateVersionType = versionType.UNCHANGE;\r\n const lastLocation = getLastLocation(store.getState(), false, false);\r\n const isSigninRoute = lastLocation.includes(LOGIN.path) || window.location.pathname.includes(LOGIN.path);\r\n\r\n // if the service worker is already installed check version every 5 mins on a navigation change event\r\n if (notTheFirstTime || shouldCheckVersion || window.forceUpdate || isSigninRoute) {\r\n lastCheck = new Date();\r\n const versionInfo = await checkNewVersion();\r\n\r\n // no change\r\n if (!versionInfo) return versionType.UNCHANGE;\r\n\r\n const [newMajor, newMinor, newPath, newBuild] = versionInfo.newVersion?.split('.') || [];\r\n const [currentMajor, currentMinor, currentPath, currentBuild] = versionInfo.oldVersion?.split('.') || [];\r\n\r\n // if major changed, it is a breaking change, we need to unload store and re login.\r\n if (newBuild !== currentBuild) {\r\n updateVersionType = versionType.BUILD;\r\n }\r\n if (newPath !== currentPath) {\r\n updateVersionType = versionType.PATH;\r\n }\r\n if (newMinor !== currentMinor) {\r\n updateVersionType = versionType.MINOR;\r\n } // Just unload service worker cache and refresh page on next page change.\r\n if (newMajor !== currentMajor) {\r\n updateVersionType = versionType.MAJOR;\r\n } // update user in next page change, reload user information and permissions\r\n\r\n if (updateVersionType !== versionType.UNCHANGE) {\r\n return newVersionUpdate(updateVersionType, versionInfo.newVersion, noModal);\r\n }\r\n\r\n return false;\r\n }\r\n notTheFirstTime = false;\r\n};\r\n\r\n/**\r\n * If new versions, call the redux action to handle revalite, in case a major version changed, display de modal\r\n * Because this is called in a new route change, the user should not notice te app updated in case no major version change.\r\n */\r\nexport const newVersionUpdate = (newVersionType, newVersion, noModal = false) => {\r\n // const currentlyEditing = globalEditStateSelector(store.getState());\r\n if (newVersionType !== versionType.MAJOR || noModal) {\r\n // display information and count down\r\n store.dispatch(revalidate({ url: window.location.href, versionChangeType: newVersionType, version: newVersion }));\r\n } else {\r\n showVersionModal(newVersion, newVersionType);\r\n }\r\n return true;\r\n};\r\n\r\nexport const showVersionModal = (version, newVersionType) => {\r\n ModalService.show({\r\n component: 'bdx-version-update',\r\n importFn: () => import('@/modules/global/components/bdx-version-update/bdx-version-update'),\r\n config: {\r\n cancel: () => false,\r\n isCancelButtonVisible: false,\r\n confirm: () => false,\r\n buttons: false,\r\n },\r\n data: { version, nextRoute: window.location.href, versionChangeType: newVersionType },\r\n }).subscribe();\r\n};\r\n","import { DASHBOARD } from './app.location';\r\n\r\nexport default [DASHBOARD.toRedirect('/src/index.html'), DASHBOARD.toRedirect('/')];\r\n","import { LitElement, html } from 'lit-element';\r\nimport { connect } from 'pwa-helpers/connect-mixin';\r\nimport { isAppLoading, getLoading } from '../../../@redux/selectors';\r\nimport { store } from '../../../app.store';\r\nimport '@vaadin/vaadin-progress-bar/theme/material/vaadin-progress-bar';\r\n\r\n/**\r\n * A global component to show undeterministic progress bar in case the app is Loading something\r\n * @class BdxMainProgress\r\n */\r\nclass BdxMainProgress extends connect(store)(LitElement) {\r\n /**\r\n * BdxMainProgress component properties\r\n * @property {Boolean} _displayProgress: handle the status if the app is loading or not\r\n * @property {Array} blackListActions: atribute to define a list of Redux Action Types that will ignore any loading status\r\n */\r\n static get properties() {\r\n return {\r\n _displayProgress: Boolean,\r\n blackedListActions: Array,\r\n validListActions: Array,\r\n };\r\n }\r\n\r\n /**\r\n * Renders the component html and css\r\n */\r\n render() {\r\n return html` ${this._displayProgress ? html` ` : html``} `;\r\n }\r\n\r\n /**\r\n * Fires everytime the redux state changes.\r\n * @param {object} state current state in the redux state management\r\n */\r\n stateChanged(state) {\r\n let loading = false;\r\n\r\n if (this.validListActions) loading = getLoading(state, this.validListActions);\r\n else loading = isAppLoading(state, this.blackedListActions);\r\n\r\n if (this._displayProgress || loading !== this._displayProgress) {\r\n this._displayProgress = isAppLoading(state);\r\n }\r\n }\r\n}\r\ncustomElements.define('bdx-main-progress', BdxMainProgress);\r\n","import { config } from '../@redux/config/selectors';\r\n\r\n/**\r\n * URL to log out of current BDXLive\r\n */\r\nexport const LOGOUT = () => `${getBdxliveDomain()}/security/logout.aspx`;\r\n\r\n/**\r\n * URL to log in of current BDXLive\r\n */\r\nexport const LOGIN = () => `${getBdxliveDomain()}/security/login.aspx?redesign=1&domainCall=redesign`;\r\n\r\n/**\r\n * URL to load the current BDXLive Eflyer page\r\n */\r\nexport const EFLYER_PAGE = () => `${getBdxliveDomain()}/BDXConnect/ManageCampaign.aspx?redesign=1&page=eflyer&domainCall=redesign`;\r\n\r\n/**\r\n * URL to load the current BDXLive New campaign page\r\n */\r\nexport const NEW_EFLYER_PAGE = () => `${getBdxliveDomain()}/BDXConnect/AddEditEflyerCampaign.aspx?Mode=0&redesign=1&page=newEflyer&domainCall=redesign`;\r\n\r\n/**\r\n * URL to load the current BDXLive Billing page\r\n */\r\nexport const BILLING_PAGE = () => `${getBdxliveDomain()}/Invoices/BuilderInvoices.aspx?redesign=1&page=billing&domainCall=redesign`;\r\n\r\n/**\r\n * URL to load the current BDXLive Geography page\r\n */\r\nexport const GEOGRAPHY_PAGE = () => `${getBdxliveDomain()}/RadiusManagement/RadiusManagement.aspx?redesign=1&page=geography&domainCall=redesign`;\r\n\r\n/**\r\n * URL to load the current BDXLive Main Details (Builder level)\r\n */\r\nexport const CORPORATION_MAIN_DETAILS = ({ partner, builder }) => `${getBdxliveDomain()}/Builder/AddEditBuilderCorporation.aspx?PartnerID=${partner}&BuilderID=${builder}&redesign=1&page=mainDetailsC&TabIndex=0&domainCall=redesign`;\r\n\r\n/**\r\n * URL to load the current BDXLive Lead Recipient (Builder level)\r\n */\r\nexport const CORPORATION_LEAD_RECIPIENT = ({ partner, builder }) => `${getBdxliveDomain()}/Builder/AddEditBuilderCorporation.aspx?PartnerID=${partner}&BuilderID=${builder}&redesign=1&page=leadRecipient&TabIndex=1&domainCall=redesign`;\r\n\r\n/**\r\n * URL to load the current BDXLive Manage Division (Builder level)\r\n */\r\nexport const CORPORATION_MANAGE_DIVISION = ({ partner, builder }) => `${getBdxliveDomain()}/Builder/AddEditBuilderCorporation.aspx?PartnerID=${partner}&BuilderID=${builder}&redesign=1&page=manageDivision&TabIndex=2&domainCall=redesign`;\r\n\r\n/**\r\n * URL to load the current BDXLive Datafeed Overrides (Builder level)\r\n */\r\nexport const CORPORATION_DATAFEED_OVERRIDES = ({ partner, builder }) => `${getBdxliveDomain()}/Builder/AddEditBuilderCorporation.aspx?PartnerID=${partner}&BuilderID=${builder}&redesign=1&page=datafeedOverrides&TabIndex=5&domainCall=redesign`;\r\n\r\n/**\r\n * URL to load the current BDXLive Testimonials (Division level)\r\n */\r\nexport const DIVISION_TESTIMONIALS = ({ partner, builder, division }) => `${getBdxliveDomain()}/Builder/AddEditBuilderDivision.aspx?PartnerID=${partner}&BuilderCorporationID=${builder}&BuilderID=${division}&redesign=1&page=testimonials&TabIndex=2&domainCall=redesign`;\r\n\r\n/**\r\n * URL to load the current BDXLive Lead Recipient (Division level)\r\n */\r\nexport const DIVISION_LEAD_RECIPIENT = ({ partner, builder, division }) => `${getBdxliveDomain()}/Builder/AddEditBuilderDivision.aspx?PartnerID=${partner}&BuilderCorporationID=${builder}&BuilderID=${division}&redesign=1&page=leadRecipient&TabIndex=3&domainCall=redesign`;\r\n\r\n/**\r\n * URL to load the current BDXLive Improce Data Score (Community level)\r\n */\r\nexport const COMMUNITY_IMPROVE_DATA_SCORE = ({ division, community }) => `${getBdxliveDomain()}/Community/AddEditCommunity.aspx?BuilderID=${division}&CommunityID=${community}&Mode=2&redesign=1&page=improveDataScore&domainCall=redesign`;\r\n\r\n/**\r\n * URL to load the current BDXLive Improce Data Score (Plan level)\r\n */\r\nexport const PLAN_IMPROVE_DATA_SCORE = ({ division, community, plan }) => `${getBdxliveDomain()}/Home/AddEditHomePlan.aspx?PlanID=${plan}&BuilderID=${division}&CommunityID=${community}&Mode=2&redesign=1&page=improveDataScore&domainCall=redesign`;\r\n\r\n/**\r\n * URL to load the current BDXLive Improce Data Score (Spec level)\r\n */\r\nexport const SPEC_IMPROVE_DATA_SCORE = ({ division, community, plan, spec }) => `${getBdxliveDomain()}/Home/AddEditSpecification.aspx?PlanID=${plan}&SpecID=${spec}&BuilderID=${division}&CommunityID=${community}&Mode=2&redesign=1&page=improveDataScore&domainCall=redesign`;\r\n\r\n/**\r\n * URL to load the current BDXLive Co-Op Confirmation Report\r\n */\r\nexport const COOP_CONFIRMATION_REPORT = ({ partner, partnerName, builder, builderName, division }) => `${getBdxliveDomain()}/Default.aspx?${partner ? `PartnerID=${partner}&` : ``}${partnerName ? `PartnerName=${partnerName}&` : ``}${builder ? `BuilderCorporationID=${builder}&` : ``}${builderName ? `BuilderCorporationName=${builderName}&` : ``}${division ? `BuilderID=${division}&` : ``}redesign=1&page=report&domainCall=redesign`;\r\n\r\n/**\r\n * URL to load the current BDXLive Consumer Optix - Contract Signee\r\n */\r\nexport const CONTRACT_SIGNEE = () => `${getBdxliveDomain()}/Default.aspx?redesign=1&page=contractSignee&domainCall=redesign`;\r\n\r\n/**\r\n * URL to load the current BDXLive Consumer Optix - See Lead Aug\r\n */\r\nexport const SEE_LEAD_AUG = () => `${getBdxliveDomain()}/Default.aspx?redesign=1&page=seeLeadAug&domainCall=redesign`;\r\n\r\n/**\r\n * URL to load the current BDXLive Account Info\r\n */\r\nexport const ACCOUNT_INFO = () => `${getBdxliveDomain()}/Default.aspx?redesign=1&page=accountInfo&domainCall=redesign`;\r\n\r\n/**\r\n * Remove the double // when the key already has a / added to the end of the URL so that the iframes are recognized correctly\r\n */\r\nexport const getBdxliveDomain = () => {\r\n const domain = config('BdxLiveDomain');\r\n return domain.charAt(domain.length - 1) === '/' ? `${domain.slice(0, -1)}` : `${domain}`;\r\n};\r\n","import { svg } from 'lit-element';\r\n\r\nexport const CNALogo = svg`\r\nCasas Nuevas Aquí`;\r\n\r\nexport const BDXLogoSmallWhite = svg`\r\n \r\n \r\n `;\r\n\r\nexport const NHSlogo = svg``;\r\n\r\nexport const BDX = svg`\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n`;\r\n\r\nexport const ZONDA_SMALL_ICON = svg`\r\n \r\n \r\n \r\n \r\n \r\n`;\r\nexport const hglogo = svg`\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n`;\r\n","import { LitElement, html } from 'lit-element';\r\n\r\n/**\r\n * Component Style Importings\r\n */\r\nimport css from './bdx-carousel.css?inline';\r\n\r\n/**\r\n * Component image/icons Importings\r\n */\r\nimport { right, left } from '../../../../assets/css/images/icons';\r\n\r\nclass BdxCarousel extends LitElement {\r\n static get properties() {\r\n return {\r\n slideIndex: { type: Number },\r\n maxDots: { type: Number },\r\n slides: { type: Array },\r\n dots: { type: Boolean },\r\n showDots: { type: Boolean },\r\n autoHideArrows: { type: Boolean },\r\n interval: { type: Number },\r\n };\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.slideIndex = 1;\r\n this.slides = [];\r\n\r\n this.autoHideArrows = this.getAttribute('auto-hide-arrows') != null;\r\n this.showDots = this.getAttribute('dots') != null;\r\n this.maxDots = parseInt(this.getAttribute('max-dots') || -1, 10);\r\n }\r\n\r\n render() {\r\n return html`\r\n \r\n
\r\n \r\n

\r\n ${left}\r\n

\r\n

\r\n ${right}\r\n

\r\n ${this.showDots && this.slides.length <= (this.maxDots || this.slides.length) ? html`
${Object.values(this.slides).map((slide, index) => html` `)}
` : ``}\r\n
\r\n `;\r\n }\r\n\r\n firstUpdated() {\r\n const this_ = this;\r\n setTimeout(() => {\r\n this_.showSlides(this.slideIndex);\r\n setTimeout(() => this_.setupDots());\r\n });\r\n\r\n if (this.autoHideArrows) {\r\n this.changeArrowsVisibility(false, 0);\r\n\r\n const container = this.shadowRoot.querySelector('.container');\r\n container.addEventListener('mouseover', () => {\r\n this.changeArrowsVisibility(true);\r\n });\r\n\r\n container.addEventListener('mouseout', () => {\r\n this.changeArrowsVisibility(false);\r\n });\r\n }\r\n\r\n if (this.interval) {\r\n const next = this.shadowRoot.querySelector('p.next');\r\n setInterval(() => {\r\n next.click();\r\n }, this.interval * 1000);\r\n }\r\n }\r\n\r\n changeArrowsVisibility(display, delay = 500) {\r\n const arrows = this.shadowRoot.querySelectorAll('.arrow');\r\n clearTimeout(this.timeOut);\r\n this.timeOut = setTimeout(() => {\r\n arrows.forEach((btn) => {\r\n btn.style.display = display ? 'flex' : 'none';\r\n });\r\n }, delay);\r\n }\r\n\r\n go(event) {\r\n this.showSlides((this.slideIndex = parseInt(event.target.getAttribute('name'), 10)));\r\n }\r\n\r\n goPrev() {\r\n this.showSlides((this.slideIndex -= 1));\r\n }\r\n\r\n goNext() {\r\n this.showSlides((this.slideIndex += 1));\r\n }\r\n\r\n setupDots() {\r\n const dots = this.shadowRoot.querySelectorAll('.dot');\r\n\r\n dots.forEach((dot) => {\r\n dot.classList.remove('active');\r\n });\r\n\r\n const active = dots[this.slideIndex - 1];\r\n if (active) {\r\n active.classList.toggle('active');\r\n }\r\n }\r\n\r\n showSlides(n) {\r\n this.slides = this.shadowRoot.querySelector('[name=\"slides\"]').assignedNodes()[0].children;\r\n\r\n if (n > this.slides.length) {\r\n this.slideIndex = 1;\r\n }\r\n\r\n if (n < 1) {\r\n this.slideIndex = this.slides.length;\r\n }\r\n\r\n for (let i = 0; i < this.slides.length; i++) {\r\n this.slides[i].style.display = 'none';\r\n }\r\n\r\n this.slides[this.slideIndex - 1].style.display = 'block';\r\n\r\n if (this.dots) {\r\n this.setupDots();\r\n }\r\n }\r\n}\r\n\r\ncustomElements.define('bdx-carousel', BdxCarousel);\r\n","import { LitElement, html } from 'lit-element';\r\n\r\nimport css from './bdx-carousel-item.css?inline';\r\n\r\nclass BdxCarouselItem extends LitElement {\r\n static get properties() {\r\n return {\r\n imagePath: { type: String },\r\n caption: { type: String },\r\n };\r\n }\r\n\r\n render() {\r\n return html`\r\n \r\n
\r\n \r\n
\r\n `;\r\n }\r\n}\r\n\r\ncustomElements.define('bdx-carousel-item', BdxCarouselItem);\r\n","import { svg } from 'lit-element';\r\n\r\nexport const buildLoadingSvg = (height, width, stroke, radius) => svg`\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n`;\r\n","import { html } from 'lit-element';\r\n\r\nimport { LOGIN } from '@/constants/bdx-live-url';\r\nimport { buildLoadingSvg } from '../../../../assets/css/images/loading-svg';\r\nimport viewStyle from './bdx-iframe.css?inline';\r\n\r\nexport default function () {\r\n return html`\r\n \r\n\r\n
\r\n ${buildLoadingSvg(100, 100, 4)}\r\n ${this.alreadyLoggedIn || this.logout ? html` ` : html` `}\r\n
\r\n `;\r\n}\r\n","import { LitElement, html } from 'lit-element';\r\nimport { connect } from 'pwa-helpers/connect-mixin';\r\n// This element is connected to the Redux store.\r\nimport { navPartnerIdContextSelector, navBuilderIdContextSelector, navDivisionIdContextSelector, navCommunityIdContextSelector, navPlanIdContextSelector, navSpecIdContextSelector } from '@/modules/global/@redux/selectors';\r\nimport { deepCompare, clone } from '@/utils/bdx-lodash-lite';\r\nimport { userContextPartnerSelector, userContextBuilderSelector, userContextDivisionSelector } from '@/modules/auth/@redux/selectors';\r\nimport { store } from '../../../app.store';\r\n\r\nimport template from './bdx-iframe.html';\r\nimport { b64Decode, encryptBdxLiveAES } from '../../../utils/bdx-lodash-lite/encryption';\r\nimport { config } from '@/redux/config/selectors';\r\n\r\n/**\r\n * This component is responsible for loading the BDXLive URL previously\r\n * built into the bdx-iframe-mixin into the iframe. While the iframe is\r\n * loading it displays a load animation, once the iframe is ready to be displayed,\r\n * the load animation is removed.\r\n * @class\r\n * This implements the connection mixin to work with Redux functionality\r\n */\r\nclass BdxIframe extends connect(store)(LitElement) {\r\n get template() {\r\n return template.bind(this)();\r\n }\r\n\r\n /**\r\n * It is used to obtain the current context that the application has\r\n * and to be able to build the BDXLive URL that you want to load.\r\n */\r\n get context() {\r\n const state = store.getState();\r\n const partnerId = userContextPartnerSelector(state) ? userContextPartnerSelector(state).partnerId : null;\r\n const builderId = userContextBuilderSelector(state) ? userContextBuilderSelector(state).builderId : null;\r\n const divisionId = userContextDivisionSelector(state) ? userContextDivisionSelector(state)?.[0]?.builderId : null;\r\n return {\r\n partner: navPartnerIdContextSelector(state) || partnerId, // Current selected Partner.\r\n builder: navBuilderIdContextSelector(state) || builderId, // Current selected Builder.\r\n division: navDivisionIdContextSelector(state) || divisionId, // Current selected Division.\r\n community: navCommunityIdContextSelector(state), // Current selected Communty.\r\n plan: navPlanIdContextSelector(state), // Current selected Plan.\r\n spec: navSpecIdContextSelector(state), // Current selected Spec.\r\n };\r\n }\r\n\r\n get alreadyLoggedInStorageName() {\r\n return `callToBdxLive${config('BdxLiveDomain')}`;\r\n }\r\n\r\n static get properties() {\r\n return {\r\n iframeClass: { type: String }, // Class with which the iframe is to be loaded.\r\n userObject: { type: String }, // Object with user information to log in to the current BDXLive.\r\n url: { type: String }, // URL to load in the iframe.\r\n logout: { type: Boolean }, // Know if the purpose of the iframe is to close session.\r\n isLoading: { type: Boolean }, // It allows to know if the charge iframe already and to be able to remove the load animation.\r\n alreadyLoggedIn: { type: Boolean }, // It lets you know if you have already logged in to the current BDXLive site and then be able to logout.\r\n };\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.userObject = encryptBdxLiveAES(b64Decode(localStorage.getItem('userInfoBdxLive')));\r\n this.url = '';\r\n this.iframeClass = 'div-iframe-page';\r\n this.logout = false;\r\n this.isLoading = true;\r\n this.alreadyLoggedIn = false;\r\n }\r\n\r\n render() {\r\n return html` ${this.template} `;\r\n }\r\n\r\n /**\r\n * iframeLoaded works to determine when the iframe is ready to be displayed.\r\n * In specific cases such as for the current Logout and Login in BDXLive\r\n * that are iframe that are never shown, the following logic is available.\r\n * @logout\r\n * When Logout is being done, it is verified that the logout page on the BDXLive\r\n * side has already loaded and the iframe is removed so that the redirection that\r\n * BDXLive does after the logout is not done.\r\n * @login\r\n * When Login is being made, it is verified that the login page on the BDXLive\r\n * side has already loaded and proceeds to remove the iframe and it is established\r\n * that the login has already been made\r\n * and the BDXLive URL that was requested from the beginning can be loaded.\r\n */\r\n iframeLoaded() {\r\n if (this.logout) {\r\n const iframe = this.shadowRoot.getElementById('iframe');\r\n iframe.parentNode.removeChild(iframe);\r\n this.isLoading = false;\r\n } else if (!this.alreadyLoggedIn) {\r\n const iframe = this.shadowRoot.getElementById('iframeLogin');\r\n iframe.parentNode.removeChild(iframe);\r\n this.alreadyLoggedIn = true;\r\n localStorage.setItem(this.alreadyLoggedInStorageName, true);\r\n this.requestUpdate();\r\n } else {\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n /**\r\n * Called after Redux status changes. To know if I change the\r\n * context and if so, force the context update.\r\n * @param state Current state after change\r\n */\r\n stateChanged(state) {\r\n super.stateChanged(state);\r\n if (!deepCompare(this.previousContext, this.context)) {\r\n this.previousContext = clone(this.context);\r\n this.requestUpdate();\r\n this.isLoading = true;\r\n }\r\n }\r\n}\r\ncustomElements.define('bdx-iframe', BdxIframe);\r\n","import { html } from 'lit-element';\r\nimport { LOGOUT } from '@/constants/bdx-live-url';\r\nimport { material, lightTheme, sharedColors } from '../../../../../assets/css/theming/material-theme';\r\nimport { typography } from '@/assets/css/theming/typography';\r\nimport { ZONDA_SMALL_ICON } from '@/assets/css/images/logos';\r\nimport '@/shared/components/carousel/bdx-carousel';\r\nimport '@/shared/components/carousel/bdx-carousel-item';\r\nimport { user, left } from '@/assets/css/images/icons';\r\nimport { empty } from '@/utils/bdx-lodash-lite';\r\nimport { config } from '@/redux/config/selectors';\r\nimport '@/shared/components/iframe/bdx-iframe';\r\nimport { buildLoadingSvg } from '@/assets/css/images/loading-svg';\r\n\r\nexport function template() {\r\n return html`\r\n
\r\n ${this.recovery ? html` this.cancel()}\" class=\"icon arrow\">${left} ` : html``}\r\n\r\n
\r\n
${ZONDA_SMALL_ICON}
\r\n
Zonda Live
\r\n
\r\n
\r\n ${!this.recovery\r\n ? html`\r\n

Log in to your Account

\r\n {\r\n if (e.keyCode === 13) this.handleLoginClick();\r\n }}\"\r\n tabIndex=\"1\"\r\n label=\"Username\"\r\n autofocus\r\n required\r\n class=\"outlined-text-fields\"\r\n ?invalid=\"${!empty(this.getError(/^.*Username.*$/gi))}\"\r\n error-message=\"${this.getError(/^.*Username.*$/gi) || 'User name is required'}\"\r\n .disabled=${this.isSigningIn}\r\n >\r\n ${user}\r\n \r\n {\r\n if (e.keyCode === 13) this.handleLoginClick();\r\n }}\"\r\n tabIndex=\"2\"\r\n label=\"Password\"\r\n required\r\n ?invalid=\"${!empty(this.getError(/^((?!Username).)*$/gi))}\"\r\n error-message=\"${this.getError(/^((?!Username).)*$/gi) || 'Password is required'}\"\r\n class=\"outlined-text-fields\"\r\n .disabled=${this.isSigningIn}\r\n >\r\n Keep me signed in\r\n this.handleLoginClick()}}\" .disabled=${this.isSigningIn}>\r\n Sign In \r\n ${this.isSigningIn ? html`${buildLoadingSvg(18, 18, 4)}` : null}\r\n \r\n

Can't sign in? Recover your this.pageRecoveryView('username')}\">username.
Recover your this.pageRecoveryView('password')}\">password.

\r\n Interested in becoming a customer?\r\n `\r\n : html` `}\r\n
\r\n
\r\n\r\n ${typography} ${material} ${lightTheme} ${this.currentTheme} ${sharedColors} ${localStorage.getItem(`callToBdxLive${config('BdxLiveDomain')}`) === 'true' ? html` ` : null}\r\n `;\r\n}\r\n","/* eslint-disable no-nested-ternary */\r\n/* eslint-disable no-restricted-globals */\r\nimport { getParameters } from '@/redux/routes/selectors';\r\nimport { store } from '@/app/app.store';\r\n/* eslint-disable no-restricted-globals */\r\nimport { Community } from '@/app/models/Community';\r\nimport { Plan } from '@/app/models/Plan';\r\nimport { Spec } from '@/app/models/Spec';\r\nimport { Partner } from '@/app/models/Partner';\r\nimport { Division } from '@/app/models/Division';\r\nimport { Builder } from '@/app/models/Builder';\r\n\r\nimport { hasQueryParam } from '@/utils/routing/queryParams';\r\nimport { deepCompare, empty, stringToPrimitive } from '@/utils/bdx-lodash-lite';\r\nimport { checkSiteUpdate } from '@/utils/version/version-helpers';\r\n\r\nexport const BdxElementMixin = (baseElement) =>\r\n /**\r\n * Base Bdx Components mixing with base functionality shared by all Components for the project\r\n *\r\n * @protected\r\n */\r\n class extends baseElement {\r\n /**\r\n * Initialize parameters for the page\r\n */\r\n constructor() {\r\n super();\r\n this._parameters = getParameters(store.getState());\r\n this.componentUrl = location.pathname;\r\n }\r\n\r\n /**\r\n * Current rount parameters from vaadin router\r\n */\r\n get parameters() {\r\n if (!this.location) return this._parameters;\r\n return Object.assign(this._parameters, this.location.params);\r\n }\r\n\r\n /**\r\n * Defines if thecurrent detail page is in Insert or Update mode (if community param is missing it is add mode)\r\n */\r\n get isAddNewMode() {\r\n return document.location.href.includes('/new');\r\n }\r\n\r\n /**\r\n * Defines if it is the last tab or not (based on if the last parameter is present in the url or not) or it is a url with the first param value = new\r\n */\r\n get isWizardMode() {\r\n const hasWizardParam = hasQueryParam('wizard');\r\n const isNewParam = document.location.href.includes('/new');\r\n return hasWizardParam || this.isWizard || isNewParam;\r\n }\r\n\r\n /**\r\n * Defines if it is the last tab or not (based on if the last parameter is present in the url or not)\r\n */\r\n get isLastTab() {\r\n return document.location.href.includes('last=1');\r\n }\r\n\r\n /**\r\n * Determines from the url whats the entity name for the current page.\r\n */\r\n get entityTypeName() {\r\n const communityName = Community().model;\r\n const specName = Spec().model;\r\n const planName = Plan().model;\r\n const partnerName = Partner().model;\r\n const divisionName = Division().model;\r\n const builderName = Builder().model;\r\n\r\n if (document.location && document.location.pathname.includes(communityName)) return communityName;\r\n if (document.location && document.location.pathname.includes(planName)) return planName;\r\n if (document.location && document.location.pathname.includes(specName)) return specName;\r\n if (document.location && document.location.pathname.includes(partnerName)) return partnerName;\r\n if (document.location && document.location.pathname.includes(builderName)) return builderName;\r\n if (document.location && document.location.pathname.includes(divisionName)) return divisionName;\r\n return 'New';\r\n }\r\n\r\n async onBeforeLeave(location, commands) {\r\n const needUpdates = await checkSiteUpdate();\r\n if (needUpdates) {\r\n return commands.prevent();\r\n }\r\n if (super.onBeforeLeave) return super.onBeforeLeave(location, commands);\r\n }\r\n\r\n /**\r\n * Form Validation before Save, based on input types or patters or required attributes\r\n * This method recursively call all the validate or validateElements of their form elements (bdx components or basic ones)\r\n */\r\n validateElements(selector, makeFocus = true) {\r\n const invalidElement = this.findInvalidElements(selector);\r\n\r\n if (invalidElement || (this.customValidation && !this.customValidation())) {\r\n if (makeFocus) {\r\n invalidElement.focusFirstInvalidElement ? invalidElement.focusFirstInvalidElement() : invalidElement.focus();\r\n }\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Used to set focus when there is an invalid value in some of the component textfields\r\n */\r\n focusFirstInvalidElement(selector) {\r\n const invalidElement = this.findInvalidElements(selector);\r\n\r\n if (invalidElement) {\r\n if (invalidElement.focusFirstInvalidElement) {\r\n invalidElement.focusFirstInvalidElement(selector);\r\n } else {\r\n invalidElement.focus();\r\n }\r\n }\r\n }\r\n\r\n findInvalidElements(selector) {\r\n const elements = [...this.shadowRoot.querySelectorAll(selector || '[form-validation]')];\r\n const invalidElement = elements.find((elem) => {\r\n const elementsValid = elem.validateElements !== undefined ? elem.validateElements() : elem.validate?.();\r\n return !elementsValid && elem.offsetParent;\r\n });\r\n\r\n return invalidElement;\r\n }\r\n\r\n /**\r\n * Dispatch a event where a element changes its value\r\n * @param {*} event\r\n */\r\n dispatchChange(event) {\r\n const { target: { dataset: { name, keep } = {}, type, checked, numValue, valueAsNumber, valueInput, value } = {}, changes, detail: comboInfo } = event;\r\n let detail = { changes };\r\n if (empty(changes) && name !== undefined) {\r\n // keep data name is used to font parse the value from the event target, just use it as it is\r\n const inputVal = valueInput === undefined ? value : valueInput;\r\n let newValue = keep ? inputVal : stringToPrimitive(inputVal);\r\n\r\n // case when it is a checkbox\r\n if (checked !== undefined && type !== 'radio') {\r\n newValue = checked;\r\n }\r\n\r\n // case for bdx combobox, extract selected value\r\n if (comboInfo && comboInfo.value && type !== 'text') {\r\n newValue = stringToPrimitive(comboInfo.value);\r\n }\r\n\r\n // from the numeric field components\r\n if (numValue !== undefined || (valueAsNumber !== undefined && !Number.isNaN(valueAsNumber))) {\r\n const numberValue = numValue !== undefined ? numValue : valueAsNumber; // if present numm value (moneyField component) use it, if present valueAsNumber (number format component) user it if not use defaul value property\r\n newValue = parseFloat(numberValue);\r\n }\r\n\r\n // new Detail info for the event to be propagated to the upper components\r\n detail = {\r\n name,\r\n value: newValue,\r\n field: (this.basePath || '') + name,\r\n };\r\n }\r\n\r\n // add custom values to dispatch for specific components, this is when a change in a single field, should change other properties in the entity\r\n if (this.customDispatchChange) {\r\n this.customDispatchChange(detail);\r\n }\r\n\r\n if (detail.value !== undefined) {\r\n detail.changes = { ...detail.changes, ...{ [detail.field]: detail.value } };\r\n }\r\n\r\n return this.dispatchEvent(new CustomEvent('form-changed', { composed: true, bubbles: true, detail }));\r\n }\r\n\r\n /**\r\n * Change the read only status for all read only elements\r\n */\r\n makeReadOnly(elementList, isReadOnly) {\r\n this.updateComplete.then(() => {\r\n const gridSelection = [...this.shadowRoot.querySelectorAll('vaadin-grid-selection-column')];\r\n gridSelection.forEach((column) => {\r\n column.autoSelect = !isReadOnly;\r\n column._allCells.forEach(({ _content }) => {\r\n if (_content?.firstElementChild?.localName === 'vaadin-checkbox') {\r\n _content.firstElementChild.disabled = isReadOnly;\r\n }\r\n });\r\n });\r\n });\r\n const elements = [...this.shadowRoot.querySelectorAll(elementList)];\r\n\r\n elements\r\n // Need to add this because it was impossible to programmatically disable elements inline\r\n .filter((elem) => !elem.hasAttribute('skip-make-readonly'))\r\n .forEach((elem) => {\r\n elem.readonly = isReadOnly;\r\n elem.disabled = isReadOnly;\r\n });\r\n }\r\n\r\n afterModalOpen() {\r\n if (super.afterModalOpen) {\r\n super.afterModalOpen();\r\n }\r\n setTimeout(() => {\r\n this.focusFirstElement();\r\n }, 350);\r\n }\r\n\r\n /**\r\n * Focus the first input element for the form\r\n */\r\n focusFirstElement = () => {\r\n const $this = this;\r\n let firstElement;\r\n\r\n // Every time an event occurs, call the keydownHandler method to focus on the corresponding element\r\n this.parent.addEventListener('keydown', keydownHandler, false);\r\n\r\n $this.updateComplete.then(() => {\r\n const elements = ['bdx-search-field', 'bdx-input', 'bdx-textarea', 'vaadin-text-field', 'vaadin-combo-box', 'vaadin-radio-button', 'bdx-community-combo-box', 'vaadin-text-area, bdx-url-text-field'];\r\n [firstElement = $this.parent.cancelButton] = Array.from($this.shadowRoot.querySelectorAll(elements.join()));\r\n\r\n // Focus on the first element of the modal in the first entry.\r\n if (firstElement instanceof Element) {\r\n firstElement.focus();\r\n firstElement.setAttribute('focus-ring', '');\r\n }\r\n });\r\n\r\n function keydownHandler(event) {\r\n const evt = event || window.event;\r\n const keyCode = evt.which || evt.keyCode;\r\n\r\n let [lastElement] = Array.from($this.shadowRoot.querySelectorAll('.submittable__bottom vaadin-button'))\r\n .reverse()\r\n .filter(({ disabled }) => !disabled);\r\n\r\n if (!lastElement) {\r\n [lastElement] = Array.from($this.parent.shadowRoot.querySelectorAll('.modal__checkbox, .modal__btn'))\r\n .reverse()\r\n .filter(({ disabled }) => !disabled);\r\n }\r\n\r\n let focusedElement = document.activeElement;\r\n\r\n if (focusedElement.shadowRoot) {\r\n focusedElement = focusedElement.shadowRoot.activeElement;\r\n }\r\n\r\n if (deepCompare(focusedElement, firstElement)) {\r\n if (deepCompare(keyCode, 9) && evt.shiftKey) {\r\n // If Shift + Tab is pressed and the element where the event occurs is the first, focus will be put on the last element.\r\n if (evt.preventDefault) evt.preventDefault();\r\n else evt.returnValue = false;\r\n lastElement.focus();\r\n }\r\n } else if (deepCompare(focusedElement, lastElement)) {\r\n if (deepCompare(keyCode, 9) && !evt.shiftKey) {\r\n // If Tab is pressed and the element where the event occurs is the last one, focus will be put on the first element.\r\n if (evt.preventDefault) evt.preventDefault();\r\n else evt.returnValue = false;\r\n firstElement.focus();\r\n }\r\n }\r\n }\r\n };\r\n };\r\n","import { storeSubject } from '../redux/storeSubscriptionSubject';\r\n// import { store } from '@/app/app.store';\r\n\r\nexport const useStore = () => (classDescriptor) => {\r\n // const firstUpdated = classDescriptor.elements.find(({ key }) => key === 'firstUpdated');\r\n // if (firstUpdated) {\r\n // const { value } = firstUpdated.descriptor;\r\n // firstUpdated.descriptor.value = function fu() {\r\n // value.call(this);\r\n // classDescriptor.elements.forEach(element => element.descriptor.stateChanged instanceof Function && element.descriptor.stateChanged(store.getState(), true));\r\n // };\r\n // }\r\n\r\n return {\r\n ...classDescriptor,\r\n finisher: (clazz) => {\r\n clazz.prototype.__useStoreConnectedCallback = clazz.prototype.connectedCallback;\r\n clazz.prototype.connectedCallback = function connectedCallback() {\r\n const _this = this;\r\n if (_this.isConnected) {\r\n _this.__observables = storeSubject().subscribe((state) => {\r\n classDescriptor.elements.forEach(({ descriptor }) => descriptor.stateChanged instanceof Function && descriptor.stateChanged(state));\r\n });\r\n classDescriptor.elements.forEach((element) => element.descriptor.init instanceof Function && element.descriptor.init(_this));\r\n _this.__useStoreConnectedCallback();\r\n }\r\n };\r\n\r\n clazz.prototype.__useStoreDisconnectedCallback = clazz.prototype.disconnectedCallback;\r\n clazz.prototype.disconnectedCallback = function disconnectedCallback() {\r\n this.__observables.unsubscribe();\r\n if (typeof this.__useStoreDisconnectedCallback === 'function') {\r\n this.__useStoreDisconnectedCallback();\r\n }\r\n };\r\n },\r\n };\r\n};\r\n","import { getLoading } from '@/redux/selectors';\r\nimport { notEqual } from 'lit-element';\r\nimport { Model } from '../models';\r\n\r\nconst loadingHandler = (descriptor, localState) => (state) => {\r\n let loading = false;\r\n if (localState.context && localState.context.model instanceof Model && localState.context.entityId) {\r\n loading = getLoading(state, localState.config.listen, localState.context.model.name, localState.context.entityId);\r\n } else {\r\n loading = getLoading(state, localState.config.listen);\r\n }\r\n if (localState.node.requestUpdate instanceof Function) {\r\n const oldValue = localState.value;\r\n localState.value = loading;\r\n if (localState.hasChanged(localState.value, oldValue)) {\r\n localState.node.requestUpdate(descriptor.key, oldValue);\r\n }\r\n }\r\n};\r\n\r\nexport const useLoading =\r\n (listen, context, { hasChanged = notEqual } = {}) =>\r\n (descriptor) => {\r\n const localState = {\r\n value: descriptor.initializer instanceof Function ? descriptor.initializer() : true,\r\n node: null,\r\n config: { listen, context },\r\n hasChanged,\r\n };\r\n\r\n delete descriptor.initializer;\r\n\r\n return {\r\n ...descriptor,\r\n kind: 'method',\r\n descriptor: {\r\n localState,\r\n set: (value) => {\r\n localState.value = value;\r\n },\r\n get: () => localState.value,\r\n init: stateInit(localState),\r\n stateChanged: loadingHandler(descriptor, localState),\r\n },\r\n };\r\n };\r\n\r\nconst stateInit = (localState) => (node) => {\r\n localState.node = node;\r\n\r\n const { model, id } = localState?.config?.context?.(node) ?? {};\r\n\r\n if (node.entityId && (node.model instanceof Model || node.entityModel instanceof Model)) {\r\n localState.context = {\r\n model: model || node.entityModel || node.model,\r\n entityId: id || node.entityId,\r\n };\r\n }\r\n};\r\n","import { Model } from '../utils/models';\r\nimport { imagesSchema } from '../app.entities';\r\n\r\nexport const Image = () =>\r\n new Model({\r\n name: 'images',\r\n model: 'image',\r\n schema: imagesSchema,\r\n describerFields: {\r\n id: 'imageId',\r\n title: 'imageTitle',\r\n caption: 'imageDescription',\r\n name: ['imageName', 'originalPath'],\r\n src: 'localPath',\r\n contentSrc: 'localPath',\r\n sequence: 'imageSequence',\r\n status: 'processorStatusId',\r\n },\r\n template(imageId, context) {\r\n return {\r\n imageId,\r\n imageName: String(),\r\n imageTitle: String(),\r\n originalPath: String(),\r\n ...context,\r\n };\r\n },\r\n });\r\n","import { Model } from '../utils/models';\r\nimport { mlsNameSchema } from '../app.entities';\r\nimport { mlsNamesSaveMutation } from '@/modules/admin/mls-management/@redux/api';\r\n\r\nexport const MlsName = () =>\r\n new Model({\r\n name: 'mlsNames',\r\n model: 'mlsNames',\r\n schema: mlsNameSchema,\r\n describerFields: { id: 'id', name: 'name' },\r\n mutations: { save: mlsNamesSaveMutation },\r\n template(id, context) {\r\n return {\r\n id,\r\n name: '',\r\n ...context,\r\n };\r\n },\r\n });\r\n","import { createSelector } from 'reselect';\r\nimport { getCommunityById, getDivisionById } from '@/redux/entities';\r\nimport { entityById, entitySelector, schemaDenormalizer } from '@/redux/models/selectors';\r\nimport { getBuilderById } from '@/redux/entities/builder/selectors';\r\nimport { empty, orderByField, runPhoneMaskFormat } from '../../../../utils/bdx-lodash-lite';\r\nimport { communitySchema } from '../../../../app.entities';\r\nimport { transformListingImage } from '../../../../utils/images/image-url';\r\nimport { Community } from '@/models/Community';\r\nimport { editEntitySelector } from '../../../../@redux/forms/selectors';\r\nimport { Image } from '@/models/Image';\r\nimport { phoneTypes, regions } from '../../../../constants/bdx-lookups';\r\nimport { MlsName } from '@/models/MlsName';\r\nimport clone from '@/utils/external/clone';\r\n\r\n/** Community Specific Selectors */\r\n\r\n/**\r\n * Checks if the community exist in the Redux Store\r\n * @param {*} state Redux state\r\n * @param {*} communityId Community id to check on the store\r\n */\r\nexport const communityLoadedSelector = (state, communityId) => {\r\n return !empty(state.app.entities.communities[communityId]);\r\n};\r\n\r\nexport const communityIsWebArch = (state, communityId) =>\r\n createSelector(\r\n (_state) => getCommunityById(_state, communityId),\r\n (community) => {\r\n if (community?.channelDisplay) {\r\n const { displayOnKiosk, displayOnSales, displayOnWeb, displayOnWebArch } = community.channelDisplay ?? {};\r\n return displayOnKiosk || displayOnSales || displayOnWeb || displayOnWebArch;\r\n }\r\n }\r\n )(state);\r\n\r\nexport const builderHasDisplayChannelInfo = (state, builderId) =>\r\n createSelector(\r\n (_state) => getBuilderById(_state, builderId),\r\n (_state) => getDivisionById(_state, builderId),\r\n (builder, division) => {\r\n return division?.displayChannelSelection || builder?.displayChannelSelection;\r\n }\r\n )(state);\r\n\r\nexport const builderIsWebArch = (state, builderId) =>\r\n createSelector(\r\n (_state) => getBuilderById(_state, builderId),\r\n (_state) => getDivisionById(_state, builderId),\r\n (builder, division) => {\r\n if (division?.displayChannelSelection) {\r\n return division.displayChannelSelection.displayOnWebArch;\r\n }\r\n if (builder?.displayChannelSelection) {\r\n return builder.displayChannelSelection.displayOnWebArch;\r\n }\r\n return false;\r\n }\r\n )(state);\r\n\r\n/** \r\n Returns the Normalized version of the passed community \r\n * @param {*} state Redux state\r\n * @param {*} communityId Community id to check on the store\r\n*/\r\nexport const communityEntitySelector = schemaDenormalizer((state, communityId) => communityId, communitySchema);\r\n\r\n/**\r\n * Check if the passed community have already loaded the main details properties (communities loads a basic version on the left nav)\r\n * @param {*} state Redux state\r\n * @param {*} communityId Community id to check on the store\r\n */\r\nexport const communityFullLoadedSelector = (state, communityId) => {\r\n return state.app.entities.communities && !empty(state.app.entities.communities[communityId]) && state.app.entities.communities[communityId].dateLastChanged;\r\n};\r\n\r\n/**\r\n * Loads the communities full version to load main details and header\r\n * @param {*} state Redux state\r\n * @param {*} communityId Community id to check on the store\r\n */\r\nexport const communityInfoSelector = (state, communityId) => {\r\n const entityEdit = editEntitySelector(state, communityId, Community().name);\r\n const originalCommunity = communityEntitySelector(state, communityId);\r\n const community = (entityEdit && entityEdit.entity) || originalCommunity;\r\n\r\n if (!empty(community)) {\r\n if (community.builder === null) community.builder = undefined;\r\n const { channelDisplay = {}, listingPerformance = {}, communityPartners = {}, schoolDistricts = [], schools = [], location = {}, salesOffice = {}, builder: { orgTypeCode: builderOrgTypeCode, builderName: divisionName, autoFeedFlag, priceOverrideFlag, brands: [{ brandId, brandName } = {}] = [], partner: { partnerName, partnerId } = {}, parentBuilderId, parentBuilder: { builderName, canadianData, displayGuidedToursOnNhs } = {} } = {} } = originalCommunity || community;\r\n const { USA, CAN } = regions;\r\n\r\n const communityInfo = {\r\n builderOrgTypeCode,\r\n divisionName,\r\n brandId,\r\n brandName,\r\n partnerName,\r\n partnerId,\r\n location,\r\n salesOffice,\r\n parentBuilderId,\r\n builderName,\r\n channelDisplay,\r\n listingPerformance,\r\n communityPartners,\r\n autoFeedFlag,\r\n priceOverrideFlag,\r\n listingsRegion: canadianData ? CAN : USA,\r\n displayGuidedToursOnNhs,\r\n schools,\r\n schoolDistricts,\r\n };\r\n\r\n const isSchoolPage = document.location.href.includes('/schools');\r\n if (!isSchoolPage) {\r\n delete communityInfo.salesOffice;\r\n delete communityInfo.schools;\r\n delete communityInfo.schoolDistricts;\r\n delete communityInfo.location;\r\n }\r\n\r\n return transformCommunity({\r\n ...clone(community, true, 5),\r\n ...communityInfo,\r\n pciImage: originalCommunity && originalCommunity.pciImage,\r\n });\r\n }\r\n\r\n return null;\r\n};\r\n\r\n/**\r\n * Transform the community objecto to be returned, setting some properties that need to be re formated before pass it t o the UI\r\n * @param {Object} community to be transformed\r\n */\r\nexport const transformCommunity = (community) => {\r\n // check if the full community object was already retrieved\r\n // date field is only present when full community info is requested\r\n if (!community.dateLastChanged) {\r\n community.loading = true;\r\n return community;\r\n }\r\n\r\n // check if the full community object was already retrieved\r\n if (!community.image) {\r\n const model = Image();\r\n community.image = {\r\n id: community.pciImage ? community.pciImage[model.describerFields.id] : null,\r\n src: community.pciImage ? transformListingImage(community.pciImage) : null,\r\n preferred: community.pciImage ? community.pciImage.primaryFlag === 'Y' : true,\r\n };\r\n }\r\n\r\n if (community?.salesOffice?.phones) {\r\n community?.salesOffice?.phones.forEach((phone) => {\r\n phone.fullNumber = runPhoneMaskFormat(phone.number ? `${!empty(phone.areaCode) ? phone.areaCode : ''}${phone.number.replace(/\\W/g, '')}` : '');\r\n });\r\n\r\n const { salesOffice: { phones = {} } = {} } = community;\r\n const phoneTrackIndex = phones.findIndex((phone) => phone.type === phoneTypes.Tracking);\r\n if (phoneTrackIndex === -1) {\r\n phones.push({ areaCode: null, number: null, type: phoneTypes.Tracking, fullNumber: '' });\r\n }\r\n\r\n const phoneFaxIndex = phones.findIndex((phone) => phone.type === phoneTypes.Fax);\r\n if (phoneFaxIndex === -1) {\r\n phones.push({ areaCode: null, number: null, type: phoneTypes.Fax, fullNumber: '' });\r\n }\r\n\r\n const phoneCommIndex = phones.findIndex((phone) => phone.type === phoneTypes.Phone);\r\n if (phoneCommIndex === -1) {\r\n phones.push({ areaCode: null, number: null, type: phoneTypes.Phone, fullNumber: '' });\r\n }\r\n }\r\n\r\n community.loading = false;\r\n\r\n return community;\r\n};\r\n\r\n/** Community Schools Specific Selectors */\r\n\r\n/** \r\n Returns the Normalized version of the passed districts id lists\r\n * @param {*} state Redux state\r\n * @param {*} communityId Community id to check on the store\r\n*/\r\nexport const districtsEntitySelector = schemaDenormalizer((state, districtsIds) => districtsIds);\r\n\r\n/**\r\n * Loads the districts list by market id\r\n * @param {*} state Redux state\r\n * @param {*} communityId Community id to check on the store\r\n */\r\nexport const schoolDistrictsByMarketSelector = (state, marketId) => {\r\n if (state && state.app.entities && state.app.entities.schoolDistricts) {\r\n const districts = Object.entries(state.app.entities.schoolDistricts).map((i) => i[1]);\r\n const districtsByMarket = districts.filter((d) => d.marketId === marketId);\r\n if (!empty(districtsByMarket)) {\r\n const demormalizedData = districtsEntitySelector(state, { schoolDistricts: districtsByMarket.map((d) => d.id) });\r\n\r\n // set an extra districtName in the schools to make easier the schools tab functionality\r\n demormalizedData.schoolDistricts.forEach((d) =>\r\n d.schools?.forEach((s) => {\r\n s.districtName = d.name;\r\n })\r\n );\r\n\r\n return demormalizedData.schoolDistricts;\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const getMlsNamesSelector = (state) => {\r\n const mlsNames = entitySelector(state, MlsName().name);\r\n return orderByField(mlsNames, 'name');\r\n};\r\n\r\nexport const getMLSById = (state, mlsId) => entityById(state, mlsId, MlsName().schema);\r\n\r\nexport const getMLSNameById = (state, mlsId) =>\r\n createSelector(\r\n (_state) => getMLSById(_state, mlsId),\r\n (mlsName) => {\r\n if (!empty(mlsName)) {\r\n return mlsName.name;\r\n }\r\n return null;\r\n }\r\n )(state);\r\n","export default \"__VITE_ASSET__CYLZp3$D__\"","import { LitElement, html, property, customElement, css, unsafeCSS } from 'lit-element';\r\n\r\nimport { sharedStyles } from '../../../../../assets/css/shared/shared-styles';\r\nimport '../../../global/components/bdx-main-progress';\r\n\r\nimport '@vaadin/vaadin-text-field/theme/material/vaadin-text-field';\r\nimport '@vaadin/vaadin-text-field/theme/material/vaadin-password-field';\r\nimport '@vaadin/vaadin-form-layout/theme/material/vaadin-form-layout';\r\nimport '@vaadin/vaadin-checkbox/theme/material/vaadin-checkbox';\r\nimport '@vaadin/vaadin-button/theme/material/vaadin-button';\r\n\r\n// This element is connected to the Redux store.\r\nimport { store } from '../../../../app.store';\r\nimport { getErrorInfo, getLoading } from '../../../../@redux/selectors';\r\n\r\n// These are the actions needed by this element.\r\nimport { requestLogin, loginFailUserRequired, loginFailPasswordRequired } from '../../@redux/actions';\r\nimport { LOGIN_FAIL, LOGIN_REQUEST } from '../../@redux/types';\r\nimport { getLastLocation } from '../../../../@redux/routes/selectors';\r\n\r\nimport { template } from './bdx-login-box.html';\r\n\r\nimport { BdxThemeMixin } from '@/utils/mixins/views/bdx-theme-mixin';\r\nimport { BdxElementMixin } from '@/utils/mixins/views/bdx-element-mixin';\r\nimport { useLoading, useStore } from '@/utils/@decorators';\r\nimport background from '@/assets/images/mock/background@3x.png';\r\n\r\n/**\r\n * Component Style Importings\r\n */\r\nimport generalStyles from '@/assets/css/shared/general.css?inline';\r\nimport styles from './bdx-login-box.css?inline';\r\n\r\n@customElement('bdx-login-box')\r\n@useStore()\r\nexport class BdxLoginBox extends BdxElementMixin(BdxThemeMixin(LitElement)) {\r\n @useLoading([LOGIN_REQUEST])\r\n isSigningIn = false;\r\n\r\n @property({ type: String })\r\n recovery;\r\n\r\n static get styles() {\r\n return css`\r\n ${unsafeCSS(generalStyles)}\r\n ${unsafeCSS(styles.replace('[BACKGROUND]', this.background || background))}\r\n `;\r\n }\r\n\r\n get template() {\r\n background;\r\n return template.call(this);\r\n }\r\n\r\n render() {\r\n return html` ${sharedStyles} ${this.template} `;\r\n }\r\n\r\n static get properties() {\r\n return {\r\n userName: { type: String },\r\n password: { type: String },\r\n error: { type: String },\r\n keptLoggedIn: { type: Boolean },\r\n isSigningIn: { type: Boolean },\r\n background: { type: String },\r\n };\r\n }\r\n\r\n getError(regex) {\r\n if (regex.exec(this.error)) {\r\n return this.error;\r\n }\r\n return null;\r\n }\r\n\r\n get userInput() {\r\n return this.shadowRoot.querySelector('#bdxliveUserName');\r\n }\r\n\r\n get passInput() {\r\n return this.shadowRoot.querySelector('#bdxlivePassword');\r\n }\r\n\r\n get keepInput() {\r\n return this.shadowRoot.querySelector('#bdxliveKeepmeSignedIn');\r\n }\r\n\r\n handleLoginClick() {\r\n if (this.isSigningIn) return;\r\n\r\n // get user name and password from login ui\r\n const { checked: keepMe } = this.keepInput;\r\n\r\n const validUser = this.userInput.validate();\r\n const validPass = this.passInput.validate();\r\n\r\n // validate that username was especified\r\n if (!validUser) {\r\n store.dispatch(loginFailUserRequired());\r\n return;\r\n }\r\n\r\n // validate that password was especified\r\n if (!validPass) {\r\n store.dispatch(loginFailPasswordRequired());\r\n return;\r\n }\r\n\r\n // dispatch login action to try to authenticate the user\r\n store.dispatch(\r\n requestLogin({\r\n user: { username: this.userInput.value, password: this.passInput.value },\r\n keepMe,\r\n lastLocation: getLastLocation(store.getState()),\r\n })\r\n );\r\n }\r\n\r\n pageRecoveryView(recoveryElement) {\r\n import('../bdx-recover-credentials/bdx-recover-credentials').then(() => this.elemetToRecover(recoveryElement));\r\n }\r\n\r\n /**\r\n * Close the password recovery scream.\r\n */\r\n cancel() {\r\n this.recovery = '';\r\n }\r\n\r\n // This is called every time something is updated in the store.\r\n stateChanged(state) {\r\n super.stateChanged(state);\r\n\r\n if (state) {\r\n this.error = getErrorInfo(state, [LOGIN_FAIL]).message;\r\n this.loading = getLoading(state, [LOGIN_REQUEST]);\r\n }\r\n }\r\n\r\n /**\r\n * Set the element (username or password) to retrieve\r\n */\r\n elemetToRecover(recoveryElement) {\r\n this.recovery = recoveryElement;\r\n }\r\n}\r\n","/**\r\n * Component Base Elements\r\n */\r\nimport { LitElement, html } from 'lit-element';\r\n\r\nclass BdxBlank extends LitElement {\r\n render() {\r\n return html`
`;\r\n }\r\n}\r\ncustomElements.define('bdx-blank', BdxBlank);\r\n","/**\r\n * Router Helpers\r\n */\r\nimport { addRoutes } from './utils/routing/router-helpers';\r\nimport redirects from './app.redirects';\r\n\r\n/**\r\n * Locations\r\n */\r\nimport {\r\n NOT_FOUND,\r\n WRONG_BUILDER,\r\n AUTO_LOGIN,\r\n LOGIN,\r\n DASHBOARD,\r\n DETAILS,\r\n MANAGE_LEAD_REC,\r\n LISTINGS,\r\n APP_MAIN,\r\n COMMUNITY_DETAIL,\r\n PLAN_DETAIL,\r\n PLAN_DETAIL_MAIN,\r\n PLAN_DETAIL_NEW,\r\n PLAN_IMAGE,\r\n PLAN_VIDEO,\r\n SPEC_DETAIL,\r\n SPEC_DETAIL_MAIN,\r\n SPEC_DETAIL_NEW,\r\n SPEC_IMAGE,\r\n SPEC_VIDEO,\r\n COMMUNITY_DETAIL_NEW,\r\n COMMUNITY_DETAIL_MAIN,\r\n COMMUNITY_IMAGE,\r\n COMMUNITY_VIDEO,\r\n COMMUNITY_SCHOOLS,\r\n LIBRARIES,\r\n PROMOTIONS_LIBRARY,\r\n MULTI_SELECT_COMBO_BOX_DEMO,\r\n MONEY_FIELD_DEMO,\r\n COMMUNITY_INTERACTIVE_MEDIA,\r\n PLAN_INTERACTIVE_MEDIA,\r\n SPEC_INTERACTIVE_MEDIA,\r\n EVENTS_LIBRARY,\r\n COMMUNITY_AMENITIES_UTILITIES,\r\n PLAN_OPTIONS,\r\n COMMUNITY_MARKETING,\r\n COMMUNITY_LOTS,\r\n COMMUNITY_MANAGE_HOMES,\r\n PLAN_LIBRARY,\r\n PLAN_PARENT,\r\n PLAN_PARENT_MAIN,\r\n PLAN_PARENT_IMAGES,\r\n PLAN_PARENT_VIDEOS,\r\n PLAN_PARENT_NEW,\r\n PLAN_PARENT_ASSIGNED_COMMUNITIES,\r\n COMMUNITIES,\r\n SERVICES,\r\n REPORTING,\r\n SETUP,\r\n MANAGE,\r\n EFLYER,\r\n NEW_EFLYER,\r\n LISTHUB,\r\n GREEN_PROGRAM,\r\n DIVISION_TESTIMONIALS,\r\n CORPORATION_LEAD_RECIPIENT,\r\n SPECS,\r\n CORPORATION_DATAFEED_OVERRIDES,\r\n CORPORATION_MAIN_DETAILS,\r\n SOLD_DATA_UPLOAD,\r\n CORPORATION_MANAGE_DIVISION,\r\n BILLING,\r\n DIVISION_LEAD_RECIPIENT,\r\n BUILDER_AGENT,\r\n AGENT_MAIN,\r\n AGENT_POLICIES,\r\n AGENT_BUYER_POLICIES,\r\n BDX_QUICK_EDIT,\r\n BDX_QUICK_EDIT_COMMUNITY,\r\n BDX_QUICK_EDIT_PLANS,\r\n BDX_QUICK_EDIT_SPECS,\r\n PLAN_PARENT_INTERACTIVE_MEDIA,\r\n CO_OP_CONFIRMATION_REPORT,\r\n GEOGRAPHY,\r\n CONTRACTSIGNEE,\r\n SEELEADAUG,\r\n USER_MANAGEMENT,\r\n LEAD_RECIPIENTS_BUILDER,\r\n CORPORATE_LEAD_RECIPIENTS,\r\n ADVANCED_SETTINGS_LEAD_RECIPIENTS,\r\n MANAGE_LEAD_RECIPIENTS,\r\n MPC_DETAIL,\r\n MPC_DETAIL_NEW,\r\n MPC_DETAIL_MAIN,\r\n MPC_AMENITIES_UTILITIES,\r\n MPC_MARKETING,\r\n MPC_IMAGE,\r\n MPC_VIDEO,\r\n MPC_SCHOOLS,\r\n MPCS,\r\n MPC_LINKED_COMMUNITIES,\r\n LOT_DETAIL,\r\n LOT_DETAIL_MAIN,\r\n LOT_IMAGE,\r\n LOT_VIDEO,\r\n LOT_INTERACTIVE_MEDIA,\r\n LOT_DETAIL_NEW,\r\n ADMIN,\r\n LOADER_DATA,\r\n MLS_MANAGEMENT,\r\n LEAD_MANAGEMENT,\r\n SPOTLIGHT,\r\n BRAND,\r\n BRAND_MAIN,\r\n BRAND_IMAGES,\r\n BRAND_VIDEOS,\r\n BRAND_TESTIMONIALS,\r\n BRAND_FAQ,\r\n SPOTLIGHT_MANAGER,\r\n SPOTLIGHT_LANDING,\r\n} from './app.location';\r\n\r\n/**\r\n * Component Importings\r\n */\r\n\r\nimport './modules/auth/components/bdx-login-box/bdx-login-box';\r\nimport './shared/components/bdx-blank';\r\n\r\nexport function loadRoutes() {\r\n addRoutes([\r\n ...redirects,\r\n LOGIN.toRoute(),\r\n AUTO_LOGIN.toRoute(),\r\n APP_MAIN.toRoute([\r\n DASHBOARD.toRoute(),\r\n SERVICES.toRoute([SOLD_DATA_UPLOAD.toRoute(), EFLYER.toRoute(), NEW_EFLYER.toRoute(), LISTHUB.toRoute(), LEAD_MANAGEMENT.toRoute(), SPOTLIGHT.toRoute([SPOTLIGHT_LANDING.toRoute(), SPOTLIGHT_MANAGER.toRoute()]), NOT_FOUND.toRoute()]),\r\n REPORTING.toRoute([]),\r\n SETUP.toRoute([CORPORATION_MAIN_DETAILS.toRoute(), CORPORATION_MANAGE_DIVISION.toRoute(), BILLING.toRoute(), USER_MANAGEMENT.toRoute(), NOT_FOUND.toRoute()]),\r\n ADMIN.toRoute([LOADER_DATA.toRoute(), MLS_MANAGEMENT.toRoute(), NOT_FOUND.toRoute()]),\r\n LISTINGS.toRoute([\r\n BDX_QUICK_EDIT.toRoute([BDX_QUICK_EDIT_COMMUNITY.toRoute(), BDX_QUICK_EDIT_PLANS.toRoute(), BDX_QUICK_EDIT_SPECS.toRoute(), NOT_FOUND.toRoute()]),\r\n DETAILS.toRoute([\r\n COMMUNITY_DETAIL.toRoute([COMMUNITY_DETAIL_MAIN.toRoute(), COMMUNITY_IMAGE.toRoute(), COMMUNITY_VIDEO.toRoute(), COMMUNITY_SCHOOLS.toRoute(), COMMUNITY_AMENITIES_UTILITIES.toRoute(), COMMUNITY_INTERACTIVE_MEDIA.toRoute(), COMMUNITY_LOTS.toRoute(), COMMUNITY_MANAGE_HOMES.toRoute(), COMMUNITY_MARKETING.toRoute(), COMMUNITY_DETAIL_NEW.toRoute(), NOT_FOUND.toRoute()]),\r\n MPC_DETAIL.toRoute([MPC_DETAIL_MAIN.toRoute(), MPC_IMAGE.toRoute(), MPC_VIDEO.toRoute(), MPC_SCHOOLS.toRoute(), MPC_AMENITIES_UTILITIES.toRoute(), MPC_MARKETING.toRoute(), MPC_LINKED_COMMUNITIES.toRoute(), MPC_DETAIL_NEW.toRoute(), NOT_FOUND.toRoute()]),\r\n PLAN_DETAIL.toRoute([PLAN_DETAIL_MAIN.toRoute(), PLAN_IMAGE.toRoute(), PLAN_VIDEO.toRoute(), PLAN_INTERACTIVE_MEDIA.toRoute(), PLAN_OPTIONS.toRoute(), PLAN_DETAIL_NEW.toRoute(), NOT_FOUND.toRoute()]),\r\n SPEC_DETAIL.toRoute([SPEC_DETAIL_MAIN.toRoute(), SPEC_IMAGE.toRoute(), SPEC_VIDEO.toRoute(), SPEC_INTERACTIVE_MEDIA.toRoute(), SPEC_DETAIL_NEW.toRoute(), NOT_FOUND.toRoute()]),\r\n LOT_DETAIL.toRoute([LOT_DETAIL_MAIN.toRoute(), LOT_IMAGE.toRoute(), LOT_VIDEO.toRoute(), LOT_INTERACTIVE_MEDIA.toRoute(), LOT_DETAIL_NEW.toRoute(), NOT_FOUND.toRoute()]),\r\n NOT_FOUND.toRoute(),\r\n ]),\r\n MANAGE_LEAD_REC.toRoute([LEAD_RECIPIENTS_BUILDER.toRoute([MANAGE_LEAD_RECIPIENTS.toRoute(), CORPORATE_LEAD_RECIPIENTS.toRoute(), ADVANCED_SETTINGS_LEAD_RECIPIENTS.toRoute(), NOT_FOUND.toRoute()])]),\r\n LIBRARIES.toRoute([PROMOTIONS_LIBRARY.toRoute(), EVENTS_LIBRARY.toRoute(), PLAN_LIBRARY.toRoute(), PLAN_PARENT.toRoute([PLAN_PARENT_MAIN.toRoute(), PLAN_PARENT_IMAGES.toRoute(), PLAN_PARENT_VIDEOS.toRoute(), PLAN_PARENT_INTERACTIVE_MEDIA.toRoute(), PLAN_PARENT_ASSIGNED_COMMUNITIES.toRoute(), PLAN_PARENT_NEW.toRoute(), NOT_FOUND.toRoute()])]),\r\n CORPORATION_LEAD_RECIPIENT.toRoute(),\r\n BRAND.toRoute([BRAND_MAIN.toRoute(), BRAND_IMAGES.toRoute(), BRAND_VIDEOS.toRoute(), BRAND_TESTIMONIALS.toRoute(), BRAND_FAQ.toRoute()]),\r\n CORPORATION_DATAFEED_OVERRIDES.toRoute(),\r\n GREEN_PROGRAM.toRoute(),\r\n DIVISION_TESTIMONIALS.toRoute(),\r\n DIVISION_LEAD_RECIPIENT.toRoute(),\r\n BUILDER_AGENT.toRoute([AGENT_MAIN.toRoute(), AGENT_POLICIES.toRoute(), AGENT_BUYER_POLICIES.toRoute()]),\r\n MANAGE.toRoute([MPCS.toRoute(), COMMUNITIES.toRoute(), SPECS.toRoute(), NOT_FOUND.toRoute()]),\r\n CO_OP_CONFIRMATION_REPORT.toRoute(),\r\n NOT_FOUND.toRoute(),\r\n ]),\r\n /**\r\n * DEMOS\r\n */\r\n MONEY_FIELD_DEMO.toRoute(),\r\n MULTI_SELECT_COMBO_BOX_DEMO.toRoute(),\r\n GEOGRAPHY.toRoute(),\r\n WRONG_BUILDER.toRoute(),\r\n CONTRACTSIGNEE.toRoute(),\r\n SEELEADAUG.toRoute(),\r\n NOT_FOUND.toRoute(),\r\n ]),\r\n NOT_FOUND.toRoute(),\r\n ]);\r\n}\r\n","/**\r\n * Component Base Elements\r\n */\r\nimport { LitElement, html, customElement, property } from 'lit-element';\r\nimport { createContext } from 'lit-context';\r\n\r\nexport const { consume: consumeNavigate } = createContext('navigate');\r\n\r\n/**\r\n * Element Definition\r\n */\r\n@customElement('bdx-router')\r\nexport class BdxRouter extends LitElement {\r\n @property({ type: String })\r\n from;\r\n\r\n get providedValue() {\r\n const { from } = this;\r\n return {\r\n from,\r\n setNavigate: (_from) => {\r\n this.from = _from;\r\n },\r\n clearNavigate: () => {\r\n this.from = undefined;\r\n },\r\n };\r\n }\r\n\r\n render() {\r\n return html`\r\n \r\n \r\n \r\n `;\r\n }\r\n}\r\n","import { html } from 'lit-element';\r\n\r\n/**\r\n * Component Style Importings\r\n */\r\n\r\nimport { material, lightTheme } from '../assets/css/theming/material-theme';\r\nimport { colors } from '../assets/css/theming/colors';\r\nimport { sharedStyles } from '../assets/css/shared/shared-styles';\r\n\r\nexport function template() {\r\n const css = html` ${material} ${lightTheme} ${colors} ${sharedStyles} `;\r\n\r\n return html`${css} `;\r\n}\r\n","/**\r\n * Component Base Elements\r\n */\r\nimport { LitElement, customElement } from 'lit-element';\r\nimport { connect } from 'pwa-helpers/connect-mixin';\r\nimport { configRequest } from '@/redux/config/actions';\r\nimport { setupErrorLogging } from './utils/error-handling/logging';\r\nimport { checkSiteUpdate } from '@/utils/version/version-helpers';\r\nimport { config } from '@/redux/config/selectors';\r\nimport { activityTypeCode } from '@/constants/bdx-lookups';\r\nimport { ModalService } from '@/utils/services/modal-service';\r\n\r\n/**\r\n * Redux Components\r\n */\r\nimport { store } from './app.store';\r\n\r\n/**\r\n * Route Management\r\n */\r\nimport { init } from './utils/routing/router-helpers'; // eslint-disable-next-line\r\nimport { loadRoutes } from './app.router';\r\nimport './shared/components/bdx-router';\r\n\r\n// These are the actions needed by this element.\r\nimport { template } from './app.main.html';\r\nimport { userContextSelector, userContextBuilderSelector, getUserActivities } from '@/modules/auth/@redux/selectors';\r\nimport { empty, wait } from './utils/bdx-lodash-lite';\r\nimport { closeIconStr } from '../assets/css/images/icons';\r\n\r\n/**\r\n * Main Element Definition\r\n * @class\r\n */\r\n@customElement('app-main')\r\nexport class AppMain extends connect(store)(LitElement) {\r\n /**\r\n * Element properties mapping\r\n */\r\n\r\n static get properties() {\r\n return {\r\n appTitle: String,\r\n userName: String,\r\n user: Object,\r\n };\r\n }\r\n\r\n get canDisplayNewUrlModal() {\r\n const userActivities = getUserActivities(store.getState());\r\n const isActivityShowNewUrlActive = userActivities.some((activity) => activity.activityTypeCode === activityTypeCode.URL);\r\n const enableNewUrlConfig = config('EnableNewUrlModal')?.toLowerCase?.() === 'true';\r\n\r\n return !window.location?.href?.includes('sign-in') && !isActivityShowNewUrlActive && enableNewUrlConfig;\r\n }\r\n\r\n /**\r\n * First time and re-render funtion\r\n */\r\n render() {\r\n return template.call(this);\r\n }\r\n\r\n setupChatSupport() {\r\n const script = document.createElement('script');\r\n script.textContent = `\r\n (function(){\r\n var pp=document.createElement('script'), ppr=document.getElementsByTagName('script')[0];\r\n stid='Ny9vSzJCS0VibW9rY2xGbndNYlJEQT09';\r\n pp.type='text/javascript';\r\n pp.async=true;\r\n pp.src=('https:' == document.location.protocol ? 'https://' : 'http://') + 's01.live2support.com/dashboardv2/chatwindow/';\r\n ppr.parentNode.insertBefore(pp, ppr);\r\n \r\n })();`;\r\n\r\n this.appendChild(script);\r\n\r\n // Change the chat icon size and adds a close icon\r\n const changeChatDefaults = () => {\r\n const closeIcon = document.createElement('div');\r\n closeIcon.innerHTML = `${closeIconStr}`;\r\n closeIcon.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n document.getElementById('_proprofs_trk_main_div_').style.visibility = 'hidden';\r\n sessionStorage.setItem('chatClosed', '1');\r\n });\r\n const chatIcon = document.getElementById('_proprofs_trk_main_header_');\r\n if (chatIcon) {\r\n chatIcon.appendChild(closeIcon);\r\n chatIcon.style.transform = 'scale(0.8)';\r\n chatIcon.style.bottom = '0px';\r\n chatIcon.style.right = '0px';\r\n }\r\n };\r\n // return true if chat element is ready, otherwise false\r\n const checkChatIsReady = () => document.getElementById('_proprofs_trk_main_header_') !== null;\r\n\r\n // check if the chat is ready and if it is, run the changeChatDefaults function to customize chat icon\r\n wait(checkChatIsReady, changeChatDefaults, 500);\r\n }\r\n\r\n onAppUnload = () => {\r\n localStorage.removeItem('new_inserts');\r\n localStorage.removeItem('modal-opened');\r\n };\r\n\r\n /**\r\n * Called after element DOM has been rendered. Implement to\r\n * directly control rendered DOM. Typically this is not needed as `lit-html`\r\n * can be used in the `_render` method to set properties, attributes, and\r\n * event listeners. However, it is sometimes useful for calling methods on\r\n * rendered elements, like calling `focus()` on an element to focus it.\r\n * @param _props Current element properties\r\n * @param _changedProps Changing element properties\r\n * @param _prevProps Previous element properties\r\n */\r\n async firstUpdated() {\r\n this.lastCheck = 0;\r\n init(this.shadowRoot.querySelector('bdx-router'));\r\n loadRoutes();\r\n setupErrorLogging();\r\n if (!import.meta.env.DEV) {\r\n /* eslint-disable-next-line */\r\n store.dispatch(configRequest());\r\n }\r\n window.addEventListener('unload', this.onAppUnload);\r\n /** This event is fired each time we change the route (but at a min of each 5 mins),\r\n * is triggered by the vaadin router at the end of a url change (bc the url changed, forward, backward button etc) */\r\n window.addEventListener('vaadin-router-location-changed', (event) => {\r\n if (event.detail.location.route.title) {\r\n document.title = event.detail.location.route.title; // Updte the Page Title\r\n\r\n if (this.canDisplayNewUrlModal) {\r\n this.showNewUrlModal();\r\n }\r\n }\r\n });\r\n\r\n setTimeout(() => {\r\n const chatWasClosed = sessionStorage.getItem(`chatClosed`) === '1';\r\n const currentUserLogged = userContextSelector(store.getState());\r\n const isExternalUser = userContextBuilderSelector(store.getState());\r\n\r\n if (!this.chatLoaded && !chatWasClosed && !empty(currentUserLogged) && isExternalUser) {\r\n this.setupChatSupport();\r\n this.chatLoaded = true;\r\n }\r\n }, 1000);\r\n\r\n const isARedirect = new URLSearchParams(window.location.search).has('redirected');\r\n await checkSiteUpdate(isARedirect);\r\n }\r\n\r\n showNewUrlModal = async () => {\r\n return ModalService.show({\r\n component: 'bdx-new-url-modal',\r\n importFn: () => import('@/modules/auth/components/new-url-modal/new-url-modal'),\r\n config: { buttons: false },\r\n data: { user: this.user },\r\n }).subscribe();\r\n };\r\n}\r\n"],"file":"js/main.min.js"}