angular .module('EssayApp.controllers') .controller('SunrisePricesController', ['$scope', '$window', '$sce', 'dataService', 'orderPriceService', 'RestorePasswordService', '$timeout', 'ngProgress', 'utils', 'I18n', ($scope, $window, $sce, dataService, orderPriceService, restorePasswordService, $timeout, ngProgress, utils, I18n) -> ngProgress.start() _customerCountry = 'US' _serializeKey = 'customer' $scope.restore_pass = restorePasswordService $scope.ready = false $scope.customer = dst_languages: [] features: preffered_writer: false writer_level: undefined extras: [] $scope.POPUPS = DST_LANGUAGES: 'dst_languages' $scope.services = [] # $scope.categories = null $scope.src_languages = [] $scope.dst_languages = [] $scope.dstLanguages = [1] $scope.dstLanguagesCount = 1 $scope.with_discount = null $scope.customermode = 'new' $scope.urgencies = [] $scope.opened = false # DEV $window.spc = $scope dataService.get_rates().then (responce) -> window.orw = responce $scope.price = orderPriceService.build() $scope.price.data = responce.data $scope.services = $scope.price.getAvailableServices() $scope.certificates = $scope.price.getAvailableCertificates() $scope.customer.service = $scope.services[0] if $scope.services?.length > 0 $scope.price.setService($scope.customer.service) $scope.customer.certificate = undefined $scope.price.setCertificate($scope.customer.certificate) # $scope.categories = $scope.price.getAvailableCategories() $scope.industries = $scope.price.getAvailableIndustries() # $scope.categories.push({title: 'Use Default', id: ''}) # $scope.industries.push({title: 'Use Default', id: ''}) # $scope.customer.industry = $scope.industries[0] # $scope.price.setIndustry($scope.customer.industry) $scope.urgencies = $scope.price.getAvailableUrgencies() # $scope.urgencies.push({title: 'Use Default', id: ''}) $scope.packages = $scope.price.data.packages $scope.customer.package = $scope.findOrUseDefault(undefined, $scope.packages) $scope.price.setPackage($scope.customer.package) # features $scope.features = preffered_writer: $scope.price.findPreferredWriterFeature() extras: $scope.price.getExtrasFeatures() writer_levels: $scope.price.getWriterLevelFeatures() $scope.customer.features.writer_level = $scope.findOrUseDefault(undefined, $scope.features.writer_levels) # $scope.customer.urgency = $scope.price.findMaxAvailableUrgency() # $scope.price.setUrgency($scope.customer.urgency) $scope.src_languages = $scope.price.getSrcLanguages() $scope.reset() ngProgress.complete() , (err) -> console.log 'Error', err ngProgress.complete() $scope.toggleOpenedState = (state = undefined) -> if angular.isUndefined(state) $scope.opened != $scope.opened else $scope.opened = state $scope.init = (options) -> $scope.customer.service = $scope.findOrUseDefault(options?.service_id, $scope.services) $scope.price.setService($scope.customer.service) $scope.customer.industry = $scope.findOrUseDefault(options?.industry_id, $scope.industries) $scope.price.setIndustry($scope.customer.industry) $scope.customer.certificate = $scope.findOrUseDefault(options?.certificate_id, $scope.certificates) $scope.price.setCertificate($scope.customer.certificate) $scope.urgencies = $scope.price.getAvailableUrgencies() $scope.customer.urgency = $scope.findOrUseDefault( options?.urgency_type_id, $scope.urgencies, $scope.price.findMaxAvailableUrgency() ) $scope.price.setUrgency($scope.customer.urgency) return false $scope.reset = (e) -> e?.preventDefault() $scope.init(angular.fromJson($('input.crm_params').val())) $scope.submit = (e, form) -> e?.preventDefault() console.log $scope.price.serializeSunrise() params = angular.toJson($scope.price.serializeSunrise()) $('input.crm_params').val(params) return false $scope.findOrUseDefault = (id, array, default_value = undefined)-> unless angular.isUndefined(id) id = parseInt(id, 10) if angular.isString(id) for item in array # return founded item return item if id == item?.id # item not found, return default if angular.isUndefined(default_value) # return first if no default_value defined array[0] else default_value $scope.setupUrgency = -> $scope.urgencies = $scope.price.getAvailableUrgencies() # $scope.urgencies.push({title: 'Use Default', id: ''}) $scope.customer.urgency = $scope.findOrUseDefault( $scope.customer.urgency?.id, $scope.urgencies, $scope.price.findMaxAvailableUrgency() ) $scope.price.setUrgency($scope.customer.urgency) $scope.$watch 'customer.service', (service) -> if service? _theme = $scope.price.theme $scope.price.setService(service) # $scope.categories = $scope.price.getAvailableCategories() $scope.industries = $scope.price.getAvailableIndustries() # $scope.categories.push({title: 'Use Default', id: ''}) # $scope.industries.push({title: 'Use Default', id: ''}) if $scope.price.theme == $scope.price.THEMES.CERTIFIED $scope.customer.certificate = $scope.findOrUseDefault($scope.customer.certificate?.id, $scope.certificates) $scope.price.setCertificate($scope.customer.certificate) else $scope.customer.certificate = undefined $scope.customer.industry = $scope.findOrUseDefault($scope.customer.industry?.id, $scope.industries) $scope.price.setIndustry($scope.customer.industry) $scope.setupUrgency() $scope.$watch 'customer.industry', (industry) -> if industry? $scope.price.setIndustry(industry) $scope.setupUrgency() $scope.$watch 'customer.certificate', (certificate) -> $scope.price?.setCertificate($scope.customer.certificate) $scope.$watch 'customer.package', (pkg) -> if pkg? $scope.price.setPackage(pkg) $scope.$watch 'customer.urgency', (urgency) -> if urgency? $scope.price.setUrgency(urgency) $scope.$watch 'customer.src_language', (language) -> if language? $scope.price.setSourceLanguage(language) $scope.dst_languages = $scope.price.getDstLanguages() $scope.customer.dst_languages = $scope.customer.dst_languages.filter (lang)-> $scope.dst_languages.filter((dst_lang)-> dst_lang.id == lang.id ).length > 0 $scope.$watch 'customer.dst_languages', (languages) -> if languages? $scope.price?.setDstLanguages(languages || []) $scope.$watch 'customer.features.writer_level', (writer_level) -> $scope.price?.toggleFeature($scope.features?.writer_levels?[0]?.feature_type_id, writer_level) false $scope.$watch 'customer.features.preffered_writer', (preffered_writer) -> $scope.price?.toggleFeature($scope.features?.preffered_writer?.feature_type_id, preffered_writer) false return $scope ])