/* eslint-disable no-return-assign, no-undef, */ // TODO: This file was created by bulk-decaffeinate. // Fix any style issues and re-enable lint. /* * decaffeinate suggestions: * DS102: Remove unnecessary code created because of implicit returns * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md */ /* COMMON CODE */ // The validity per user defines how many time a user may ba able to use the same coupon // Here are the various options for this parameter const userValidities = ['once', 'forever'] // # // Controller used in the coupon creation page // # Application.Controllers.controller('NewCouponController', ['$scope', '$state', 'Coupon', 'growl', '_t', function ($scope, $state, Coupon, growl, _t) { // # Values for the coupon currently created $scope.coupon = { active: true, type: 'percent_off' } // # Options for the validity per user $scope.validities = userValidities // # Default parameters for AngularUI-Bootstrap datepicker (used for coupon validity limit selection) $scope.datePicker = { format: Fablab.uibDateFormat, opened: false, // default: datePicker is not shown minDate: moment().toDate(), options: { startingDay: Fablab.weekStartingDay } } // # // Shows/hides the validity limit datepicker // @param $event {Object} jQuery event object // # $scope.toggleDatePicker = function ($event) { $event.preventDefault() $event.stopPropagation() return $scope.datePicker.opened = !$scope.datePicker.opened } // # // Callback to save the new coupon in $scope.coupon and redirect the user to the listing page // # return $scope.saveCoupon = () => Coupon.save({ coupon: $scope.coupon }, coupon => $state.go('app.admin.pricing') , function (err) { growl.error(_t('unable_to_create_the_coupon_check_code_already_used')) return console.error(err) }) } ]) // # // Controller used in the coupon edition page // # Application.Controllers.controller('EditCouponController', ['$scope', '$state', 'Coupon', 'couponPromise', '_t', 'growl', function ($scope, $state, Coupon, couponPromise, _t, growl) { /* PUBLIC SCOPE */ // # Used in the form to freeze unmodifiable fields $scope.mode = 'EDIT' // # Coupon to edit $scope.coupon = couponPromise // # Options for the validity per user $scope.validities = userValidities // # Mapping for validation errors $scope.errors = {} // # Default parameters for AngularUI-Bootstrap datepicker (used for coupon validity limit selection) $scope.datePicker = { format: Fablab.uibDateFormat, opened: false, // default: datePicker is not shown minDate: moment().toDate(), options: { startingDay: Fablab.weekStartingDay } } // # // Shows/hides the validity limit datepicker // @param $event {Object} jQuery event object // # $scope.toggleDatePicker = function ($event) { $event.preventDefault() $event.stopPropagation() return $scope.datePicker.opened = !$scope.datePicker.opened } // # // Callback to save the coupon's changes to the API // # $scope.updateCoupon = function () { $scope.errors = {} return Coupon.update({ id: $scope.coupon.id }, { coupon: $scope.coupon }, coupon => $state.go('app.admin.pricing') , function (err) { growl.error(_t('unable_to_update_the_coupon_an_error_occurred')) return $scope.errors = err.data }) } /* PRIVATE SCOPE */ // # // Kind of constructor: these actions will be realized first when the controller is loaded // # const initialize = function () { // parse the date if any if (couponPromise.valid_until) { return $scope.coupon.valid_until = moment(couponPromise.valid_until).toDate() } } // # !!! MUST BE CALLED AT THE END of the controller return initialize() } ])