/* 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(); } ]);