{"version":3,"sources":["scripts/app-83fe164b15.js"],"names":["angular","module","ItemController","$state","$log","$scope","$rootScope","$filter","$stateParams","itemRepository","bidRepository","auctionRepository","authService","emailService","formsService","modalService","Notification","flashService","metaTagsService","getBid","listMyBids","currentUser","email","then","response","isDataLoading","debug","vm","bid","myBid","filter","item","id","_id","pop","isEdit","isEditByPhone","bidamount","lot","message","phone","phoneBid","error","getItem","itemSlug","params","slug","withPrevNext","list","itemImageUrl","firstImage","featuredImagesUrls","xs","itemImageObj","sm","md","lg","unshift","prevItem","nextItem","setMetaTag","isAuthenticated","getAuction","auctionSlug","auction","timesBefore","startDates","map","date","moment","diff","isPast","isLive","every","time","some","handleGotoItem","meta","go","handleCancel","confirm","deleteOneBid","hide","success","handleCancelByPhone","handleEdit","name","first","last","copy","update","handleBackClick","clear","isLogin","isSignup","handleLoginClick","handleSignupClick","handleSubmitBid","handleSubmitBidByPhone","this","activePanel","bidForm","bidFormByPhone","isBiddable","isEmail","isEmailUnique","onBackClick","onCancel","onCancelByPhone","onEdit","onLoginClick","onSignupClick","onSubmitBid","onSubmitBidByPhone","onGoto","hasError","showError","canSave","$on","$inject","controller","AuctionDetailController","$location","$sce","state","body","trustAsHtml","length","getAuctionItems","pagesMax","page","event","sort","limit","search","searching","pages","total","footer","css","data","title","options","absolute","url","href","items","push","handleDestroy","handleClearSearch","handleImageClick","element","social","onImageClick","clearSearch","$destroy","$watch","TeamController","person","usernameService","$q","$http","API","isUsernameValid","username","regexp","test","isUsernameUnique","originalUsername","resolve","reject","toLowerCase","get","BASE_URL","factory","taxonomyService","specialtiesRepository","filterWithSpecialty","categories","catsIds","o","uniqCatsIds","_","uniq","flatten","category","includes","groupCategories","rootKey","groupedByParents","groupBy","parentId","catsById","keyBy","omitted","omit","each","children","cat","isParent","isEmpty","compact","union","posts","catsWithLevel","assignDeepLevel","sortByWeight","weight","undefined","a","b","level","assign","nested","group","responseInterceptorService","$injector","responseError","passService","isPasswordConfirmed","passwordConfirmation","password","isPasswordStrong","ngFormCtrl","$dirty","$valid","changeOutside","$setDirty","ngModelCtrl","$invalid","refresh","$setPristine","$setUntouched","err","$error","showErrorOnSubmit","formCtrl","$submitted","getDropdownOption","currentOption","find","option","initService","clearFlashMessage","flash","keepAfterLocationChange","type","info","warning","errorResponseService","parseMessage","extracted","exec","replace","charAt","toUpperCase","slice","prettifyFieldName","spacePos","indexOf","fieldName","substr","prettyFieldName","match","join","getErrorMessage","defaultMessage","validation","service","originalEmail","checkEmail","result","apiHelperService","ENV_VARS","sendHTTPRequest","req","method","s3BucketDomain","cdnDomain","_delete","payload","_get","_post","_put","delete","post","put","generateCrudCallers","resourceRoute","generateListCaller","generateFindCaller","generateUpdateCaller","create","generateCreateCaller","deleteOne","generateDeleteOneCaller","deleteMany","generateDeleteManyCaller","createdAt","updatedAt","isDeleted","generateAssociationCallers","ownerRoute","associationName","associationRoute","childName","resourceMethodName","callers","generateGetAssociationsAssociationCaller","generateAddOneAssociationCaller","generateRemoveOneAssociationCaller","generateAddManyAssociationCaller","generateRemoveManyAssociationCaller","generateFlattenAssociationData","ownerId","methodName","childId","object","panelService","$aside","show","templatePath","aside","controllerAs","keyboard","onHide","templateUrl","$promise","redirect","current","parent","$modal","modal","handlePanelHide","destroy","template","merge","getMy","USERS","updateMy","user","changeMyPassword","restfulResourceHelper","TEAM","SUBSCRIPTION","SPECIALTIES","PAGES","ITEMS","HIGHLIGHTS","CONTACT","CATEGORIES","BIDS","EVENTS","ASSETS","ACCOUNTS","updateCache","accounts","forEach","ngMeta","obj","appName","description","appDesc","imageUrl","headerUrl","eventImageUrl","mainImage","setTitle","setTag","absUrl","metaTagsDataProvider","getMetaTagsData","domain","appDomain","defaultMeta","headerImage","og:title","og:image","og:url","og:description","og:type","auctions","directions","settings","login","forgotpassword","resetpassword","signup","mybids","blog","about","$get","provider","$timeout","localStorageService","Session","REDIRECT","LOGIN","session","Error","account","role","Object","keys","roles","loginForgot","LOGIN_FORGOT","loginReset","LOGIN_RESET","logout","deprecated","LOGOUT","authHeader","HOME","confirmPassword","deferred","defer","promise","SIGNUP","config","firstName","split","lastName","getSession","isAuthorized","authorizedRoles","isArray","userRole","foundRole","defaults","headers","common","Authorization","set","remove","setUser","authSecurityService","requireAccountUser","requireAuthenticatedUser","requireUnauthenticatedUser","BID","authInterceptorService","status","LoginResetController","handleSubmit","token","resetForm","valid","onSubmit","LoginForgotController","loginForgotForm","BidPhotosController","events","handleView","photoIndex","onView","pagesRouteConfig","$stateProvider","abstract","PagesController","pagesRepository","getPage","pageSlug","homeRouteConfig","metaTagsData","HomeController","categoriesRepository","highlightRepository","getCategory","i","getHighlights","isAuctionPast","foundCategories","HIGHLIGHT_TYPE","VIDEO","video","highlights","foreignId","dates","index","getAuctions","auctionPast","categoryService","getSpecialtyAuction","categoryRouteConfig","CategoryController","categorySlug","getSpecialties","specialty","c","isAuctionNext","auctionNext","blogService","getBlogPosts","BLOG","getBlogPostDetail","getCategories","blogRouteConfig","BlogController","image","trustAsResourceUrl","auctionRouteConfig","onEnter","AuctionController","eventImageLink","reverse","promises","all","AssetsController","assetsRepository","getAsset","assetSlug","asset","isGoogleDoc","assetUrl","isPdf","isDoc","responseType","arrayBuffer","Uint8Array","mammoth","convertToHtml","html","value","$apply","done","aboutRouteConfig","bodyClass","AboutController","teamRepository","getTeam","persons","val","phonenumberFilter","tel","toString","trim","country","city","number","gtEventStartDate","filteredItems","cnt","today","Date","eventStartDates","formatTime","timestamp","withtime","format","capitalize","input","scope","substring","addTargetBlank","isExternalUrl","hostname","content","tree","anchor","attr","append","youtubeEmbed","restrict","code","link","newVal","cdnFilter","topNavCollapse","$window","attrs","bind","pageYOffset","boolChangeClass","autofocus","$element","focus","directive","signupRouteConfig","SignupController","handleNext","secondStep","handleBack","setCurrentUser","isModal","$broadcast","onNext","onBack","loginRouteConfig","LoginController","settingsRouteConfig","SettingsController","accountRepository","userRepository","getUser","tmpAccount","address1","address2","zipcode","orginalUsername","changePassword","bidRouteConfig","BidController","getMyBids","bids","$","fancybox","open","src","opts","caption","bidId","itemId","PublicController","contactRepository","subscriptionRepository","handleContactClick","handleSubscribeClick","handleContactSubmit","handleSubscribeSubmit","subscriber","handleHideClick","onContactClick","onSubscribeClick","onContactSubmit","onSubscribeSubmit","onHideClick","MainController","handleCurrentUserSet","handleLogoutClick","handleSidebarHide","asideMobile","handleSidebarShow","handleToggleClick","getNumber","num","Array","onLogoutClick","onToggleClick","PATH","onBeforeShow","toState","toParams","fromState","fromParams","wrapClass","document","scrollTop","documentElement","runBlock","init","run","routeConfig","$urlRouterProvider","$urlMatcherFactoryProvider","strictMode","caseInsensitive","when","views","header","subheader","unAuthenticatedUser","$title","constant","apiUrl","version","googleAnalyticsKey","SETTINGS","EVENT","PAGE","SIGNUP_INVITATION","$logProvider","$locationProvider","$httpProvider","$asideProvider","$modalProvider","$tooltipProvider","$dropdownProvider","$titleProvider","NotificationProvider","AnalyticsProvider","debugEnabled","hashPrefix","html5Mode","enabled","requireBase","interceptors","setOptions","replaceMessage","startTop","startRight","extend","animation","container","delay","placement","trigger","documentTitle","setAccount","$templateCache"],"mappings":"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","file":"scripts/app-83fe164b15.js","sourcesContent":["(function() {\n 'use strict';\n\n angular.module('public.auction', []);\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.auction')\n .controller('ItemController', ItemController);\n\n function ItemController($state, $log, $scope, $rootScope, $filter, $stateParams, itemRepository, bidRepository, auctionRepository, authService,\n emailService, formsService, modalService, Notification, flashService, metaTagsService) {\n var vm = this;\n\n // ViewModel Properties\n vm.activePanel = -1;\n vm.bid = {};\n vm.bidForm = {};\n vm.bidFormByPhone={};\n vm.isEdit = false;\n vm.isEditByPhone = false;\n vm.isLogin = false;\n vm.isSignup = false;\n vm.item = {\n featuredImagesUrls: [],\n isBiddable: ''\n };\n vm.prevItem = null;\n vm.nextItem = null;\n vm.auction = {\n isPast: null,\n isLive: null\n };\n\n\n // ViewModel Methods\n vm.isAuthenticated = authService.isAuthenticated;\n vm.isEmail = emailService.isEmail;\n vm.isEmailUnique = emailService.isEmailUnique;\n vm.onBackClick = handleBackClick;\n vm.onCancel = handleCancel;\n vm.onCancelByPhone = handleCancelByPhone;\n vm.onEdit = handleEdit;\n vm.onLoginClick = handleLoginClick;\n vm.onSignupClick = handleSignupClick;\n vm.onSubmitBid = handleSubmitBid;\n vm.onSubmitBidByPhone = handleSubmitBidByPhone;\n vm.onGoto = handleGotoItem;\n\n // error handling utility\n $scope.hasError = formsService.hasError;\n $scope.showError = formsService.showError;\n $scope.canSave = formsService.canSave;\n\n // Event listeners\n $scope.$on('UserUpdate', getBid);\n\n (function init() {\n $scope.isDataLoading = false;\n getItem();\n })();\n\n\n // Private Properties\n var params;\n\n // Private Methods\n // getBid\n function getBid() {\n return bidRepository.listMyBids($rootScope.currentUser.email)\n .then(function(response) {\n $scope.isDataLoading = false;\n\n $log.debug('vm.bid:\\n', vm.bid);\n\n var myBid = response.filter(function(bid) {\n return bid.item.id === vm.item._id;\n }).pop();\n\n if (myBid) {\n vm.isEdit = true;\n vm.isEditByPhone = true;\n\n vm.bid._id = myBid._id;\n vm.bid.bidamount = myBid.bidamount;\n vm.bid.lot = myBid.lot;\n vm.bid.message = myBid.message;\n vm.bid.phone = $filter('phoneUS')($rootScope.currentUser.phone);\n vm.bid.phoneBid = myBid.phoneBid;\n\n // fixme: errors out if item has been sold\n //formsService.refresh(vm.bidForm);\n }\n else {\n vm.isEdit = false;\n vm.isEditByPhone = false;\n\n }\n\n $log.debug('ItemController.getBid-success:\\n', response);\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('ItemController.getBid-error:\\n', error);\n Notification.error('There was an error loading the bid.');\n });\n }\n\n // getItem\n function getItem() {\n $scope.isDataLoading = true;\n\n $log.debug('$stateParams.itemSlug', $stateParams.itemSlug);\n\n params = {\n slug: $stateParams.itemSlug,\n withPrevNext: true,\n };\n\n return itemRepository.list(params)\n .then(function(response) {\n $log.debug('ItemController.getItem-success:\\n', response);\n\n var item = response.item;\n\n vm.item = item;\n\n // add the main image to the array\n if (vm.item.itemImageUrl) {\n // rm if clause when no need to show old items with image dublicates\n var firstImage = vm.item.featuredImagesUrls[0];\n\n if (!firstImage || firstImage.xs !== vm.item.itemImageUrl) {\n var itemImageObj = {\n xs: vm.item.itemImageUrl,\n sm: vm.item.itemImageUrl,\n md: vm.item.itemImageUrl,\n lg: vm.item.itemImageUrl\n };\n\n vm.item.featuredImagesUrls.unshift(itemImageObj);\n }\n }\n\n vm.prevItem = response.prevItem;\n vm.nextItem = response.nextItem;\n\n metaTagsService.setMetaTag(vm.item);\n\n // if user is authenticated\n if (vm.isAuthenticated()) {\n getBid();\n }\n else {\n $scope.isDataLoading = false;\n }\n\n $log.debug('vm.item:\\n', vm.item);\n\n\n getAuction();\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('ItemController.getItem-error:\\n', error);\n Notification.error('There was an error loading the item.');\n });\n }\n\n function getAuction() {\n $scope.isDataLoading = true;\n\n params = {\n slug: $stateParams.auctionSlug,\n };\n\n return auctionRepository.list(params)\n .then(function(response) {\n $scope.isDataLoading = false;\n vm.auction = response;\n\n // check how much time before auction start\n var timesBefore = vm.auction.startDates.map(function(date) {\n return moment(date).diff(moment(), 'minutes');\n });\n //$log.error('timeBefore:\\n', timeBefore);\n\n // auction isPast after 8 hours\n vm.auction.isPast = false;\n vm.auction.isLive = false;\n\n if (timesBefore.every(function(time) {\n return time < -480;\n })) {\n vm.auction.isPast = true;\n }\n else if (timesBefore.some(function(time) {\n return time < 60;\n })) {\n vm.auction.isLive = true;\n }\n\n $log.debug('AuctionDetailController.getAuction-success:\\n', response);\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n $log.error('AuctionDetailController.getAuction-error:\\n', error);\n Notification.error('There was an error loading the auction.');\n });\n }\n\n function handleGotoItem(item) {\n var params = {\n auctionSlug: $stateParams.auctionSlug,\n itemSlug: item.meta.slug\n };\n\n $state.go('auction-item', params);\n }\n\n // handleCancel\n function handleCancel() {\n if (confirm('Are you sure you want to cancel your bid?')) {\n $scope.isDataLoading = true;\n\n return bidRepository.deleteOneBid(vm.bid._id, vm.item._id)\n .then(function(response) {\n $scope.isDataLoading = false;\n\n modalService.hide();\n\n $log.debug('ItemController.handleCancel-success:', response);\n Notification.success('Bid deleted.');\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('ItemController.handleCancel-error:', error);\n flashService.error('There was an error deleting the bid.');\n });\n }\n }\n\n // handleCancelByPhone\n function handleCancelByPhone() {\n if (confirm('Are you sure you want to cancel your phone request?')) {\n $scope.isDataLoading = true;\n\n return bidRepository.deleteOneBid(vm.bid._id, vm.item._id)\n .then(function(response) {\n $scope.isDataLoading = false;\n\n modalService.hide();\n\n $log.debug('ItemController.handleCancelByPhone-success:', response);\n Notification.success('Your phone request was cancelled.');\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('ItemController.handleCancelByPhone-error:', error);\n flashService.error('There was an error cancelling the phone request.');\n });\n }\n }\n\n // handleEdit\n function handleEdit() {\n $scope.isDataLoading = true;\n\n // user's info\n vm.bid.email = $rootScope.currentUser.email;\n vm.bid.name = $filter('ucfirst')($rootScope.currentUser.name.first + ' ' + $rootScope.currentUser.name.last);\n vm.bid.phone = $filter('phoneUS')($rootScope.currentUser.phone);\n\n var bid = angular.copy(vm.bid);\n delete bid._id;\n\n return bidRepository.update(vm.bid._id, bid)\n .then(function(response) {\n $scope.isDataLoading = false;\n\n modalService.hide();\n\n $log.debug('ItemController.handleEdit-success:', response);\n Notification.success('Bid updated!');\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('ItemController.handleEdit-error:', error);\n flashService.error('There was an error updating the bid.');\n });\n }\n\n // handleBackClick\n function handleBackClick() {\n flashService.clear();\n vm.isLogin = vm.isSignup = false;\n }\n\n // handleLoginClick\n function handleLoginClick() {\n vm.isLogin = true;\n }\n\n // handleSignupClick\n function handleSignupClick() {\n vm.isSignup = true;\n }\n\n // handleSubmitBid\n function handleSubmitBid() {\n $scope.isDataLoading = true;\n\n // user's info\n vm.bid.lot = vm.item.lot;\n vm.bid.email = $rootScope.currentUser.email;\n vm.bid.name = $filter('ucfirst')($rootScope.currentUser.name.first + ' ' + $rootScope.currentUser.name.last);\n vm.bid.phone = $filter('phoneUS')($rootScope.currentUser.phone);\n\n return itemRepository.bid(vm.item._id, vm.bid)\n .then(function(response) {\n $scope.isDataLoading = false;\n\n modalService.hide();\n\n $log.debug('ItemController.handleSubmit-success:', response);\n Notification.success('Bid submitted!');\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('ItemController.handleSubmit-error:', error);\n flashService.error('There was an error creating the bid.');\n });\n }\n\n // handleSubmitBidByPhone\n function handleSubmitBidByPhone() {\n $scope.isDataLoading = true;\n\n $log.debug('vm.bid', vm.bid);\n\n\n // user's info\n vm.bid.lot = vm.item.lot;\n vm.bid.name = $filter('ucfirst')($rootScope.currentUser.name.first + ' ' + $rootScope.currentUser.name.last);\n vm.bid.phone = $filter('phoneUS')($rootScope.currentUser.phone);\n vm.bid.email = $rootScope.currentUser.email;\n vm.bid.bidamount = 0;\n vm.bid.phoneBid = true;\n vm.bid.message = \"CALL CUSTOMER BY PHONE\";\n\n return itemRepository.bid(vm.item._id, vm.bid)\n .then(function(response) {\n $scope.isDataLoading = false;\n\n modalService.hide();\n\n $log.debug('ItemController.handleSubmit-success:', response);\n Notification.success('Phone bid submitted!');\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('ItemController.handleSubmit-error:', error);\n flashService.error('There was an error creating the call request.');\n });\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.auction')\n .controller('AuctionDetailController', AuctionDetailController);\n\n function AuctionDetailController($log, $scope, $location, $state, $stateParams, $sce, auctionRepository, itemRepository, formsService,\n metaTagsService, Notification) {\n var vm = this;\n var footer = angular.element('footer');\n\n // ViewModel Properties\n vm.auction = {};\n vm.items = [];\n vm.searching = false;\n vm.social = [\n // 'facebook',\n // 'twitter',\n ];\n\n // ViewModel Methods\n vm.getAuctionItems = getAuctionItems;\n vm.onImageClick = handleImageClick;\n vm.clearSearch = handleClearSearch;\n\n // error handling utility\n $scope.hasError = formsService.hasError;\n $scope.showError = formsService.showError;\n $scope.canSave = formsService.canSave;\n $scope.$destroy = handleDestroy;\n\n\n (function init() {\n $scope.isDataLoading = false;\n\n getAuction();\n })();\n\n\n // Private Properties\n var params;\n var page = 1;\n var pagesMax = 100;\n var options;\n\n // Private Methods\n // getAuction\n function getAuction() {\n $scope.isDataLoading = true;\n\n params = {\n slug: $stateParams.auctionSlug,\n };\n\n return auctionRepository.list(params)\n .then(function(response) {\n $scope.isDataLoading = false;\n\n if (response.state !== 'published') {\n $state.go('auction');\n return;\n }\n\n vm.auction = response;\n vm.auction.body = $sce.trustAsHtml(vm.auction.body);\n\n // check how much time before auction start\n var timesBefore = vm.auction.startDates.map(function(date) {\n return moment(date).diff(moment(), 'minutes');\n });\n //$log.error('timeBefore:\\n', timeBefore);\n\n // auction isPast after 8 hours\n if (timesBefore.length > 0 && timesBefore.every(function(time) {\n return time < -480;\n })) {\n vm.auction.isPast = true;\n }\n else if (timesBefore.some(function(time) {\n return time < 60;\n })) {\n vm.auction.isLive = true;\n }\n\n metaTagsService.setMetaTag(vm.auction);\n\n // now lets get auction items\n getAuctionItems();\n\n $log.debug('AuctionDetailController.getAuction-success:\\n', response);\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('AuctionDetailController.getAuction-error:\\n', error);\n Notification.error('There was an error loading the auction.');\n });\n }\n\n $scope.$watch('vm.search', function() {\n page = 1;\n vm.items.length = 0;\n // $log.debug('vm.items:\\n', vm.items);\n // $log.debug('vm.items:\\n', vm.items);\n\n getAuctionItems();\n });\n\n // getAuctionItems\n function getAuctionItems() {\n if (!$scope.isDataLoading && page <= pagesMax) {\n $scope.isDataLoading = true;\n\n params = {\n event: vm.auction._id,\n sort: 'position',\n page: page,\n limit: $location.search().limit\n };\n\n if (vm.search) {\n $log.debug('searching');\n vm.searching = true;\n params.search = vm.search;\n }\n\n //var documentHeight = (page !== 1) ? ($('.site-content').height() + 170) : 0;\n\n return itemRepository.list(params)\n .then(function(response) {\n $scope.isDataLoading = false;\n\n page++;\n pagesMax = response.pages.total || 1;\n footer.css('display', pagesMax > page ? 'none' : 'block');\n\n response.data.filter(function(item) {\n return item.lot && item.title && item.meta && item.itemImageUrl;\n }).map(function(item) {\n params = {\n itemSlug: item.meta.slug,\n };\n options = {\n absolute: true,\n };\n\n item.url = $state.href('auction-item', params, options);\n vm.items.push(item);\n\n return item;\n });\n $log.debug('vm.items:\\n', vm.items);\n\n\n // scroll to the top of a new items\n //$('html, body').animate({'scrollTop': documentHeight}, 1000);\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('AuctionDetailController.getAuctionItems-error:\\n', error);\n Notification.error('There was an error loading the items.');\n });\n }\n }\n\n // handleDestroy\n function handleDestroy() {\n footer.css('display', 'block');\n }\n\n // handleClearSearch\n function handleClearSearch() {\n vm.search = '';\n }\n\n // handleImageClick\n function handleImageClick(item) {\n // copy properties from auction object\n item.isPast = vm.auction.isPast || false;\n item.isLive = vm.auction.isLive || false;\n\n params = {\n item: item,\n };\n\n $state.go('photos', params);\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular.module('public.about', []);\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.about')\n .controller('TeamController', TeamController);\n\n function TeamController($filter, $stateParams, metaTagsService) {\n var vm = this;\n\n // ViewModel Properties\n vm.person = $stateParams.person;\n metaTagsService.setMetaTag(vm.person);\n\n if (vm.person.phone) {\n vm.person.phone = $filter('phoneUS')(vm.person.phone);\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.utility', []);\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.utility')\n .factory('usernameService', usernameService);\n\n function usernameService($q, $http, $log, API) {\n return {\n isUsernameValid: isUsernameValid,\n isUsernameUnique: isUsernameUnique,\n };\n\n // isUsernameValid\n function isUsernameValid(username) {\n var regexp = /^[\\S]*$/;\n return regexp.test(username);\n }\n\n // isUsernameUnique\n function isUsernameUnique(username, originalUsername) {\n return $q(function(resolve, reject) {\n if (originalUsername && username.toLowerCase() === originalUsername.toLowerCase()) {\n resolve();\n }\n else {\n return $http.get(API.BASE_URL + 'api/username/check/' + username, {})\n .then(function(response) {\n $log.debug('usernameService.isUsernameUnique-success:\\n', response);\n resolve();\n })\n .catch(function(error) {\n $log.error('usernameService.isUsernameUnique-error:\\n', error);\n reject();\n });\n }\n });\n }\n }\n})();\n\n(function () {\n \"use strict\";\n\n angular\n .module(\"app.services.utility\")\n .factory(\"taxonomyService\", taxonomyService);\n\n function taxonomyService($log, specialtiesRepository) {\n return {\n filter: filterWithSpecialty,\n group: groupCategories,\n };\n\n // filterWithSpecialty\n function filterWithSpecialty(categories) {\n return specialtiesRepository\n .list()\n .then(function (response) {\n $log.debug(\n \"MainController.filterWithSpecialty-success:\\n\",\n response\n );\n\n var catsIds = response.data.map(function (item) {\n return item.categories.map(function (o) {\n return o.id;\n });\n });\n\n var uniqCatsIds = _.uniq(_.flatten(catsIds));\n\n return categories.filter(function (category) {\n return uniqCatsIds.includes(category._id);\n });\n })\n .catch(function (error) {\n $log.error(\n \"MainController.filterWithSpecialty-error:\\n\",\n error\n );\n Notification.error(\n \"There was an error loading Specialties.\"\n );\n });\n }\n\n // groupCategories\n function groupCategories(categories) {\n var rootKey = \"root\";\n\n var groupedByParents = _.groupBy(categories, function (item) {\n return !item.parentId ? rootKey : item.parentId;\n });\n\n var catsById = _.keyBy(categories, \"_id\");\n var omitted = _.omit(groupedByParents, rootKey);\n\n _.each(omitted, function (children, parentId) {\n catsById[parentId].children = children;\n });\n _.each(catsById, function (cat) {\n cat.isParent = !_.isEmpty(cat.children);\n cat.children = _.compact(_.union(cat.children, cat.posts));\n });\n\n var catsWithLevel = _.map(\n groupedByParents[rootKey],\n function (item) {\n return assignDeepLevel(item, 0);\n }\n );\n\n sortByWeight(catsWithLevel);\n\n return catsWithLevel;\n }\n\n // sortByWeight\n function sortByWeight(items) {\n _.each(items, function (item) {\n item.weight = item.weight ? item.weight : 0;\n if (_.isEmpty(item.children)) {\n return undefined;\n }\n sortByWeight(item.children);\n });\n\n items.sort(function (a, b) {\n return a.weight > b.weight;\n });\n }\n\n // assignDeepLevel\n function assignDeepLevel(item, level) {\n _.assign(item, {\n level: level,\n });\n\n if (_.isEmpty(item.children)) {\n return item;\n }\n\n return _.assign(item, {\n children: _.map(item.children, function (nested) {\n return assignDeepLevel(nested, level + 1);\n }),\n });\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.utility')\n .factory('responseInterceptorService', responseInterceptorService);\n\n function responseInterceptorService($rootScope, $q, $log, $injector) {\n return {\n responseError: responseError,\n };\n\n function responseError(response) {\n // HANDLE 404s\n // if (response.status === 404) {\n // $injector.get('$state').go('404server');\n // }\n\n /* If not a 404, do nothing with this error.\n * This is necessary to make a `responseError`\n * interceptor a no-op. */\n return $q.reject(response);\n }\n };\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.utility')\n .factory('passService', passService);\n\n function passService($q) {\n return {\n isPasswordConfirmed: isPasswordConfirmed,\n isPasswordStrong: isPasswordStrong,\n };\n\n // isPasswordConfirmed\n function isPasswordConfirmed(passwordConfirmation, password) {\n return $q(function(resolve, reject) {\n if (passwordConfirmation === password) {\n resolve();\n }\n else {\n reject();\n }\n });\n }\n\n // isPasswordStrong\n function isPasswordStrong(password) {\n var regexp = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d)(?=.*[$@$!%*#?&])[A-Za-z\\d$@$!%*#?&]{6,}$/;\n return regexp.test(password);\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.utility')\n .factory('formsService', formsService);\n\n function formsService($log) {\n return {\n canSave: canSave,\n changeOutside: changeOutside,\n getDropdownOption: getDropdownOption,\n hasError: hasError,\n refresh: refresh,\n showError: showError,\n showErrorOnSubmit: showErrorOnSubmit,\n };\n\n // Notifications\n function canSave(ngFormCtrl) {\n if (ngFormCtrl) {\n return ngFormCtrl.$dirty && ngFormCtrl.$valid;\n }\n }\n function changeOutside(ngFormCtrl) {\n if (ngFormCtrl) {\n ngFormCtrl.$setDirty();\n }\n }\n function hasError(ngModelCtrl) {\n if (ngModelCtrl) {\n return ngModelCtrl.$dirty && ngModelCtrl.$invalid;\n }\n }\n function refresh(ngFormCtrl) {\n if (ngFormCtrl) {\n ngFormCtrl.$setPristine();\n ngFormCtrl.$setUntouched();\n }\n }\n function showError(ngModelCtrl, err) {\n if (ngModelCtrl) {\n return ngModelCtrl.$dirty && ngModelCtrl.$error[err];\n }\n }\n function showErrorOnSubmit(formCtrl, ngModelCtrl, err) {\n if (ngModelCtrl) {\n return ngModelCtrl.$dirty && ngModelCtrl.$error[err] && formCtrl.$submitted;\n }\n }\n\n // Form Elements\n /*\n * Returns the exact option object so that the option is reflected in the view\n * @param currentOption\n * @param options\n * @returns {*}\n */\n function getDropdownOption(currentOption, options) {\n if (options) {\n if (!currentOption || !currentOption._id) {\n currentOption = options[0];\n }\n else {\n currentOption = options.find(function(option) {\n return option._id === currentOption._id;\n });\n }\n }\n return currentOption;\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.utility')\n .factory('flashService', flashService);\n\n function flashService($log, $rootScope) {\n initService();\n\n return {\n clear: clearFlashMessage,\n error: error,\n info: info,\n success: success,\n warning: warning,\n };\n\n // initService\n function initService() {\n $rootScope.$on('$stateChangeStart', function() {\n clearFlashMessage();\n });\n }\n\n // clearFlashMessage\n function clearFlashMessage() {\n var flash = $rootScope.flash;\n\n if (flash) {\n if (!flash.keepAfterLocationChange) {\n delete $rootScope.flash;\n }\n else {\n // only keep for a single location change\n flash.keepAfterLocationChange = false;\n }\n }\n }\n\n // error\n function error(message, keepAfterLocationChange) {\n $rootScope.isDataLoading = false;\n\n $rootScope.flash = {\n message: message,\n type: 'danger',\n keepAfterLocationChange: keepAfterLocationChange,\n };\n }\n\n // info\n function info(message, keepAfterLocationChange) {\n $rootScope.isDataLoading = false;\n\n $rootScope.flash = {\n message: message,\n type: 'info',\n keepAfterLocationChange: keepAfterLocationChange,\n };\n }\n\n // success\n function success(message, keepAfterLocationChange) {\n $rootScope.isDataLoading = false;\n\n $rootScope.flash = {\n message: message,\n type: 'success',\n keepAfterLocationChange: keepAfterLocationChange,\n };\n }\n\n // warning\n function warning(message, keepAfterLocationChange) {\n $rootScope.isDataLoading = false;\n\n $rootScope.flash = {\n message: message,\n type: 'warning',\n keepAfterLocationChange: keepAfterLocationChange,\n };\n }\n }\n})();\n\n// This Service is used for Global Event Broadcasting\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.utility')\n .factory('errorResponseService', errorResponseService);\n\n function errorResponseService() {\n var service = {};\n\n service.getErrorMessage = getErrorMessage;\n\n return service;\n\n function parseMessage(response) {\n var extracted = /\\[(.*?)\\]/.exec(response.message);\n if (!extracted || !extracted[1]) {\n return response.message;\n }\n var message = extracted[1].replace(/\"/g, '');\n return message.charAt(0).toUpperCase() + message.slice(1);\n }\n\n function prettifyFieldName(message) {\n var spacePos = message.indexOf(' ');\n if (spacePos === -1) {\n return message;\n }\n var fieldName = message.substr(0, spacePos);\n var prettyFieldName = fieldName.match(/[A-Z][a-z]+/g).join(' ');\n return prettyFieldName + message.substr(spacePos);\n }\n\n function getErrorMessage(response, defaultMessage) {\n if (!response.validation) {\n // unrecognized, no-validation error\n return defaultMessage;\n }\n return prettifyFieldName(parseMessage(response));\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.utility')\n .factory('emailService', emailService);\n\n function emailService($log, $q, authService) {\n return {\n isEmail: isEmail,\n isEmailUnique: isEmailUnique,\n };\n\n // isEmail\n function isEmail(email) {\n var regexp = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return regexp.test(email);\n }\n\n // isEmailUnique\n function isEmailUnique(email, originalEmail) {\n return $q(function(resolve, reject) {\n if (originalEmail && email === originalEmail) {\n resolve();\n }\n else {\n authService.checkEmail(email)\n .then(function(result) {\n if (result.data.length > 0) {\n reject();\n }\n else {\n resolve();\n }\n })\n .catch(function(error) {\n $log.error('emailService.isEmailUnique-error:\\n', error);\n reject();\n });\n }\n });\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.utility')\n .factory('apiHelperService', apiHelperService);\n\n function apiHelperService($log, $http, API, ENV_VARS) {\n return {\n delete: _delete,\n get: _get,\n post: _post,\n put: _put,\n sendHTTPRequest: sendHTTPRequest,\n };\n\n function sendHTTPRequest(req) {\n if (req.method === 'GET' && ENV_VARS && ENV_VARS.s3BucketDomain && ENV_VARS.cdnDomain) {\n req.url.replace(ENV_VARS.s3BucketDomain, ENV_VARS.cdnDomain);\n }\n\n return $http(req)\n .then(function(response) {\n return response.data;\n })\n .catch(function(error) {\n throw error.data;\n });\n }\n\n function _delete(url, payload) {\n return $http({\n data: payload,\n method: 'DELETE',\n url: API.BASE_URL + url,\n })\n .then(function(response) {\n return response.data;\n })\n .catch(function(error) {\n throw error.data;\n });\n }\n\n function _get(url, params) {\n return $http({\n method: 'GET',\n params: params,\n url: API.BASE_URL + url,\n })\n .then(function(response) {\n return response.data;\n })\n .catch(function(error) {\n throw error.data;\n });\n }\n\n function _post(url, payload) {\n return $http({\n data: payload,\n method: 'POST',\n url: API.BASE_URL + url,\n })\n .then(function(response) {\n return response.data;\n })\n .catch(function(error) {\n throw error.data;\n });\n }\n\n function _put(url, payload) {\n return $http({\n data: payload,\n method: 'PUT',\n url: API.BASE_URL + url,\n })\n .then(function(response) {\n return response.data;\n })\n .catch(function(error) {\n throw error.data;\n });\n }\n }\n})();\n\n'use strict';\n\n\n/**\n * This service generates all the CRUD and Association methods for a model entity. Refer to the repositories directory\n * for implementation examples.\n */\nangular.module('app.services.utility')\n .factory('restfulResourceHelper', function($log, apiHelperService) {\n return {\n /*\n * Generate the CRUD methods for a model entity.\n * @param resourceRoute: The API route for the model entity.\n */\n generateCrudCallers: function(resourceRoute) {\n return {\n list: this.generateListCaller(resourceRoute),\n find: this.generateFindCaller(resourceRoute),\n update: this.generateUpdateCaller(resourceRoute),\n create: this.generateCreateCaller(resourceRoute),\n deleteOne: this.generateDeleteOneCaller(resourceRoute),\n deleteMany: this.generateDeleteManyCaller(resourceRoute),\n };\n },\n generateListCaller: function(resourceRoute) {\n return function(params) {\n //$log.debug(resourceRoute + '.list + params: ', params);\n\n return apiHelperService.get(resourceRoute, params)\n .then(function(response) {\n //$log.debug(resourceRoute + '.list response:\\n', response);\n return response;\n })\n .catch(function(error) {\n //$log.error(resourceRoute + '.list error:\\n', error);\n throw error;\n });\n };\n },\n generateFindCaller: function(resourceRoute) {\n return function(_id, params) {\n //$log.debug(resourceRoute + '.find + _id: ', _id, ', params: ', params);\n\n return apiHelperService.get(resourceRoute + '/' + _id, params)\n .then(function(response) {\n //$log.debug(resourceRoute + '.find response:\\n', response);\n return response;\n })\n .catch(function(error) {\n //$log.error(resourceRoute + '.find error:\\n', error);\n throw error;\n });\n };\n },\n generateUpdateCaller: function(resourceRoute) {\n return function(_id, payload) {\n delete payload.createdAt;\n delete payload.updatedAt;\n delete payload.isDeleted;\n $log.debug(resourceRoute + '.update + _id: ', _id, ', payload: ', payload);\n\n return apiHelperService.put(resourceRoute + '/' + _id, payload)\n .then(function(response) {\n $log.debug(resourceRoute + '.update response:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.error(resourceRoute + '.update error:\\n', error);\n throw error;\n });\n };\n },\n generateCreateCaller: function(resourceRoute) {\n return function(payload) {\n $log.debug(resourceRoute + '.create + payload: ', payload);\n\n return apiHelperService.post(resourceRoute, payload)\n .then(function(response) {\n $log.debug(resourceRoute + '.create response:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.error(resourceRoute + '.create error:\\n', error);\n throw error;\n });\n };\n },\n generateDeleteOneCaller: function(resourceRoute) {\n return function(_id) {\n $log.debug(resourceRoute + '.deleteOne + _id: ', _id);\n\n return apiHelperService.delete(resourceRoute + '/' + _id)\n .then(function(response) {\n $log.debug(resourceRoute + '.delete response:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.debug(resourceRoute + '.delete error:\\n', error);\n throw error;\n });\n };\n },\n generateDeleteManyCaller: function(resourceRoute) {\n return function(payload) {\n $log.debug(resourceRoute + '.deleteMany + payload', payload);\n\n return apiHelperService.delete(resourceRoute, payload)\n .then(function(response) {\n $log.debug(resourceRoute + '.delete response:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.debug(resourceRoute + '.delete error:\\n', error);\n throw error;\n });\n };\n },\n /*\n * Generate the association methods for a model entity. The parameters are explained below with examples\n * using the context of a user and their shopping cart items.\n * @param ownerRoute: The API route for the owner model, Ex: user\n * @param associationName: The name of the association for the owner model, Ex: shoppingCartItems\n * @param associationRoute: The API route for the association, Ex: cart-item\n * @param childName: The name of the child/association model, Ex: storeItem\n *\n * The generated methods will correspond with the following routes:\n *\n * DELETE /user/{ownerId}/cart-item Remove multiple storeItems from a user's list of shoppingCartItems\n * GET /user/{ownerId}/cart-item Get all of the storeItems for a user\n * POST /user/{ownerId}/cart-item Add multiple storeItems to a user's list of shoppingCartItems\n * DELETE /user/{ownerId}/cart-item/{childId} Remove a single storeItem from a user's list of shoppingCartItems\n * PUT /user/{ownerId}/cart-item/{childId} Add a single storeItem to a user's list of shoppingCartItems\n */\n generateAssociationCallers: function(ownerRoute, associationName, associationRoute, childName) {\n var resourceMethodName = associationName[0].toUpperCase() + associationName.slice(1);\n var callers = {};\n callers['get' + resourceMethodName] = this.generateGetAssociationsAssociationCaller(ownerRoute, associationRoute, resourceMethodName);\n callers['addOne' + resourceMethodName] = this.generateAddOneAssociationCaller(ownerRoute, associationRoute, resourceMethodName);\n callers['removeOne' + resourceMethodName] = this.generateRemoveOneAssociationCaller(ownerRoute, associationRoute, resourceMethodName);\n callers['addMany' + resourceMethodName] = this.generateAddManyAssociationCaller(ownerRoute, associationRoute, resourceMethodName);\n callers['removeMany' + resourceMethodName] = this.generateRemoveManyAssociationCaller(ownerRoute, associationRoute, resourceMethodName);\n\n callers['flatten' + resourceMethodName] = this.generateFlattenAssociationData(associationName, childName);\n return callers;\n },\n generateGetAssociationsAssociationCaller: function(ownerRoute, associationRoute, resourceMethodName) {\n return function(ownerId, params) {\n var methodName = ownerRoute + '.get' + resourceMethodName;\n $log.debug(methodName + ' + ownerId: ', ownerId, ', params: ', params);\n\n if (!params) {\n params = {\n isDeleted: false\n };\n }\n else if (!params.isDeleted) {\n params.isDeleted = false;\n }\n\n return apiHelperService.get(ownerRoute + '/' + ownerId + '/' + associationRoute, params)\n .then(function(response) {\n $log.debug(methodName + ' response:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.error(methodName + ' error:\\n', error);\n throw error;\n });\n };\n },\n generateAddOneAssociationCaller: function(ownerRoute, associationRoute, resourceMethodName) {\n return function(ownerId, childId, payload) {\n var methodName = ownerRoute + '.addOne' + resourceMethodName;\n $log.debug(methodName + ' + ownerId: ', ownerId, 'childId: ', childId, ', payload: ', payload);\n\n return apiHelperService.put(ownerRoute + '/' + ownerId + '/' + associationRoute + '/' + childId, payload)\n .then(function(response) {\n $log.debug(methodName + ' response:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.error(methodName + ' error:\\n', error);\n throw error;\n });\n };\n },\n generateRemoveOneAssociationCaller: function(ownerRoute, associationRoute, resourceMethodName) {\n return function(ownerId, childId) {\n var methodName = ownerRoute + '.removeOne' + resourceMethodName;\n $log.debug(methodName + ' + ownerId: ', ownerId, 'childResource: ', associationRoute, 'childId: ', childId);\n\n return apiHelperService.delete(ownerRoute + '/' + ownerId + '/' + associationRoute + '/' + childId)\n .then(function(response) {\n $log.debug(methodName + ' response:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.error(methodName + ' error:\\n', error);\n throw error;\n });\n };\n },\n generateAddManyAssociationCaller: function(ownerRoute, associationRoute, resourceMethodName) {\n return function(ownerId, payload) {\n var methodName = ownerRoute + '.addMany' + resourceMethodName;\n $log.debug(methodName + ' + ownerId: ', ownerId, ', payload: ', payload);\n\n return apiHelperService.post(ownerRoute + '/' + ownerId + '/' + associationRoute, payload)\n .then(function(response) {\n $log.debug(methodName + ' response:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.error(methodName + ' error:\\n', error);\n throw error;\n });\n };\n },\n generateRemoveManyAssociationCaller: function(ownerRoute, associationRoute, resourceMethodName) {\n return function(ownerId, payload) {\n var methodName = ownerRoute + '.removeMany' + resourceMethodName;\n $log.debug(methodName + ' + ownerId: ', ownerId, ', payload: ', payload);\n\n return apiHelperService.delete(ownerRoute + '/' + ownerId + '/' + associationRoute, payload)\n .then(function(response) {\n $log.debug(methodName + ' response:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.error(methodName + ' error:\\n', error);\n throw error;\n });\n };\n },\n /*\n * Flattens MANY_MANY relationships so just the associated object is returned and no extra fields\n * @returns {Function}\n */\n generateFlattenAssociationData: function(associationName, childName) {\n return function(data) {\n if (!data) {\n return [];\n }\n return data.map(function(object) {\n if (childName) {\n return object[childName];\n }\n else {\n return object[associationName];\n }\n });\n };\n },\n };\n });\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.utility')\n .factory('panelService', panelService);\n\n function panelService($log, $q, $state, $aside) {\n var aside;\n\n return {\n show: show,\n hide: hide,\n };\n\n // SHOW PANEL (ASIDE)\n function show(templatePath, controller) {\n if (!templatePath || !controller) {\n return $q.reject();\n }\n if (aside) {\n $log.debug(\n 'help.panel.service: instance already exists - multiple requests?'\n );\n return $q.reject();\n }\n\n aside = $aside({\n controller: controller,\n controllerAs: 'vm',\n keyboard: true,\n onHide: hide,\n show: false,\n templateUrl: templatePath\n });\n\n return aside.$promise.then(aside.show);\n\n }\n\n // CLOSE PANEL (ASIDE)\n function hide(params) {\n if (!aside) {\n return;\n }\n //$log.debug('help.modal.service: hide');\n aside.hide();\n aside = null;\n\n if (params && params.redirect) {\n $log.debug('REDIRECTING TO:', params.redirect);\n $state.go(params.redirect);\n }\n else {\n $state.go($state.current.parent);\n }\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.utility')\n .factory('modalService', modalService);\n\n function modalService($log, $q, $state, $modal) {\n var modal;\n var redirect;\n\n return {\n hide: hide,\n show: show,\n };\n\n\n // hide\n function hide(params) {\n if (modal) {\n redirect = (typeof params !== 'undefined') ? params : redirect;\n\n modal.$promise.then(modal.hide);\n }\n }\n\n // on hide panel event\n function handlePanelHide() {\n if (modal) {\n modal.destroy();\n\n // check if redirect should be\n if (redirect) {\n $state.go($state.current.parent);\n }\n }\n }\n\n // show\n function show(template, controller, params) {\n if (!template || !controller) {\n return $q.reject();\n }\n\n // if we change from modal to modal, we can skip animation\n if (modal) {\n modal.destroy();\n }\n\n modal = $modal({\n controller: controller,\n controllerAs: 'vm',\n keyboard: false,\n onHide: handlePanelHide,\n show: false,\n templateUrl: template\n });\n\n redirect = (typeof params !== 'undefined') ? params : true;\n\n return modal.$promise.then(modal.show);\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.repository', []);\n})();\n\n(function() {\n 'use strict';\n\n /**\n * NOTE: Refer to the \"generateAssociationCallers\" docs (in restful-resource-utility.service.js) for insight into\n * its parameters.\n */\n\n angular\n .module('app.services.repository')\n .factory('userRepository', function($log, API, apiHelperService) {\n return _.merge(\n {\n getMy: function() {\n $log.debug(API.USERS + '.getMy + params: ');\n\n return apiHelperService.get(API.USERS + '/my')\n .then(function(response) {\n $log.debug(API.USERS + '.getMy response:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.error(API.USERS + '.getMy error:\\n', error);\n throw error;\n });\n },\n },\n {\n updateMy: function(user) {\n $log.debug(API.USERS + '.updateMy + params: ', user);\n\n return apiHelperService.put(API.USERS + '/my', user)\n .then(function(response) {\n $log.debug(API.USERS + '.updateMy response:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.error(API.USERS + '.updateMy error:\\n', error);\n throw error;\n });\n },\n },\n {\n changeMyPassword: function(password) {\n $log.debug(API.USERS + '.changeMyPassword + params: ');\n\n return apiHelperService.put(API.USERS + '/my/password', {password: password})\n .then(function(response) {\n $log.debug(API.USERS + '.changeMyPassword response:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.error(API.USERS + '.changeMyPassword error:\\n', error);\n throw error;\n });\n },\n }\n );\n });\n})();\n\n/*\n ** Factory for CRUDing API.USERS\n */\n\n(function() {\n 'use strict';\n\n /**\n * NOTE: Refer to the \"generateAssociationCallers\" docs (in restful-resource-utility.service.js) for insight into\n * its parameters.\n */\n\n angular\n .module('app.services.repository')\n .factory('teamRepository', function(API, restfulResourceHelper) {\n return _.merge(restfulResourceHelper.generateCrudCallers(API.TEAM));\n });\n})();\n\n/*\n ** Factory for CRUDing API.TEAM\n */\n\n(function() {\n 'use strict';\n\n /**\n * NOTE: Refer to the \"generateAssociationCallers\" docs (in restful-resource-utility.service.js) for insight into\n * its parameters.\n */\n\n angular\n .module('app.services.repository')\n .factory('subscriptionRepository', function(API, restfulResourceHelper) {\n return _.merge(restfulResourceHelper.generateCrudCallers(API.SUBSCRIPTION));\n });\n})();\n\n/*\n ** Factory for CRUDing API.SUBSCRIPTION\n */\n\n(function() {\n 'use strict';\n\n /**\n * NOTE: Refer to the \"generateAssociationCallers\" docs (in restful-resource-utility.service.js) for insight into\n * its parameters.\n */\n\n angular\n .module('app.services.repository')\n .factory('specialtiesRepository', function(API, restfulResourceHelper) {\n return _.merge(restfulResourceHelper.generateCrudCallers(API.SPECIALTIES));\n });\n})();\n\n/*\n ** Factory for CRUDing API.SPECIALTIES\n */\n\n(function() {\n 'use strict';\n\n /**\n * NOTE: Refer to the \"generateAssociationCallers\" docs (in restful-resource-utility.service.js) for insight into\n * its parameters.\n */\n\n angular\n .module('app.services.repository')\n .factory('pagesRepository', function(API, restfulResourceHelper) {\n return _.merge(restfulResourceHelper.generateCrudCallers(API.PAGES));\n });\n})();\n\n/*\n ** Factory for CRUDing API.PAGES\n */\n\n(function() {\n 'use strict';\n\n /**\n * NOTE: Refer to the \"generateAssociationCallers\" docs (in restful-resource-utility.service.js) for insight into\n * its parameters.\n */\n\n angular\n .module('app.services.repository')\n .factory('itemRepository', function($log, API, restfulResourceHelper, apiHelperService) {\n return _.merge(\n restfulResourceHelper.generateCrudCallers(API.ITEMS),\n {\n bid: function(_id, params) {\n $log.debug(API.ITEMS + '.bid + _id', _id, ' + params: ', params);\n\n return apiHelperService.post(API.ITEMS + '/' + _id + '/bid', params)\n .then(function(response) {\n $log.debug(API.ITEMS + '.bid response:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.error(API.ITEMS + '.bid error:\\n', error);\n throw error;\n });\n },\n }\n );\n });\n})();\n\n/*\n ** Factory for CRUDing API.ITEMS\n */\n\n(function() {\n 'use strict';\n\n /**\n * NOTE: Refer to the \"generateAssociationCallers\" docs (in restful-resource-utility.service.js) for insight into\n * its parameters.\n */\n\n angular\n .module('app.services.repository')\n .factory('highlightRepository', function(API, restfulResourceHelper) {\n return _.merge(restfulResourceHelper.generateCrudCallers(API.HIGHLIGHTS));\n });\n})();\n\n/*\n ** Factory for CRUDing API.HIGHLIGHTS\n */\n\n(function() {\n 'use strict';\n\n /**\n * NOTE: Refer to the \"generateAssociationCallers\" docs (in restful-resource-utility.service.js) for insight into\n * its parameters.\n */\n\n angular\n .module('app.services.repository')\n .factory('contactRepository', function(API, restfulResourceHelper) {\n return _.merge(restfulResourceHelper.generateCrudCallers(API.CONTACT));\n });\n})();\n\n/*\n ** Factory for CRUDing API.CONTACT\n */\n\n(function() {\n 'use strict';\n\n /**\n * NOTE: Refer to the \"generateAssociationCallers\" docs (in restful-resource-utility.service.js) for insight into\n * its parameters.\n */\n\n angular\n .module('app.services.repository')\n .factory('categoriesRepository', function(API, restfulResourceHelper) {\n return _.merge(restfulResourceHelper.generateCrudCallers(API.CATEGORIES));\n });\n})();\n\n/*\n ** Factory for CRUDing API.CATEGORIES\n */\n\n(function() {\n 'use strict';\n\n /**\n * NOTE: Refer to the \"generateAssociationCallers\" docs (in restful-resource-utility.service.js) for insight into\n * its parameters.\n */\n\n angular\n .module('app.services.repository')\n .factory('bidRepository', function($log, API, restfulResourceHelper, apiHelperService) {\n return _.merge(\n restfulResourceHelper.generateCrudCallers(API.BIDS),\n {\n deleteOneBid: restfulResourceHelper.generateRemoveOneAssociationCaller(API.BIDS, 'item'),\n listMyBids: function(email, params) {\n $log.debug(API.BIDS + '.' + email + '.user + params: ', params);\n\n return apiHelperService.get(API.BIDS + '/' + email + '/user', params)\n .then(function(response) {\n $log.debug(API.BIDS + '.' + email + '.user response:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.error(API.BIDS + '.' + email + '.user error:\\n', error);\n throw error;\n });\n },\n });\n });\n})();\n\n/*\n ** Factory for CRUDing API.BIDS\n */\n\n(function() {\n 'use strict';\n\n /**\n * NOTE: Refer to the \"generateAssociationCallers\" docs (in restful-resource-utility.service.js) for insight into\n * its parameters.\n */\n\n angular\n .module('app.services.repository')\n .factory('auctionRepository', function(API, restfulResourceHelper) {\n return _.merge(restfulResourceHelper.generateCrudCallers(API.EVENTS));\n });\n})();\n\n/*\n ** Factory for CRUDing API.EVENTS\n */\n\n(function() {\n 'use strict';\n\n /**\n * NOTE: Refer to the \"generateAssociationCallers\" docs (in restful-resource-utility.service.js) for insight into\n * its parameters.\n */\n\n angular\n .module('app.services.repository')\n .factory('assetsRepository', function(API, restfulResourceHelper) {\n return _.merge(restfulResourceHelper.generateCrudCallers(API.ASSETS));\n });\n})();\n\n/*\n ** Factory for CRUDing API.ASSETS\n */\n\n(function() {\n 'use strict';\n\n /**\n * NOTE: Refer to the \"generateAssociationCallers\" docs (in restful-resource-utility.service.js) for insight into\n * its parameters.\n */\n\n angular\n .module('app.services.repository')\n .factory('accountRepository', function($log, API, apiHelperService) {\n return _.merge(\n {\n getMy: function() {\n $log.debug(API.ACCOUNTS + '.getMy');\n\n return apiHelperService.get(API.ACCOUNTS + '/my')\n .then(function(response) {\n $log.debug(API.ACCOUNTS + '.getMy response:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.error(API.ACCOUNTS + '.getMy error:\\n', error);\n throw error;\n });\n },\n },\n {\n updateMy: function(user) {\n $log.debug(API.ACCOUNTS + '.updateMy + params: ', user);\n\n return apiHelperService.put(API.ACCOUNTS + '/my', user)\n .then(function(response) {\n $log.debug(API.ACCOUNTS + '.updateMy response:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.error(API.ACCOUNTS + '.updateMy error:\\n', error);\n throw error;\n });\n },\n },\n {\n updateCache: function(limit, page, sort) {\n $log.debug(API.ACCOUNTS + '.updateCache: ');\n\n var accounts = {};\n\n return apiHelperService.get(API.ACCOUNTS)\n .then(function(response) {\n $log.debug(API.USERS + '.updateCache success:\\n', response);\n\n response.data.forEach(function(a) {\n accounts[a._id] = a;\n });\n\n return response;\n })\n .catch(function(error) {\n $log.error(API.USERS + '.updateCache error:\\n', error);\n throw error;\n });\n },\n }\n );\n });\n})();\n\n/*\n ** Factory for CRUDing API.ACCOUNTS\n */\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.metatags', []);\n\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.metatags')\n .factory('metaTagsService', metaTagsService);\n\n function metaTagsService(ngMeta, $location, ENV_VARS) {\n return {\n setMetaTag: setMetaTag,\n };\n\n // setMetaTag\n function setMetaTag(obj, type) {\n var title = obj.meta.title ? obj.meta.title + ' | ' + ENV_VARS.appName : ENV_VARS.appName;\n var description = obj.meta.description || ENV_VARS.appDesc;\n var imageUrl = obj.headerUrl || obj.eventImageUrl || obj.itemImageUrl || obj.imageUrl || obj.mainImage;\n\n ngMeta.setTitle(title);\n ngMeta.setTag('description', description);\n ngMeta.setTag('headerImage', imageUrl);\n\n ngMeta.setTag('og:title', title);\n ngMeta.setTag('og:description', description);\n ngMeta.setTag('og:image', imageUrl);\n ngMeta.setTag('og:url', $location.absUrl());\n\n if (type) {\n ngMeta.setTag('og:type', type);\n }\n else {\n ngMeta.setTag('og:type', 'website');\n }\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.metatags')\n .provider('metaTagsData', metaTagsDataProvider);\n\n function metaTagsDataProvider(ENV_VARS) {\n\n this.getMetaTagsData = function() {\n var domain = 'https://' + ENV_VARS.appDomain;\n\n var defaultMeta = {\n 'description': ENV_VARS.appDesc,\n 'headerImage': domain + '/assets/images/logo.svg',\n\n 'og:title': ENV_VARS.appName,\n 'og:image': domain + '/assets/images/logo.svg',\n 'og:url': domain,\n 'og:description': ENV_VARS.appDesc,\n 'og:type': 'website',\n };\n\n return {\n defaultMeta: defaultMeta,\n auctions: {\n 'title': 'Auctions',\n 'description': 'Upcoming Auctions, Next Auction Coming Soon, Past Auctions',\n 'og:title': 'Auctions | ' + ENV_VARS.appName,\n 'og:description': 'Upcoming Auctions, Next Auction Coming Soon, Past Auctions',\n 'og:image': domain + '/assets/images/hero-paddle.jpg',\n 'og:url': domain + '/auctions'\n },\n directions: {\n 'title': 'Directions to Vogt auction',\n 'description': \"We'll show you the way! Vogt Auction Galleries is located at: 7233 Blanco Road in San Antonio, Texas. Hours: Monday-Friday 10am-6pm, Phone: (210) 822-6155, Fax: (210) 821-5821\",\n 'og:title': 'Directions to Vogt auction | ' + ENV_VARS.appName,\n 'og:description': \"We'll show you the way! Vogt Auction Galleries is located at: 7233 Blanco Road in San Antonio, Texas. Hours: Monday-Friday 10am-6pm, Phone: (210) 822-6155, Fax: (210) 821-5821\",\n 'og:image': domain + '/assets/images/hero-directions.jpg',\n 'og:url': domain + '/directions'\n },\n settings: {\n 'title': 'Settings',\n 'og:title': 'Settings | ' + ENV_VARS.appName,\n },\n login: {\n 'title': 'Login',\n 'og:title': 'Login | ' + ENV_VARS.appName,\n },\n forgotpassword: {\n 'title': 'Forgot Password',\n 'og:title': 'Forgot Password | ' + ENV_VARS.appName,\n },\n resetpassword: {\n 'title': 'Reset Password',\n 'og:title': 'Reset Password | ' + ENV_VARS.appName,\n },\n signup: {\n 'title': 'Sign Up',\n 'og:title': 'Sign Up | ' + ENV_VARS.appName,\n },\n mybids: {\n 'title': 'My Bids',\n 'og:title': 'My Bids | ' + ENV_VARS.appName,\n },\n blog: {\n 'title': 'Blog',\n 'og:title': 'Blog | ' + ENV_VARS.appName,\n },\n about: {\n 'title': 'About us',\n 'description': \"San Antonio's trusted estates leader. We’re the leading appraisal and auction house in our region, selling more than $135,000,000 in our award-winning 43 year history. We specialize in the appraisal and sale of antique furniture, Texan & European art, decorative arts, rugs, folk art, jewelry, coins, and sterling silver. We hold weekly & specialized auctions at our central San Antonio, Texas auction house drawing hundreds of bidders to each event.\",\n\n 'og:title': 'About us | ' + ENV_VARS.appName,\n 'og:description': \"San Antonio's trusted estates leader. We’re the leading appraisal and auction house in our region, selling more than $135,000,000 in our award-winning 43 year history. We specialize in the appraisal and sale of antique furniture, Texan & European art, decorative arts, rugs, folk art, jewelry, coins, and sterling silver. We hold weekly & specialized auctions at our central San Antonio, Texas auction house drawing hundreds of bidders to each event.\",\n 'og:url': domain + '/about'\n },\n };\n };\n\n this.$get = function() {};\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.auth', []);\n})();\n\n// Based loosely around work by Witold Szczerba - https://github.com/witoldsz/angular-http-auth\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.auth')\n .factory('authService', authService);\n\n function authService($log, $timeout, $q, $http, $state, localStorageService, Notification, Session, API, REDIRECT) {\n return {\n login: login,\n loginForgot: loginForgot,\n loginReset: loginReset,\n logout: logout,\n signup: signup,\n checkEmail: checkEmail,\n getSession: getSession,\n isAuthenticated: isAuthenticated,\n isAuthorized: isAuthorized,\n };\n\n\n // login\n function login(user) {\n return $http.post(API.BASE_URL + API.LOGIN, {\n username: user.username,\n password: user.password\n })\n .then(function(response) {\n $log.debug('authService.login-success:', response.data);\n\n // EXPL: login successful if there's a user in the response\n if (response.data.session) {\n var session = angular.copy(response.data);\n var account = angular.copy(response.data.user.account);\n var user = angular.copy(response.data.user);\n var role = Object.keys(response.data.user.roles)[0];\n\n delete session.user;\n\n session.role = role;\n session.user = {\n email: user.email,\n _id: user._id,\n name: account.name,\n phone: account.phone,\n username: user.username\n };\n\n Session.create(session);\n }\n else {\n throw new Error('The response did not contain a user.');\n }\n\n return session.user;\n })\n .catch(function(error) {\n $log.error('authService.login-error:', error);\n throw error.data;\n });\n }\n\n // login forgot\n function loginForgot(email) {\n return $http.post(API.BASE_URL + API.LOGIN_FORGOT, {\n email: email\n })\n .then(function(response) {\n $log.debug('authService.loginForgot-success:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.error('authService.loginForgot-error:\\n', error);\n throw error.data;\n });\n }\n\n // login reset\n function loginReset(data) {\n return $http.post(API.BASE_URL + API.LOGIN_RESET, data)\n .then(function(response) {\n $log.debug('authService.loginReset-success:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.error('authService.loginReset-error:\\n', error);\n throw error.data;\n });\n }\n\n // logout\n function logout() {\n // log user out if they exist in localstorage\n if (localStorageService.get('session')) {\n Session.deprecated = true;\n\n return $http.delete(API.BASE_URL + API.LOGOUT)\n .then(function(response) {\n // call singleton to wipe session\n Session.destroy();\n // direct call to null token so user is unAuthenticated\n // to pass route resolve on login route\n Session.authHeader = null;\n Session.deprecated = false;\n\n // messaging\n $log.debug('authService.logout-success:', response);\n\n // redirect\n if ($state.includes('account')) {\n $state.go(REDIRECT.HOME);\n }\n })\n .catch(function(error) {\n // failure\n $log.error('authService.logout-error:', error);\n\n // call singleton to wipe session\n Session.destroy();\n // direct call to null token so user is unAuthenticated\n // to pass route resolve on login route\n Session.authHeader = null;\n\n // redirect\n if ($state.includes('account')) {\n $state.go(REDIRECT.HOME);\n }\n });\n }\n else {\n $log.debug('authService.logout: No session exists.');\n // redirect\n if ($state.includes('account')) {\n $state.go(REDIRECT.HOME);\n }\n }\n }\n\n // signup\n function signup(data) {\n delete data.confirmPassword;\n\n var deferred = $q.defer();\n var promise = $http.post(API.BASE_URL + API.SIGNUP, data);\n\n // EXPL: use a timeout to delay activation response for better user experience\n $timeout(function() {\n promise\n .then(function(response) {\n $log.debug('authService.signup-success:\\n', response);\n\n if (response.data.session) {\n var session = angular.copy(response.data);\n var account = angular.copy(response.data.user.roles.account);\n var user = angular.copy(response.data.user);\n var phone = angular.copy(response.config.data.phone);\n var role = Object.keys(response.data.user.roles)[0];\n\n delete session.user;\n\n $log.debug('authService.account:\\n', account);\n\n session.role = role;\n session.user = {\n email: user.email,\n _id: user._id,\n phone: phone,\n username: user.username\n };\n\n var firstName = account.name.split(' ').slice(0, -1).join(' ');\n var lastName = account.name.split(' ').slice(-1).join(' ');\n\n session.user.name = {\n first: firstName,\n last: lastName,\n };\n\n $log.debug('authService.session:\\n', session);\n\n Session.create(session);\n }\n else {\n throw new Error('The response did not contain a user.');\n }\n\n deferred.resolve(session.user);\n })\n .catch(function(error) {\n $log.error('authService.signup-error:\\n', error);\n deferred.reject(error.data);\n });\n }, 1000);\n\n return deferred.promise;\n }\n\n // check email\n function checkEmail(email) {\n return $http.get(API.BASE_URL + API.USERS + '/' + email + '/search', {})\n .then(function(response) {\n $log.debug('authService.checkEmail-success:\\n', response);\n return response;\n })\n .catch(function(error) {\n $log.error('authService.checkEmail-error:\\n', error);\n throw error.data;\n });\n }\n\n // get existing session\n function getSession() {\n // get user from localstorage\n if (localStorageService.get('session')) {\n\n $log.debug('authService.getSession-session exists');\n\n // update session with local storage\n Session.update();\n }\n else {\n $log.debug('authService.getSession-NO session exists');\n }\n }\n\n // is authenticated\n function isAuthenticated() {\n return !!Session.authHeader && !Session.deprecated;\n }\n\n // is authorized\n // pass role name to check against allowed from backend\n function isAuthorized(authorizedRoles) {\n if (!angular.isArray(authorizedRoles)) {\n // converts if no brackets around role name in the route\n authorizedRoles = [authorizedRoles];\n }\n\n // if user is authed with session, convert roles object to array to be searched\n var userRole = Session.role; // ES6 - works only in modern browsers\n\n // compare the two role sets to see if we allow access to the route\n var foundRole = authorizedRoles.indexOf(userRole);\n\n return (isAuthenticated() && foundRole > -1);\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.auth')\n .factory('Session', Session);\n\n function Session($log, $http, localStorageService) {\n var session = {\n create: create,\n destroy: destroy,\n setUser: setUser,\n update: update,\n };\n\n return session;\n\n function create(obj) {\n // add jwt token to auth header for all requests made by the $http service\n $http.defaults.headers.common.Authorization = obj.authHeader;\n\n // FUTURE: determine jwt expire time\n // var hoursToExpireTokenIn = 4;\n // var tokenExpiry = new Date(obj.time);\n // tokenExpiry.setHours(tokenExpiry.getHours() + hoursToExpireTokenIn);\n\n // save vars to keep user logged in between page refreshes\n localStorageService.set('session', {\n user: obj.user,\n role: obj.role,\n authHeader: obj.authHeader\n });\n\n // set vars for session\n session.user = obj.user;\n session.role = obj.role;\n session.authHeader = obj.authHeader;\n session.deprecated = false;\n\n $log.debug('Session created:\\n', session);\n }\n\n function destroy() {\n $log.debug('Session.destroy: clearing localstorage');\n // remove jwt token from header\n $http.defaults.headers.common.Authorization = '';\n // remove user from local storage and clear http auth header\n localStorageService.remove('session');\n }\n\n function setUser(user) {\n session.user = user;\n localStorageService.set('session', session);\n }\n\n function update() {\n // add jwt token to auth header for all requests made by the $http service\n $http.defaults.headers.common.Authorization = localStorageService.get('session').authHeader;\n\n // set vars for session on page refresh\n session.user = localStorageService.get('session').user;\n session.role = localStorageService.get('session').role;\n session.authHeader = localStorageService.get('session').authHeader;\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.auth')\n .factory('authSecurityService', authSecurityService);\n\n function authSecurityService($log, $timeout, $state, $q, authService, Notification, REDIRECT) {\n return {\n requireAccountUser: requireAccountUser,\n requireAuthenticatedUser: requireAuthenticatedUser,\n requireUnauthenticatedUser: requireUnauthenticatedUser\n };\n\n // SECURITY: ADMIN\n function requireAccountUser() {\n var defer = $q.defer();\n var authorizedRoles = ['account'];\n\n // check if user has account role\n if (authService.isAuthorized(authorizedRoles)) {\n // user is authenticated and has the correct role - let them pass\n $log.debug('auth.security: requireAccountUser: user has account role - lets resolve');\n\n defer.resolve();\n }\n else if (authService.isAuthenticated()) {\n // user is authenticated and does not have the account role - redirect home\n $log.debug('auth.security: requireAccountUser: user DOES NOT HAVE account role - lets reject');\n\n // must be wrapped with timeout for async or will hang\n $timeout(function() {\n authService.logout();\n $state.go(REDIRECT.LOGIN);\n Notification.warning({message: 'You don\\'t have the correct role to log in or access this area. Please try a different account.', title: 'Not Authorized'});\n\n });\n defer.reject();\n }\n else {\n $log.debug('auth.security: requireAccountUser: user is NOT AUTHED and DOES NOT HAVE account role - lets reject');\n // user is not authenticated (therefore doesnt have a role)\n\n // must be wrapped with timeout for async or will hang\n $timeout(function() {\n $log.debug('auth.security: ATTEMPTING REDIRECT TO LOGIN');\n $state.go(REDIRECT.LOGIN);\n Notification.warning({message: 'You don\\'t have the correct role to log in or access this area. Please try a different account.', title: 'Not Authorized'});\n });\n\n defer.reject();\n }\n\n return defer.promise;\n }\n\n // SECURITY: AUTHENTICATED\n function requireAuthenticatedUser() {\n var defer = $q.defer();\n\n // check if user is authenticated\n if (authService.isAuthenticated()) {\n // user is authenticated and does not have the account role - redirect home\n $log.debug('auth.security: requireAuthenticatedUser: user is authenitcated-resolve');\n defer.resolve();\n }\n else {\n $log.debug('auth.security: requireAuthenticatedUser: user is not authenitcated');\n\n $timeout(function() {\n $state.go(REDIRECT.LOGIN);\n });\n defer.reject();\n }\n return defer.promise;\n }\n\n // SECURITY: UNAUTHENTICATED\n function requireUnauthenticatedUser() {\n var defer = $q.defer();\n\n if (authService.isAuthenticated()) {\n // user is authenticated - dont let them access the requested page - redirect\n $log.debug('auth.security: requireUnauthenticatedUser-redirect');\n Notification.warning('You\\'re Authenticated.');\n\n // must be wrapped with timeout for async or will hang\n $timeout(function() {\n $state.go(REDIRECT.BID);\n });\n defer.reject();\n }\n else {\n $log.debug('auth.security: requireUnauthenticatedUser-resolve', $state);\n defer.resolve();\n }\n return defer.promise;\n }\n }\n})();\n\n// This service provides guard methods to support AngularJS routes.\n// You can add them as resolves to routes to require authorization levels before allowing a route change to complete\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services.auth')\n .factory('authInterceptorService', authInterceptorService);\n\n function authInterceptorService($q, $log, $injector, REDIRECT) {\n return {\n responseError: responseError\n };\n\n function responseError(response) {\n var Session = $injector.get('Session');\n var $state = $injector.get('$state');\n\n // 401 UNAUTHORIZED CAUGHT - No Valid Auth Credentials OR Session expired\n if (response.status === 401) {\n $log.debug('authInterceptor.service: 401: response:', response);\n\n // call singleton to wipe session\n Session.destroy();\n // direct call to null token so user is unAuthenticated\n // to pass route resolve on login route\n Session.authHeader = null;\n\n $state.go(REDIRECT.LOGIN);\n }\n\n /* If not a 401, do nothing with this error.\n * This is necessary to make a `responseError`\n * interceptor a no-op. */\n return $q.reject(response);\n }\n };\n\n})();\n\n// This http interceptor listens for 401 authentication failures\n// Based loosely around work by Witold Szczerba - https://github.com/witoldsz/angular-http-auth\n\n(function() {\n 'use strict';\n\n angular.module('auth.login', []);\n})();\n\n\n(function() {\n 'use strict';\n\n angular\n .module('auth.login')\n .controller('LoginResetController', LoginResetController);\n\n function LoginResetController($scope, $log, $location, Session, authService, passService, flashService, formsService) {\n var vm = this;\n\n $log.debug('LoginResetController *** GOT HERE ****');\n\n\n // ViewModel Properties\n vm.password = '';\n vm.confirmPassword = '';\n vm.success = false;\n vm.token = '';\n vm.valid = false;\n\n // ViewModel Methods\n vm.isPasswordConfirmed = passService.isPasswordConfirmed;\n vm.onSubmit = handleSubmit;\n\n // error handling utility\n $scope.hasError = formsService.hasError;\n $scope.showError = formsService.showError;\n $scope.canSave = formsService.canSave;\n\n\n (function init() {\n // reset login status - ensure user is logged out on controller load\n // user should never get to /activate-account when authenticated - this is precaution\n Session.destroy();\n Session.token = null;\n\n // if the user was directed here via a link with a key, then activate their account\n if ($location.search().token) {\n vm.valid = true;\n vm.token = $location.search().token;\n }\n else {\n $log.error('LoginResetController.init-error:', 'no token');\n flashService.error('The link you used did not contain a token. Please click on the link in your email to ' +\n 'reset your password, or proceed to the login page to request a new email.');\n }\n })();\n\n\n // Private Methods\n // handleSubmit\n function handleSubmit() {\n $scope.isDataLoading = true;\n\n return authService.loginReset({\n token: vm.token,\n password: vm.password\n })\n .then(function(response) {\n $scope.isDataLoading = false;\n\n $scope.resetForm.$setPristine();\n\n vm.user = {};\n vm.success = true;\n\n flashService.success('Your password has been reset. Please login to confirm.');\n $log.debug('LoginResetController.resetPassword-success:', response);\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n vm.valid = false;\n\n if (error.message === 'Invalid email or key.') {\n flashService.error('The token in your email link has expired, proceed to the login page to request a new email.');\n }\n else {\n flashService.error('There was an error during the activation process, please try again.');\n }\n\n $log.error('LoginResetController.resetPassword-error:', error);\n });\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('auth.login')\n .controller('LoginForgotController', LoginForgotController);\n\n function LoginForgotController($scope, $log, authService, emailService, flashService, formsService) {\n var vm = this;\n\n // ViewModel Properties\n vm.email = '';\n vm.success = false;\n\n // ViewModel Methods\n vm.isEmail = emailService.isEmail;\n vm.onSubmit = handleSubmit;\n\n // error handling utility\n $scope.hasError = formsService.hasError;\n $scope.showError = formsService.showError;\n $scope.canSave = formsService.canSave;\n\n\n // Private Methods\n // handleSubmit\n function handleSubmit() {\n $scope.isDataLoading = true;\n\n return authService.loginForgot(vm.email)\n .then(function(response) {\n $scope.loginForgotForm.$setPristine();\n\n vm.email = '';\n vm.success = true;\n\n $log.debug('loginForgot.controller-success:', response);\n flashService.info('If an account matched that address, an email will be sent with instructions.');\n }, function(error) {\n $log.error('loginForgot.controller-error:', error);\n flashService.error('Error resetting your account, please try again.');\n });\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular.module('account.bid', []);\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('account.bid')\n .controller('BidPhotosController', BidPhotosController);\n\n function BidPhotosController($state, $timeout, $log, $scope, $rootScope, $stateParams, modalService, itemRepository,\n auctionRepository, bidRepository, Notification) {\n var vm = this;\n\n // ViewModel Properties\n vm.auction = {};\n vm.bid = $stateParams.bid;\n vm.bid.item.featuredImagesUrls = [];\n vm.photoIndex = 0;\n\n // ViewModel Methods\n vm.onView = handleView;\n\n\n (function init() {\n $scope.isDataLoading = false;\n getItem();\n })();\n\n\n // Private Methods\n\n // getItem\n function getItem() {\n $scope.isDataLoading = true;\n\n return itemRepository.find(vm.bid.item.id)\n .then(function(response) {\n vm.bid.item = response;\n\n // add the main image to the array\n if (vm.bid.item.itemImageUrl) {\n vm.bid.item.featuredImagesUrls.unshift(vm.bid.item.itemImageUrl);\n }\n\n getAuction();\n\n $log.debug('BidPhotosController.getItem-success:\\n', response);\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('BidPhotosController.getItem-error:\\n', error);\n Notification.error('There was an error loading the item.');\n });\n }\n\n // getAuction\n function getAuction() {\n $log.debug('vm.bid.item:\\n', vm.bid.item);\n\n return auctionRepository.find(vm.bid.item.events[0].id)\n .then(function(response) {\n $scope.isDataLoading = false;\n\n vm.auction = response;\n\n $log.debug('BidPhotosController.getAuction-success:\\n', response);\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('BidPhotosController.getAuction-error:\\n', error);\n Notification.error('There was an error loading the auction.');\n });\n }\n\n\n // handleView\n function handleView() {\n modalService.hide(false);\n\n var params = {\n auctionSlug: vm.auction.meta.slug\n };\n\n $timeout(function() {\n $state.go('auction-detail', params);\n }, 500);\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular.module('public.pages', []);\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.pages')\n .config(pagesRouteConfig);\n\n function pagesRouteConfig($stateProvider) {\n $stateProvider\n\n .state('pages', {\n abstract: true,\n controller: 'PagesController',\n controllerAs: 'vm',\n parent: 'public',\n url: 'page',\n })\n\n .state('page-detail', {\n controller: 'PagesController',\n controllerAs: 'vm',\n templateUrl: 'app/public/pages/pages.view.html',\n parent: 'public',\n url: 'page/:pageSlug',\n })\n\n .state('page-universal', {\n controller: 'PagesController',\n controllerAs: 'vm',\n templateUrl: 'app/public/pages/pages.view.html',\n parent: 'public',\n url: \"{pageSlug:.*}\"\n });\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.pages')\n .controller('PagesController', PagesController);\n\n function PagesController($log, $scope, $state, $sce, pagesRepository, Notification, metaTagsService) {\n var vm = this;\n\n // ViewModel Properties\n vm.page = [];\n\n\n (function init() {\n $scope.isDataLoading = false;\n\n getPage();\n })();\n\n\n // Private Methods\n // getPage\n function getPage() {\n $scope.isDataLoading = true;\n\n var params = {\n slug: $state.params.pageSlug,\n };\n $log.debug('pageSlug:', params.slug);\n\n return pagesRepository.list(params)\n .then(function(response) {\n //$log.debug('PageController.getPage-response.data:', response.data);\n\n $scope.isDataLoading = false;\n\n // ensure our stateparam exists in our object array\n vm.page = response;\n vm.page.body = $sce.trustAsHtml(vm.page.body);\n metaTagsService.setMetaTag(vm.page);\n\n // if not contained in array, go redirect home\n if (!vm.page) $state.go('home');\n\n $log.debug('PageController.getPage-vm.page:', vm.page);\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('PageController.getPage-error:\\n', error);\n Notification.error('There was an error loading the page.');\n });\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular.module('public.home', []);\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.home')\n .config(homeRouteConfig);\n\n function homeRouteConfig($stateProvider, metaTagsDataProvider) {\n\n var metaTagsData = metaTagsDataProvider.getMetaTagsData();\n var defaultMeta = metaTagsData.defaultMeta;\n\n $stateProvider\n\n .state('home', {\n controller: 'HomeController',\n controllerAs: 'vm',\n parent: 'public',\n templateUrl: 'app/public/home/home.view.html',\n url: '',\n data: {\n meta: defaultMeta,\n }\n })\n\n .state('directions', {\n controller: 'HomeController',\n controllerAs: 'vm',\n templateUrl: 'app/public/home/directions/directions.view.html',\n parent: 'public',\n url: 'directions',\n data: {\n meta: Object.assign({}, defaultMeta, metaTagsData.directions),\n }\n });\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.home')\n .controller('HomeController', HomeController);\n\n function HomeController($q, $log, $scope, $rootScope, auctionRepository, categoriesRepository, highlightRepository, Notification) {\n var vm = this;\n\n // ViewModel Properties\n vm.activePanel = 0;\n vm.highlights = [];\n vm.auction = [];\n vm.auctionPast = [];\n vm.categories = [];\n\n\n (function init() {\n $scope.isDataLoading = false;\n getCategory();\n\n })();\n\n\n // Private Methods\n // getCategory\n function getCategory() {\n $scope.isDataLoading = true;\n\n return categoriesRepository.list()\n .then(function(response) {\n //$log.debug('HomeController.getCategory-success:\\n', response);\n\n _.forEach(response.data, function(item, i) {\n vm.categories.push({\n 'id': item._id,\n 'name': item.name,\n 'slug': item.meta.slug\n });\n });\n\n getHighlights();\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('HomeController.getCategory-error:\\n', error);\n Notification.error('There was an error loading the categories.');\n });\n }\n\n // isAuctionPast\n function isAuctionPast(auction) {\n return auction.startDates.length > 0 && auction.startDates.every(function(date) {\n return moment(date).diff(moment(), 'minutes') < 0;\n });\n }\n\n // getHighlights\n function getHighlights() {\n $scope.isDataLoading = true;\n\n return highlightRepository.list()\n .then(function(response) {\n $scope.isDataLoading = false;\n\n _.forEach(response, function(event, i) {\n //$log.debug('event', event.index + ': ' + event.title);\n\n vm.foundCategories = [];\n\n _.forEach(event.categories, function(cat) {\n //$log.debug('vm.categories', vm.categories);\n vm.foundCategories.push(_.find(vm.categories, {id: cat}));\n });\n\n\n if (event.type === $rootScope.HIGHLIGHT_TYPE.VIDEO) {\n event.video = event.url;\n delete event.url;\n }\n\n vm.highlights.push({\n 'id': event._id,\n 'url': event.url,\n 'title': event.title,\n 'categories': vm.foundCategories,\n 'foreignId': event.foreignId,\n 'type': event.type,\n 'imageUrl': event.imageUrl,\n 'video': event.video,\n 'dates': event.dates,\n 'index': event.index\n });\n });\n\n getAuctions();\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('HomeController.getHighlights-error:\\n', error);\n Notification.error('There was an error loading the highlights.');\n });\n }\n\n // getAuctions\n function getAuctions() {\n $scope.isDataLoading = true;\n\n return auctionRepository.list()\n .then(function(response) {\n\n $scope.isDataLoading = false;\n\n _.forEach(response.data, function(event, i) {\n vm.foundCategories = [];\n\n _.forEach(event.categories, function(cat) {\n vm.foundCategories.push(_.find(vm.categories, {id: cat.id}));\n });\n\n if (event.state.indexOf('published') > -1) {\n\n vm.auction.push({\n 'id': event._id,\n 'title': event.title,\n 'categories': vm.foundCategories,\n 'eventImageUrl': event.eventImageUrl,\n 'startDates': event.startDates.sort(function(a, b) {\n return a < b ? 1 : -1;\n }),\n 'state': event.state,\n 'meta': event.meta\n });\n }\n });\n\n vm.auction = vm.auction.sort(function(a, b) {\n return (a.startDates[0] < b.startDates[0]) ? 1 : -1;\n });\n\n vm.auctionPast = vm.auction.filter(isAuctionPast);\n\n //$log.debug('AuctionController.vm.auction-filtered:\\n', vm.auction);\n\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('AuctionController.getAuctions-error:\\n', error);\n Notification.error('There was an error loading the auctions.');\n });\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular.module('public.category', []);\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.category')\n .factory('categoryService', categoryService);\n\n function categoryService($log, API, apiHelperService) {\n return {\n getSpecialtyAuction: getSpecialtyAuction\n };\n\n function getSpecialtyAuction(id) {\n var req = {\n method: 'GET',\n url: API.BASE_URL + API.EVENTS + '/' + id,\n };\n\n return apiHelperService.sendHTTPRequest(req);\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.category')\n .config(categoryRouteConfig);\n\n function categoryRouteConfig($stateProvider) {\n $stateProvider\n\n .state('categories', {\n url: 'category',\n parent: 'public',\n abstract: true,\n controller: 'CategoryController',\n controllerAs: 'vm'\n })\n\n .state('category-detail', {\n url: 'category/:categorySlug',\n parent: 'public',\n controller: 'CategoryController',\n controllerAs: 'vm',\n templateUrl: 'app/public/category/category.view.html',\n });\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.category')\n .controller('CategoryController', CategoryController);\n\n function CategoryController($q, $log, $scope, $state, $stateParams, auctionRepository, categoriesRepository, specialtiesRepository, Notification, metaTagsService) {\n var vm = this;\n\n // ViewModel Properties\n vm.category = {};\n vm.categories = [];\n vm.specialty = {};\n vm.auctionNext = [];\n vm.auctionPast = [];\n vm.auction = [];\n\n (function init() {\n $scope.isDataLoading = false;\n getCategory();\n })();\n\n\n // Private Methods\n // getCategory\n function getCategory() {\n $scope.isDataLoading = true;\n\n return categoriesRepository.list()\n .then(function(response) {\n $log.debug('CategoryController.getCategory-success:\\n', response);\n\n vm.categories = response.data;\n vm.category = response.data.filter(function(item) {\n return item.meta.slug.toLowerCase() === $stateParams.categorySlug.toLowerCase();\n })[0];\n\n getSpecialties();\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('CategoryController.getCategory-error:\\n', error);\n Notification.error('There was an error loading the category.');\n });\n }\n\n\n // getSpecialties\n function getSpecialties() {\n $scope.isDataLoading = true;\n\n return specialtiesRepository.list()\n .then(function(response) {\n $log.debug('CategoryController.getSpecialties-success:\\n', response);\n\n // filter specialties using categoryId\n vm.specialty = response.data.filter(function(item) {\n return item.categories.filter(function(category) {\n return category.id === vm.category._id;\n }).length > 0;\n })[0];\n\n if (vm.specialty.events) {\n vm.specialty.events.forEach(function(event) {\n event.event.categories = event.event.categories.map(function(c) {\n return vm.categories.find(function(cat) {\n return cat._id == c.id;\n });\n });\n vm.specialty.mainImage = event.event.eventImageUrl;\n });\n }\n\n metaTagsService.setMetaTag(vm.specialty);\n\n // if not contained in array, go redirect home\n if (!vm.specialty) {\n return $state.go('home');\n }\n\n getAuctions();\n\n $scope.isDataLoading = false;\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('CategoryController.getSpecialties-error:\\n', error);\n Notification.error('There was an error loading the specialties.');\n });\n }\n\n // isAuctionNext\n function isAuctionNext(auction) {\n if (auction.startDates.length == 0) {\n return true;\n }\n return auction.startDates.some(function(date) {\n return moment(date).diff(moment(), 'minutes') > 0;\n });\n }\n\n // isAuctionPast\n function isAuctionPast(auction) {\n return auction.startDates.length > 0 && auction.startDates.every(function(date) {\n return moment(date).diff(moment(), 'minutes') < 0;\n });\n }\n\n // getAuctions\n function getAuctions() {\n $scope.isDataLoading = true;\n\n return auctionRepository.list()\n .then(function(response) {\n\n $scope.isDataLoading = false;\n\n _.forEach(response.data, function(event, i) {\n vm.foundCategories = [];\n //$log.debug('CategoryController.event:\\n', event);\n\n _.forEach(event.categories, function(cat) {\n //vm.foundCategories.push(_.find(vm.category, {id: cat.id}));\n\n if (vm.category._id===cat.id) {\n vm.auction.push({\n 'id': event._id,\n 'title': event.title,\n 'categories': vm.foundCategories,\n 'eventImageUrl': event.eventImageUrl,\n 'startDates': event.startDates.sort(function(a, b) {\n return a < b ? 1 : -1;\n }),\n 'state': event.state,\n 'meta': event.meta\n });\n }\n });\n });\n\n vm.auction = vm.auction.sort(function(a, b) {\n return (a.startDates[0] < b.startDates[0]) ? 1 : -1;\n });\n\n vm.auctionNext = vm.auction.filter(isAuctionNext);\n vm.auctionPast = vm.auction.filter(isAuctionPast);\n\n // $log.debug('CategoryController.auctionNext:', vm.auctionNext);\n // $log.debug('CategoryController.auctionPast:', vm.auctionPast);\n // $log.debug('CategoryController.getAuctions-success:\\n', response);\n $log.debug('CategoryController.vm.auction-filtered:\\n', vm.auction);\n\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('CategoryController.getAuctions-error:\\n', error);\n Notification.error('There was an error loading the auctions.');\n });\n }\n\n }\n})();\n\n(function() {\n 'use strict';\n\n angular.module('public.blog', []);\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.blog')\n .factory('blogService', blogService);\n\n function blogService($log, API, apiHelperService) {\n return {\n getBlogPosts: getBlogPosts,\n getBlogPostDetail: getBlogPostDetail,\n getCategories: getCategories,\n };\n\n function getBlogPosts(sort) {\n var req = {\n method: 'GET',\n url: API.BASE_URL + API.BLOG,\n params: {\n sort: sort,\n limit: 100,\n },\n };\n\n return apiHelperService.sendHTTPRequest(req);\n }\n\n function getBlogPostDetail(id) {\n var req = {\n method: 'GET',\n url: API.BASE_URL + API.BLOG + '/' + id,\n };\n\n return apiHelperService.sendHTTPRequest(req);\n }\n\n function getCategories() {\n var req = {\n method: 'GET',\n url: API.BASE_URL + API.CATEGORIES,\n };\n\n return apiHelperService.sendHTTPRequest(req);\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.blog')\n .config(blogRouteConfig);\n\n function blogRouteConfig($stateProvider, metaTagsDataProvider) {\n\n var metaTagsData = metaTagsDataProvider.getMetaTagsData();\n var defaultMeta = metaTagsData.defaultMeta;\n\n $stateProvider\n\n .state('blog', {\n controller: 'BlogController',\n controllerAs: 'vm',\n parent: 'public',\n templateUrl: 'app/public/blog/blog.view.html',\n url: 'blog',\n data: {\n meta: Object.assign({}, defaultMeta, metaTagsData.blog)\n }\n })\n\n .state('blog-detail', {\n controller: 'BlogDetailController',\n controllerAs: 'vm',\n parent: 'public',\n templateUrl: 'app/public/blog/blog-detail/blog-detail.view.html',\n url: 'blog/:id',\n });\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.blog')\n .controller('BlogController', BlogController);\n\n function BlogController($sce, blogService) {\n var vm = this;\n\n vm.posts = [];\n vm.categories = [];\n\n (function init() {\n blogService.getCategories().then(function(response) {\n if (response.data) {\n // $log.debug('getCategories--response.data', response.data);\n\n _.forEach(response.data, function(item, i) {\n vm.categories.push({\n 'id': item._id,\n 'name': item.name,\n });\n });\n\n // $log.debug('vm.categories', vm.categories);\n }\n });\n\n blogService.getBlogPosts('-created').then(function(response) {\n if (response.data) {\n // $log.debug('getBlogPosts--response.data', response.data);\n\n _.forEach(response.data, function(item, i) {\n // $log.debug('item', item);\n\n vm.foundCategories = [];\n\n _.forEach(item.categories, function(cat) {\n vm.foundCategories.push(_.find(vm.categories, {id: cat.id}));\n });\n\n // $log.debug('vm.foundCategories', vm.foundCategories);\n\n vm.posts.push({\n 'id': item._id,\n 'title': item.title,\n 'categories': vm.foundCategories,\n 'image': item.headerUrl,\n 'body': $sce.trustAsResourceUrl(item.body),\n });\n });\n\n // $log.debug('vm.posts', vm.posts);\n }\n });\n })();\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.auction')\n .config(auctionRouteConfig);\n\n function auctionRouteConfig($stateProvider, metaTagsDataProvider) {\n\n var metaTagsData = metaTagsDataProvider.getMetaTagsData();\n var defaultMeta = metaTagsData.defaultMeta;\n\n $stateProvider\n\n .state('auction', {\n parent: 'public',\n url: 'auctions',\n templateUrl: 'app/public/auction/auction.view.html',\n controller: 'AuctionController',\n controllerAs: 'vm',\n data: {\n meta: Object.assign({}, defaultMeta, metaTagsData.auctions),\n }\n })\n\n .state('auction-detail', {\n parent: 'public',\n url: 'auctions/:auctionSlug?limit',\n templateUrl: 'app/public/auction/auction-detail/auction-detail.view.html',\n controller: 'AuctionDetailController',\n controllerAs: 'vm',\n })\n\n .state('auction-item', {\n parent: 'auction-detail',\n url: '/item/:itemSlug',\n onEnter: function($state, $stateParams, modalService) {\n if ($stateParams.itemSlug && typeof $stateParams.itemSlug === 'string') {\n modalService.show(\n 'app/public/auction/auction-detail/item/item.modal.html',\n 'ItemController'\n );\n }\n else {\n var params = {\n auctionSlug: $stateParams.auctionSlug,\n };\n\n $state.go('auction-detail', params);\n }\n },\n params: {\n itemSlug: null,\n },\n });\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.auction')\n .controller('AuctionController', AuctionController);\n\n function AuctionController($q, $log, $scope, auctionRepository, categoriesRepository, Notification) {\n var vm = this;\n\n // ViewModel Properties\n vm.activePanel = 0;\n vm.auction = [];\n vm.auctionNext = [];\n vm.auctionPast = [];\n vm.categories = [];\n\n\n var promises = [\n getCategory(),\n getAuctions()\n ];\n\n (function init() {\n $scope.isDataLoading = false;\n return $q.all(promises);\n\n })();\n\n // Private Methods\n\n // getCategory\n function getCategory() {\n $scope.isDataLoading = true;\n\n return categoriesRepository.list()\n .then(function(response) {\n //$log.debug('AuctionController.getCategory-success:\\n', response);\n\n _.forEach(response.data, function(item, i) {\n vm.categories.push({\n 'id': item._id,\n 'name': item.name,\n 'slug': item.meta.slug\n });\n });\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('AuctionController.getCategory-error:\\n', error);\n Notification.error('There was an error loading the categories.');\n });\n }\n\n // isAuctionNext\n function isAuctionNext(auction) {\n if (auction.startDates.length == 0) {\n return true;\n }\n return auction.startDates.some(function(date) {\n return moment(date).diff(moment(), 'minutes') > 0;\n });\n }\n\n // isAuctionPast\n function isAuctionPast(auction) {\n return auction.startDates.length > 0 && auction.startDates.every(function(date) {\n return moment(date).diff(moment(), 'minutes') < 0;\n });\n }\n\n // getAuctions\n function getAuctions() {\n $scope.isDataLoading = true;\n\n return auctionRepository.list()\n .then(function(response) {\n\n $scope.isDataLoading = false;\n\n _.forEach(response.data, function(event, i) {\n\n vm.foundCategories = [];\n\n _.forEach(event.categories, function(cat) {\n vm.foundCategories.push(_.find(vm.categories, {id: cat.id}));\n });\n\n vm.auction.push({\n 'id': event._id,\n 'title': event.title,\n 'categories': vm.foundCategories,\n 'eventImageLink': event.eventImageLink,\n 'eventImageUrl': event.eventImageUrl,\n 'startDates': event.startDates.sort(function(a, b) {\n return a < b ? 1 : -1;\n }),\n 'state': event.state,\n 'meta': event.meta\n });\n });\n\n vm.auction = vm.auction.sort(function(a, b) {\n return (a.startDates[0] < b.startDates[0]) ? 1 : -1;\n });\n\n vm.auctionNext = vm.auction.filter(isAuctionNext).reverse();\n vm.auctionPast = vm.auction.filter(isAuctionPast);\n\n // $log.debug('AuctionController.auctionNext:', vm.auctionNext);\n // $log.debug('AuctionController.auctionPast:', vm.auctionPast);\n // $log.debug('AuctionController.getAuctions-success:\\n', response);\n // $log.debug('AuctionController.vm.auction-filtered:\\n', vm.auction);\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('AuctionController.getAuctions-error:\\n', error);\n Notification.error('There was an error loading the auctions.');\n });\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular.module('public.assets', []);\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.assets')\n .config(pagesRouteConfig);\n\n function pagesRouteConfig($stateProvider) {\n $stateProvider\n\n .state('assets', {\n abstract: true,\n controller: 'AssetsController',\n controllerAs: 'vm',\n parent: 'public',\n url: 'asset',\n })\n\n .state('assets-detail', {\n controller: 'AssetsController',\n controllerAs: 'vm',\n templateUrl: 'app/public/assets/assets.view.html',\n parent: 'public',\n url: 'asset/:assetSlug',\n });\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.assets')\n .controller('AssetsController', AssetsController);\n\n function AssetsController($log, $scope, $state, $http, assetsRepository, Notification, metaTagsService) {\n var vm = this;\n\n // ViewModel Properties\n vm.asset = [];\n\n (function init() {\n $scope.isDataLoading = false;\n\n getAsset();\n })();\n\n\n // Private Properties\n var assetSlug = $state.params.assetSlug;\n\n // Private Methods\n // getAsset\n function getAsset() {\n $scope.isDataLoading = true;\n\n $log.debug('assetSlug:', assetSlug);\n\n return assetsRepository.list()\n .then(function(response) {\n //$log.debug('assetController.getAsset-response.data:', response.data);\n\n $scope.isDataLoading = false;\n\n // ensure our stateparam exists in our object array\n vm.asset = _.find(response.data, {meta: {slug: assetSlug}});\n metaTagsService.setMetaTag(vm.asset);\n\n // if not contained in array, go redirect home\n if (!vm.asset) $state.go('home');\n\n var isGoogleDoc = /^https:\\/\\/docs\\.google\\.com/.test(vm.asset.assetUrl);\n vm.isPdf = /\\.pdf$/.test(vm.asset.assetUrl) || isGoogleDoc;\n vm.isDoc = /\\.(doc|docx)$/.test(vm.asset.assetUrl);\n\n if (vm.isDoc) {\n $http.get(vm.asset.assetUrl, {\n responseType: 'arraybuffer'\n })\n .then(function(response) {\n var arrayBuffer = new Uint8Array(response.data);\n mammoth.convertToHtml({arrayBuffer: arrayBuffer})\n .then(function(result) {\n vm.html = result.value;\n $scope.$apply();\n })\n .done();\n });\n }\n\n $log.debug('AssetsController.getAsset-vm.asset:', vm.asset);\n })\n .catch(function(error) {\n $scope.isDataLoading = false;\n\n $log.error('AssetsController.getAsset-error:\\n', error);\n Notification.error('There was an error loading the asset.');\n });\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.about')\n .config(aboutRouteConfig);\n\n function aboutRouteConfig($stateProvider, metaTagsDataProvider) {\n\n var metaTagsData = metaTagsDataProvider.getMetaTagsData();\n var defaultMeta = metaTagsData.defaultMeta;\n\n $stateProvider\n\n .state('about', {\n controller: 'AboutController',\n controllerAs: 'vm',\n parent: 'public',\n templateUrl: 'app/public/about/about.view.html',\n url: 'about',\n data: {\n meta: Object.assign({}, defaultMeta, metaTagsData.about)\n }\n })\n\n .state('person', {\n data: {\n bodyClass: 'backdrop-dark',\n },\n onEnter: function($state, $stateParams, modalService) {\n if ($stateParams.person && typeof $stateParams.person._id === 'string') {\n modalService.show(\n 'app/public/about/team/team.modal.html',\n 'TeamController'\n );\n }\n else {\n $state.go('about');\n }\n },\n params: {\n person: null,\n },\n parent: 'about',\n url: '/:personSlug',\n });\n }\n})();\n\n(function () {\n \"use strict\";\n\n angular\n .module(\"public.about\")\n .controller(\"AboutController\", AboutController);\n\n function AboutController(\n $log,\n $scope,\n $state,\n $sce,\n teamRepository,\n pagesRepository,\n Notification\n ) {\n var vm = this;\n\n // ViewModel Properties\n vm.persons = [];\n\n (function init() {\n getPage();\n getTeam();\n })();\n\n // Private Methods\n function getPage() {\n $scope.isDataLoading = true;\n\n return pagesRepository\n .list()\n .then(function (response) {\n //$log.debug('PageController.getPage-response.data:', response.data);\n\n $scope.isDataLoading = false;\n\n // ensure our stateparam exists in our object array\n vm.page = _.find(response.data, {\n meta: { slug: \"about\" },\n });\n vm.page.body = $sce.trustAsHtml(vm.page.body);\n\n // if not contained in array, go redirect home\n if (!vm.page) $state.go(\"home\");\n })\n .catch(function (error) {\n $scope.isDataLoading = false;\n\n $log.error(\"AboutController.getPage-error:\\n\", error);\n Notification.error(\n \"There was an error loading the about page.\"\n );\n });\n }\n\n // getTeam\n function getTeam() {\n $scope.isDataLoading = true;\n\n return teamRepository\n .list()\n .then(function (response) {\n $scope.isDataLoading = false;\n\n vm.persons = response.data;\n\n // add slug property\n vm.persons = vm.persons.map(function (item) {\n item.slug = item.name\n .replace(/\\s+/g, \"-\")\n .replace(/[^A-Za-z0-9-]+/g, \"\")\n .toLowerCase();\n return item;\n });\n\n $log.debug(\"AboutController.getTeam-success:\\n\", response);\n $log.debug(\n \"AboutController.vm.persons-reorder:\\n\",\n vm.persons\n );\n })\n .catch(function (error) {\n $scope.isDataLoading = false;\n\n $log.error(\"AboutController.getTeam-error:\\n\", error);\n Notification.error(\"There was an error loading the team.\");\n });\n }\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.services', [\n 'app.services.auth',\n 'app.services.repository',\n 'app.services.utility',\n 'app.services.metatags'\n ]);\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('public.assets')\n .filter('trustUrl', function($sce) {\n return function(val) {\n return $sce.trustAsResourceUrl(val);\n };\n });\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.filters', []);\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.filters')\n .filter('phonenumberFilter', phonenumberFilter);\n\n function phonenumberFilter() {\n return function(tel) {\n if (!tel) {\n return '';\n }\n\n var value = tel.toString().trim().replace(/^\\+/, '');\n\n if (value.match(/[^0-9]/)) {\n return tel;\n }\n\n var country;\n var city;\n var number;\n\n switch (value.length) {\n case 10: // +1PPP####### -> C (PPP) ###-####\n country = 1;\n city = value.slice(0, 3);\n number = value.slice(3);\n break;\n\n case 11: // +CPPP####### -> CCC (PP) ###-####\n country = value[0];\n city = value.slice(1, 4);\n number = value.slice(4);\n break;\n\n case 12: // +CCCPP####### -> CCC (PP) ###-####\n country = value.slice(0, 3);\n city = value.slice(3, 5);\n number = value.slice(5);\n break;\n\n case 13: // +CCCPPP####### -> CCC (PPP) ###-####\n country = value.slice(0, 3);\n city = value.slice(3, 6);\n number = value.slice(6);\n break;\n\n default:\n return tel;\n }\n\n if (country == 1) {\n country = '';\n }\n\n number = number.slice(0, 3) + '-' + number.slice(3);\n\n return (country + ' (' + city + ') ' + number).trim();\n };\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.filters')\n .filter('gtEventStartDate', gtEventStartDate);\n\n function gtEventStartDate() {\n return function( items, value ) {\n var filteredItems = [];\n\n angular.forEach(items, function( item, cnt ) {\n // if ( cnt > value ) {\n\n // to add event, must be past 3rd in index AND date must be current\n var today = new Date();\n var eventStartDates = item.startDates.map(function(date) {\n return new Date(date);\n });\n\n if (eventStartDates.some(function(date) {\n return date > today;\n })) {\n filteredItems.push(item);\n }\n // }\n });\n\n return filteredItems;\n };\n }\n})();\n\n\n/* function gtEventStartDate() {\n return function( items, value ) {\n var filteredItems = [];\n\n angular.forEach(items, function(item, cnt) {\n var today = new Date();\n var eventStartDates = item.startDates.map(function(date) {\n return new Date(date);\n });\n\n if (eventStartDates.some(function(date) {\n return date > today;\n })) {\n if ((value == 0) && (cnt > 3)) {\n // if no value provided, return first 3 (upcoming) events past today\n filteredItems.push(item);\n }\n\n if ((value > 0) && (cnt < 2)) {\n // must be greater than 3rd in index AND date must be current\n filteredItems.push(item);\n }\n }\n });\n\n return filteredItems;\n };\n} */\n\n(function() {\n 'use strict';\n\n angular\n .module('app.filters')\n .filter('formatTime', formatTime);\n\n function formatTime() {\n return function(timestamp, withtime) {\n if (!timestamp) {\n return;\n }\n\n if (withtime) {\n return moment(timestamp).format('lll'); // Jan 12, 2017\n }\n\n return moment(timestamp).format('ll'); // Jan 12, 2017\n };\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.filters')\n .filter('capitalize', capitalize);\n\n function capitalize() {\n return function(input, scope) {\n if (input != null) {\n if (input.length >= 1) {\n input = input.toLowerCase();\n return input.substring(0, 1).toUpperCase() + input.substring(1);\n }\n }\n };\n }\n})();\n\n(function() {\n 'use strict';\n\n angular\n .module('app.filters')\n .filter('addTargetBlank', addTargetBlank);\n\n function addTargetBlank(ENV_VARS) {\n return function(content) {\n var tree = angular.element('
Questions? Call or text us anytime at 210-865-8648, or email rob@vogtauction.com.
Vogt Auction Galleries is located at:
7233 Blanco Road in San Antonio, Texas
Hours: Monday-Friday 10am-6pm
Phone: (210) 822-6155
Fax: (210) 821-5821
Coming from the north (Austin, New Braunfels, Dallas) Take I-35 south towards San Antonio. Exit onto Loop I-410 West (Exit #166). Continue for 7 miles, then exit at Blanco (Exit #20A). Turn right onto Blanco, drive 0.3 miles up Blanco heading north - we\\'re on the left at 7233 Blanco Rd.
Coming from the Hill Country on I- 10 (Fredericksburg, Kerrville, Comfort, Boerne) Take I - 10 east towards San Antonio. Exit onto Loop 410 East (Exit #564). Continue for 4 miles, then exit at Blanco (Exit #20A). Turn left onto Blanco, drive 0.3 miles up Blanco heading north - we\\'re on the left at 7233 Blanco Rd.
Coming from the Hill Country on 281 (Marble Falls, Johnson City, Blanco) Take US-281 south towards San Antonio. Exit onto Loop 410 West (near San Antonio Intl. Airport). Continue down Loop 410 1.5 miles, then exit at Blanco (Exit #20A). Turn left and drive 0.3 miles up Blanco heading north - we\\'re on the left at 7233 Blanco Rd.
Coming from the east (Houston) Take I-10 west towards San Antonio. Exit onto Loop I-410 North (Exit #581). Continue on 410 for 13 miles, then exit at Blanco (Exit #20A). Turn left onto Blanco, drive 0.3 miles up Blanco heading north – we\\'re on the left at 7233 Blanco Rd.
Coming from the south (Corpus Christi, Rio Grande Valley, Laredo) From Corpus Christi or the Valley, take I-37 north towards San Antonio. From Laredo, take I-35 north towards San Antonio. Laredo drivers exit onto I-37/281 North at exit #158 (near downtown San Antonio). Continue north on I-37/281 for 5 miles, exiting onto Loop I-410 West (near San Antonio Intl. Airport). Continue down Loop 410 1.5 miles, then exit at Blanco (Exit #20A). Turn left and drive 0.3 miles up Blanco heading north - we\\'re on the left at 7233 Blanco Rd.