{"version":3,"file":"book-valuation.js","names":["angular","module","controller","$http","ctrl","this","_q","tios","util","parseQuery","ux","stage","wait","addressList","types","Object","values","enums","PropertyTypeValues","priceBands","PriceBandValues","isMobile","isPrestige","Prestige","isRental","Lettings","agPhone","window","enquiryPhone","stageOneTitle","setPriceBand","event","Lead","PriceBand","value","setRooms","beds","Bedrooms","item","Bathrooms","setPropertyType","PropertyType","Name","selectAddress","address","FullAddress","DisplayString","Postcode","pcLookup","global","blockAction","loadAddress","url","urls","Api","method","data","then","response","rd","PostcodeEmptyMessage","showConfirm","title","message","Addresses","length","unBlock","console","error","goBack","nextStage","isValid","send","OneMillionPlus","Send","EmailSent","location","href","ThankYou","init"],"sources":["jscript-pages/book-valuation.js"],"mappings":"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","sourcesContent":["(function () {\r\n angular.module('agweb').controller('BookValuationController', [ '$http',\r\n function BookValuationController($http) {\r\n var ctrl = this;\r\n\r\n var _q = tios.util.parseQuery(null, true);\r\n\r\n ctrl.ux = {\r\n stage: 1,\r\n wait: false,\r\n };\r\n\r\n ctrl.addressList = [];\r\n\r\n ctrl.types = Object.values(enums.PropertyTypeValues);\r\n\r\n ctrl.priceBands = Object.values(enums.PriceBandValues);\r\n\r\n ctrl.isMobile = tios.util.isMobile();\r\n\r\n ctrl.isPrestige = !!_q?.Prestige;\r\n ctrl.isRental = !!_q?.Lettings;\r\n\r\n ctrl.agPhone = window.enquiryPhone;\r\n\r\n ctrl.stageOneTitle = ctrl.isRental ?\r\n 'Book your rental appraisal...' :\r\n 'Book your property valuation...';\r\n\r\n //-\r\n ctrl.setPriceBand = function (event) {\r\n ctrl.Lead.PriceBand = event.value;\r\n };\r\n\r\n ctrl.setRooms = function (event, beds) {\r\n if (!!beds) {\r\n ctrl.Lead.Bedrooms = event.item;\r\n } else {\r\n ctrl.Lead.Bathrooms = event.item;\r\n }\r\n };\r\n\r\n ctrl.setPropertyType = function (event) {\r\n ctrl.Lead.PropertyType = event.item.Name;\r\n };\r\n \r\n ctrl.selectAddress = function (address) {\r\n ctrl.Lead.FullAddress = address.DisplayString;\r\n ctrl.Lead.Postcode = address.Postcode;\r\n };\r\n\r\n ctrl.pcLookup = function () {\r\n global.blockAction('book-valuation.js::ctrl.pcLookup');\r\n ctrl.ux.loadAddress = true;\r\n\r\n ctrl.Lead.FullAddress = null;\r\n\r\n $http({\r\n url: urls.Api + 'Util/IdealPostcode',\r\n method: 'POST',\r\n data: { Postcode: ctrl.Lead.Postcode }\r\n }).then(function success(response) {\r\n var rd = response?.data;\r\n if (rd) {\r\n if (!rd.PostcodeEmptyMessage) {\r\n if (rd.Addresses.length === 1) {\r\n ctrl.selectAddress(rd.Addresses[0]);\r\n } else {\r\n ctrl.addressList = rd.Addresses;\r\n }\r\n } else {\r\n global.showConfirm({ title: 'Address not found', message: rd.PostcodeEmptyMessage });\r\n }\r\n }\r\n global.unBlock();\r\n ctrl.ux.loadAddress = false;\r\n }, function error(response) {\r\n console.error('Error in book-valuation.js::pcLookup(): ', response);\r\n });\r\n };\r\n\r\n ctrl.goBack = function () {\r\n ctrl.ux.stage--;\r\n };\r\n\r\n ctrl.nextStage = function (isValid) {\r\n if (isValid) {\r\n global.blockAction('book-valuation.js::nextStage');\r\n ctrl.ux.wait = !!ctrl.isMobile;\r\n\r\n var send = (ctrl.ux.stage === 3 ||\r\n (ctrl.ux.stage === 2 && \r\n (ctrl.isPrestige || ctrl.Lead.Lettings)));\r\n\r\n if (ctrl.ux.stage === 2 && ctrl.isPrestige) ctrl.Lead.PriceBand = enums.PriceBand.OneMillionPlus;\r\n\r\n $http({\r\n url: urls.Api + 'Lead/Save',\r\n method: 'POST',\r\n data: {\r\n Lead: ctrl.Lead,\r\n Send: send, // Set to true on final step to send email\r\n }\r\n }).then(function success(response) {\r\n var rd = response?.data;\r\n if (!!rd) {\r\n\r\n if (rd.Lead?.EmailSent) {\r\n // Email was successfully sent\r\n \r\n // Trigger google analytics conversion event.\r\n //if (window.dataLayer) {\r\n // window.dataLayer.push({\r\n // 'event': 'BookYourValuationSent'\r\n // });\r\n //}\r\n\r\n window.location.href = urls.ThankYou + (ctrl.isPrestige ? '?Prestige=true' : (ctrl.isRental ? '?Lettings=true' : '' ) ) + '#BookYourValuation';\r\n\r\n } else {\r\n // Email not sent at this point - combine with the send flag to determine\r\n // whether it failed. (I'm swallowing the error so it can be handled in the page)\r\n\r\n // set the Lead object to rd.Lead (which will return the saved row with the ID added)\r\n ctrl.Lead = rd.Lead;\r\n\r\n if (send) {\r\n // Send failed at this point (but was attempted)\r\n ctrl.ux.stage = ctrl.isPrestige ? 2 : 3;\r\n global.showConfirm({\r\n title: 'Oops...',\r\n message: 'There\\'s been a problem submitting this form. Please call ' + ctrl.agPhone + ' or try again later.',\r\n });\r\n } else {\r\n ctrl.ux.stage++;\r\n }\r\n }\r\n }\r\n global.unBlock();\r\n ctrl.ux.wait = false;\r\n }, function error(response) {\r\n console.error('Error in book-valuation.js::nextStage: ', response);\r\n });\r\n }\r\n };\r\n\r\n ctrl.init = function () {\r\n $http({\r\n url: urls.Api + 'Lead/Get',\r\n method: 'POST',\r\n data: {}\r\n }).then(function success(response) {\r\n var rd = response?.data;\r\n if (!!rd) {\r\n ctrl.Lead = rd.Lead;\r\n\r\n ctrl.Lead.Lettings = ctrl.isRental;\r\n }\r\n }, function error(response) {\r\n console.error('Error in book-valuation.js::init: ', response);\r\n });\r\n };\r\n\r\n //-i\r\n\r\n ctrl.init();\r\n }\r\n ]);\r\n})();"]}