1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2024-12-05 16:24:21 +01:00
fab-manager/app/assets/javascripts/router.coffee.erb

1087 lines
41 KiB
Plaintext

angular.module('application.router', ['ui.router']).
config ['$stateProvider', '$urlRouterProvider', '$locationProvider', ($stateProvider, $urlRouterProvider, $locationProvider) ->
$locationProvider.hashPrefix('!')
$urlRouterProvider.otherwise("/")
# abstract root parents states
# these states controls the access rights to the various routes inherited from them
$stateProvider
.state 'app',
abstract: true
views:
'header':
templateUrl: '<%= asset_path "shared/header.html" %>'
'leftnav':
templateUrl: '<%= asset_path "shared/leftnav.html" %>'
controller: 'MainNavController'
'main': {}
resolve:
logoFile: ['CustomAsset', (CustomAsset) ->
CustomAsset.get({name: 'logo-file'}).$promise
]
logoBlackFile: ['CustomAsset', (CustomAsset) ->
CustomAsset.get({name: 'logo-black-file'}).$promise
]
commonTranslations: [ 'Translations', (Translations) ->
Translations.query(['app.public.common', 'app.shared.buttons', 'app.shared.elements']).$promise
]
onEnter: ['$rootScope', 'logoFile', 'logoBlackFile', ($rootScope, logoFile, logoBlackFile) ->
## Application logo
$rootScope.logo = logoFile.custom_asset
$rootScope.logoBlack = logoBlackFile.custom_asset
]
.state 'app.public',
abstract: true
.state 'app.logged',
abstract: true
data:
authorizedRoles: ['member', 'admin']
resolve:
currentUser: ['Auth', (Auth)->
Auth.currentUser()
]
onEnter: ["$state", "$timeout", "currentUser", "$rootScope", ($state, $timeout, currentUser, $rootScope)->
$rootScope.currentUser = currentUser
]
.state 'app.admin',
abstract: true
data:
authorizedRoles: ['admin']
resolve:
currentUser: ['Auth', (Auth)->
Auth.currentUser()
]
onEnter: ["$state", "$timeout", "currentUser", "$rootScope", ($state, $timeout, currentUser, $rootScope)->
$rootScope.currentUser = currentUser
]
# main pages
.state 'app.public.about',
url: '/about'
views:
'content@':
templateUrl: '<%= asset_path "shared/about.html" %>'
controller: 'AboutController'
resolve:
translations: [ 'Translations', (Translations) ->
Translations.query('app.public.about').$promise
]
.state 'app.public.home',
url: '/?reset_password_token'
views:
'main@':
templateUrl: '<%= asset_path "home.html" %>'
controller: 'HomeController'
resolve:
lastMembersPromise: ['Member', (Member)->
Member.lastSubscribed(limit: 4).$promise
]
lastProjectsPromise: ['Project', (Project)->
Project.lastPublished().$promise
]
upcomingEventsPromise: ['Event', (Event)->
Event.upcoming(limit: 3).$promise
]
homeBlogpostPromise: ['Setting', (Setting)->
Setting.get(name: 'home_blogpost').$promise
]
twitterNamePromise: ['Setting', (Setting)->
Setting.get(name: 'twitter_name').$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query('app.public.home').$promise
]
# profile completion (SSO import passage point)
.state 'app.logged.profileCompletion',
url: '/profile_completion'
views:
'main@':
templateUrl: '<%= asset_path "profile/complete.html"%>'
controller: 'CompleteProfileController'
resolve:
settingsPromise: ['Setting', (Setting)->
Setting.query(names: "['fablab_name', 'name_genre']").$promise
]
activeProviderPromise: ['AuthProvider', (AuthProvider) ->
AuthProvider.active().$promise
]
groupsPromise: ['Group', (Group)->
Group.query().$promise
]
cguFile: ['CustomAsset', (CustomAsset) ->
CustomAsset.get({name: 'cgu-file'}).$promise
]
memberPromise: ['Member', 'currentUser', (Member, currentUser)->
Member.get(id: currentUser.id).$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.logged.profileCompletion', 'app.shared.user']).$promise
]
# dashboard
.state 'app.logged.dashboard',
abstract: true
url: '/dashboard'
resolve:
memberPromise: ['Member', 'currentUser', (Member, currentUser)->
Member.get(id: currentUser.id).$promise
]
.state 'app.logged.dashboard.profile',
url: '/profile'
views:
'main@':
templateUrl: '<%= asset_path "dashboard/profile.html" %>'
controller: 'DashboardController'
resolve:
translations: [ 'Translations', (Translations) ->
Translations.query(['app.logged.dashboard.profile', 'app.shared.public_profile']).$promise
]
.state 'app.logged.dashboard.settings',
url: '/settings'
views:
'main@':
templateUrl: '<%= asset_path "dashboard/settings.html" %>'
controller: 'EditProfileController'
resolve:
groups: ['Group', (Group)->
Group.query().$promise
]
activeProviderPromise: ['AuthProvider', (AuthProvider) ->
AuthProvider.active().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.logged.dashboard.settings', 'app.shared.user']).$promise
]
.state 'app.logged.dashboard.projects',
url: '/projects'
views:
'main@':
templateUrl: '<%= asset_path "dashboard/projects.html" %>'
controller: 'DashboardController'
resolve:
translations: [ 'Translations', (Translations) ->
Translations.query('app.logged.dashboard.projects').$promise
]
.state 'app.logged.dashboard.trainings',
url: '/trainings'
views:
'main@':
templateUrl: '<%= asset_path "dashboard/trainings.html" %>'
controller: 'DashboardController'
resolve:
translations: [ 'Translations', (Translations) ->
Translations.query('app.logged.dashboard.trainings').$promise
]
.state 'app.logged.dashboard.events',
url: '/events'
views:
'main@':
templateUrl: '<%= asset_path "dashboard/events.html" %>'
controller: 'DashboardController'
resolve:
translations: [ 'Translations', (Translations) ->
Translations.query('app.logged.dashboard.events').$promise
]
.state 'app.logged.dashboard.invoices',
url: '/invoices'
views:
'main@':
templateUrl: '<%= asset_path "dashboard/invoices.html" %>'
controller: 'DashboardController'
resolve:
translations: [ 'Translations', (Translations) ->
Translations.query('app.logged.dashboard.invoices').$promise
]
.state 'app.logged.dashboard.wallet',
url: '/wallet'
views:
'main@':
templateUrl: '<%= asset_path "dashboard/wallet.html" %>'
controller: 'WalletController'
resolve:
walletPromise: ['Wallet', 'currentUser', (Wallet, currentUser)->
Wallet.getWalletByUser(user_id: currentUser.id).$promise
]
transactionsPromise: ['Wallet', 'walletPromise', (Wallet, walletPromise)->
Wallet.transactions(id: walletPromise.id).$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.shared.wallet']).$promise
]
# members
.state 'app.logged.members_show',
url: '/members/:id'
views:
'main@':
templateUrl: '<%= asset_path "members/show.html" %>'
controller: 'ShowProfileController'
resolve:
memberPromise: ['$stateParams', 'Member', ($stateParams, Member)->
Member.get(id: $stateParams.id).$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.logged.members_show', 'app.shared.public_profile']).$promise
]
.state 'app.logged.members',
url: '/members'
views:
'main@':
templateUrl: '<%= asset_path "members/index.html" %>'
controller: 'MembersController'
resolve:
membersPromise: ['Member', (Member)->
Member.query({requested_attributes:'[profile]', page: 1, size: 10}).$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query('app.logged.members').$promise
]
# projects
.state 'app.public.projects_list',
url: '/projects?q&page&theme_id&component_id&machine_id&from&whole_network'
views:
'main@':
templateUrl: '<%= asset_path "projects/index.html.erb" %>'
controller: 'ProjectsController'
resolve:
themesPromise: ['Theme', (Theme)->
Theme.query().$promise
]
componentsPromise: ['Component', (Component)->
Component.query().$promise
]
machinesPromise: ['Machine', (Machine)->
Machine.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query('app.public.projects_list').$promise
]
.state 'app.logged.projects_new',
url: '/projects/new'
views:
'main@':
templateUrl: '<%= asset_path "projects/new.html" %>'
controller: 'NewProjectController'
resolve:
allowedExtensions: ['Project', (Project)->
Project.allowedExtensions().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.logged.projects_new', 'app.shared.project']).$promise
]
.state 'app.public.projects_show',
url: '/projects/:id'
views:
'main@':
templateUrl: '<%= asset_path "projects/show.html" %>'
controller: 'ShowProjectController'
resolve:
projectPromise: ['$stateParams', 'Project', ($stateParams, Project)->
Project.get(id: $stateParams.id).$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query('app.public.projects_show').$promise
]
.state 'app.logged.projects_edit',
url: '/projects/:id/edit'
views:
'main@':
templateUrl: '<%= asset_path "projects/edit.html" %>'
controller: 'EditProjectController'
resolve:
projectPromise: ['$stateParams', 'Project', ($stateParams, Project)->
Project.get(id: $stateParams.id).$promise
]
allowedExtensions: ['Project', (Project)->
Project.allowedExtensions().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.logged.projects_edit', 'app.shared.project']).$promise
]
# machines
.state 'app.public.machines_list',
url: '/machines'
views:
'main@':
templateUrl: '<%= asset_path "machines/index.html.erb" %>'
controller: 'MachinesController'
resolve:
machinesPromise: ['Machine', (Machine)->
Machine.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.public.machines_list', 'app.shared.training_reservation_modal', 'app.shared.request_training_modal']).$promise
]
.state 'app.admin.machines_new',
url: '/machines/new'
views:
'main@':
templateUrl: '<%= asset_path "machines/new.html" %>'
controller: 'NewMachineController'
resolve:
translations: [ 'Translations', (Translations) ->
Translations.query(['app.admin.machines_new', 'app.shared.machine']).$promise
]
.state 'app.public.machines_show',
url: '/machines/:id'
views:
'main@':
templateUrl: '<%= asset_path "machines/show.html" %>'
controller: 'ShowMachineController'
resolve:
machinePromise: ['Machine', '$stateParams', (Machine, $stateParams)->
Machine.get(id: $stateParams.id).$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.public.machines_show', 'app.shared.training_reservation_modal', 'app.shared.request_training_modal']).$promise
]
.state 'app.logged.machines_reserve',
url: '/machines/:id/reserve'
views:
'main@':
templateUrl: '<%= asset_path "machines/reserve.html" %>'
controller: 'ReserveMachineController'
resolve:
plansPromise: ['Plan', (Plan)->
Plan.query().$promise
]
groupsPromise: ['Group', (Group)->
Group.query().$promise
]
machinePromise: ['Machine', '$stateParams', (Machine, $stateParams)->
Machine.get(id: $stateParams.id).$promise
]
settingsPromise: ['Setting', (Setting)->
Setting.query(names: "['machine_explications_alert',
'booking_window_start',
'booking_window_end',
'booking_move_enable',
'booking_move_delay',
'booking_cancel_enable',
'booking_cancel_delay',
'subscription_explications_alert']").$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.logged.machines_reserve', 'app.shared.plan_subscribe', 'app.shared.member_select',
'app.shared.stripe', 'app.shared.valid_reservation_modal', 'app.shared.confirm_modify_slot_modal',
'app.shared.wallet', 'app.shared.coupon_input']).$promise
]
.state 'app.admin.machines_edit',
url: '/machines/:id/edit'
views:
'main@':
templateUrl: '<%= asset_path "machines/edit.html" %>'
controller: 'EditMachineController'
resolve:
machinePromise: ['Machine', '$stateParams', (Machine, $stateParams)->
Machine.get(id: $stateParams.id).$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.admin.machines_edit', 'app.shared.machine']).$promise
]
# trainings
.state 'app.public.trainings_list',
url: '/trainings'
views:
'main@':
templateUrl: '<%= asset_path "trainings/index.html.erb" %>'
controller: 'TrainingsController'
resolve:
trainingsPromise: ['Training', (Training)->
Training.query({ public_page: true }).$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.public.trainings_list']).$promise
]
.state 'app.public.training_show',
url: '/trainings/:id'
views:
'main@':
templateUrl: '<%= asset_path "trainings/show.html" %>'
controller: 'ShowTrainingController'
resolve:
trainingPromise: ['Training', '$stateParams', (Training, $stateParams)->
Training.get({id: $stateParams.id}).$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.public.training_show']).$promise
]
.state 'app.logged.trainings_reserve',
url: '/trainings/:id/reserve'
views:
'main@':
templateUrl: '<%= asset_path "trainings/reserve.html" %>'
controller: 'ReserveTrainingController'
resolve:
explicationAlertPromise: ['Setting', (Setting)->
Setting.get(name: 'training_explications_alert').$promise
]
plansPromise: ['Plan', (Plan)->
Plan.query().$promise
]
groupsPromise: ['Group', (Group)->
Group.query().$promise
]
availabilityTrainingsPromise: ['Availability', '$stateParams', (Availability, $stateParams)->
Availability.trainings({trainingId: $stateParams.id}).$promise
]
trainingPromise: ['Training', '$stateParams', (Training, $stateParams)->
Training.get({id: $stateParams.id}).$promise unless $stateParams.id == 'all'
]
settingsPromise: ['Setting', (Setting)->
Setting.query(names: "['booking_window_start',
'booking_window_end',
'booking_move_enable',
'booking_move_delay',
'booking_cancel_enable',
'booking_cancel_delay',
'subscription_explications_alert',
'training_explications_alert',
'training_information_message']").$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.logged.trainings_reserve', 'app.shared.plan_subscribe', 'app.shared.member_select',
'app.shared.stripe', 'app.shared.valid_reservation_modal', 'app.shared.confirm_modify_slot_modal',
'app.shared.wallet', 'app.shared.coupon_input']).$promise
]
# notifications
.state 'app.logged.notifications',
url: '/notifications'
views:
'main@':
templateUrl: '<%= asset_path "notifications/index.html.erb" %>'
controller: 'NotificationsController'
resolve:
translations: [ 'Translations', (Translations) ->
Translations.query('app.logged.notifications').$promise
]
# pricing
.state 'app.public.plans',
url: '/plans'
abstract: Fablab.withoutPlans
views:
'main@':
templateUrl: '<%= asset_path "plans/index.html.erb" %>'
controller: 'PlansIndexController'
resolve:
subscriptionExplicationsPromise: ['Setting', (Setting)->
Setting.get(name: 'subscription_explications_alert').$promise
]
plansPromise: ['Plan', (Plan)->
Plan.query().$promise
]
groupsPromise: ['Group', (Group)->
Group.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.public.plans', 'app.shared.member_select', 'app.shared.stripe', 'app.shared.wallet',
'app.shared.coupon_input']).$promise
]
# events
.state 'app.public.events_list',
url: '/events'
views:
'main@':
templateUrl: '<%= asset_path "events/index.html.erb" %>'
controller: 'EventsController'
resolve:
categoriesPromise: ['Category', (Category) ->
Category.query().$promise
]
themesPromise: ['EventTheme', (EventTheme) ->
EventTheme.query().$promise
]
ageRangesPromise: ['AgeRange', (AgeRange) ->
AgeRange.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query('app.public.events_list').$promise
]
.state 'app.public.events_show',
url: '/events/:id'
views:
'main@':
templateUrl: '<%= asset_path "events/show.html" %>'
controller: 'ShowEventController'
resolve:
eventPromise: ['Event', '$stateParams', (Event, $stateParams)->
Event.get(id: $stateParams.id).$promise
]
priceCategoriesPromise: ['PriceCategory', (PriceCategory) ->
PriceCategory.query().$promise
]
settingsPromise: ['Setting', (Setting)->
Setting.query(names: "['booking_move_enable', 'booking_move_delay', 'event_explications_alert']").$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.public.events_show', 'app.shared.member_select', 'app.shared.stripe',
'app.shared.valid_reservation_modal', 'app.shared.wallet', 'app.shared.coupon_input']).$promise
]
# global calendar (trainings, machines and events)
.state 'app.public.calendar',
url: '/calendar'
views:
'main@':
templateUrl: '<%= asset_path "calendar/calendar.html" %>'
controller: 'CalendarController'
resolve:
bookingWindowStart: ['Setting', (Setting)->
Setting.get(name: 'booking_window_start').$promise
]
bookingWindowEnd: ['Setting', (Setting)->
Setting.get(name: 'booking_window_end').$promise
]
trainingsPromise: ['Training', (Training)->
Training.query().$promise
]
machinesPromise: ['Machine', (Machine)->
Machine.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.public.calendar']).$promise
]
# --- namespace /admin/... ---
# calendar
.state 'app.admin.calendar',
url: '/admin/calendar'
views:
'main@':
templateUrl: '<%= asset_path "admin/calendar/calendar.html" %>'
controller: 'AdminCalendarController'
resolve:
bookingWindowStart: ['Setting', (Setting)->
Setting.get(name: 'booking_window_start').$promise
]
bookingWindowEnd: ['Setting', (Setting)->
Setting.get(name: 'booking_window_end').$promise
]
machinesPromise: ['Machine', (Machine) ->
Machine.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query('app.admin.calendar').$promise
]
# project's elements
.state 'app.admin.project_elements',
url: '/admin/project_elements'
views:
'main@':
templateUrl: '<%= asset_path "admin/project_elements/index.html.erb" %>'
controller: 'ProjectElementsController'
resolve:
componentsPromise: ['Component', (Component)->
Component.query().$promise
]
licencesPromise: ['Licence', (Licence)->
Licence.query().$promise
]
themesPromise: ['Theme', (Theme)->
Theme.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query('app.admin.project_elements').$promise
]
# trainings
.state 'app.admin.trainings',
url: '/admin/trainings'
views:
'main@':
templateUrl: '<%= asset_path "admin/trainings/index.html.erb" %>'
controller: 'TrainingsAdminController'
resolve:
trainingsPromise: ['Training', (Training)->
Training.query().$promise
]
machinesPromise: ['Machine', (Machine)->
Machine.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.admin.trainings', 'app.shared.trainings']).$promise
]
.state 'app.admin.trainings_new',
url: '/admin/trainings/new'
views:
'main@':
templateUrl: '<%= asset_path "admin/trainings/new.html" %>'
controller: 'NewTrainingController'
resolve:
machinesPromise: ['Machine', (Machine)->
Machine.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.admin.trainings_new', 'app.shared.trainings']).$promise
]
.state 'app.admin.trainings_edit',
url: '/admin/trainings/:id/edit'
views:
'main@':
templateUrl: '<%= asset_path "admin/trainings/edit.html" %>'
controller: 'EditTrainingController'
resolve:
trainingPromise: ['Training', '$stateParams', (Training, $stateParams)->
Training.get(id: $stateParams.id).$promise
]
machinesPromise: ['Machine', (Machine)->
Machine.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query('app.shared.trainings').$promise
]
# events
.state 'app.admin.events',
url: '/admin/events'
views:
'main@':
templateUrl: '<%= asset_path "admin/events/index.html.erb" %>'
controller: 'AdminEventsController'
resolve:
eventsPromise: ['Event', (Event)->
Event.query(page: 1).$promise
]
categoriesPromise: ['Category', (Category) ->
Category.query().$promise
]
themesPromise: ['EventTheme', (EventTheme) ->
EventTheme.query().$promise
]
ageRangesPromise: ['AgeRange', (AgeRange) ->
AgeRange.query().$promise
]
priceCategoriesPromise: ['PriceCategory', (PriceCategory) ->
PriceCategory.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query('app.admin.events').$promise
]
.state 'app.admin.events_new',
url: '/admin/events/new'
views:
'main@':
templateUrl: '<%= asset_path "events/new.html" %>'
controller: 'NewEventController'
resolve:
categoriesPromise: ['Category', (Category) ->
Category.query().$promise
]
themesPromise: ['EventTheme', (EventTheme) ->
EventTheme.query().$promise
]
ageRangesPromise: ['AgeRange', (AgeRange) ->
AgeRange.query().$promise
]
priceCategoriesPromise: ['PriceCategory', (PriceCategory) ->
PriceCategory.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.admin.events_new', 'app.shared.event']).$promise
]
.state 'app.admin.events_edit',
url: '/admin/events/:id/edit'
views:
'main@':
templateUrl: '<%= asset_path "events/edit.html" %>'
controller: 'EditEventController'
resolve:
eventPromise: ['Event', '$stateParams', (Event, $stateParams)->
Event.get(id: $stateParams.id).$promise
]
categoriesPromise: ['Category', (Category) ->
Category.query().$promise
]
themesPromise: ['EventTheme', (EventTheme) ->
EventTheme.query().$promise
]
ageRangesPromise: ['AgeRange', (AgeRange) ->
AgeRange.query().$promise
]
priceCategoriesPromise: ['PriceCategory', (PriceCategory) ->
PriceCategory.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.admin.events_edit', 'app.shared.event']).$promise
]
.state 'app.admin.event_reservations',
url: '/admin/events/:id/reservations'
views:
'main@':
templateUrl: '<%= asset_path "admin/events/reservations.html" %>'
controller: 'ShowEventReservationsController'
resolve:
eventPromise: ['Event', '$stateParams', (Event, $stateParams)->
Event.get(id: $stateParams.id).$promise
]
reservationsPromise: ['Reservation', '$stateParams', (Reservation, $stateParams)->
Reservation.query(reservable_id: $stateParams.id, reservable_type: 'Event').$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query('app.admin.event_reservations').$promise
]
# pricing
.state 'app.admin.pricing',
url: '/admin/pricing'
views:
'main@':
templateUrl: '<%= asset_path "admin/pricing/index.html.erb" %>'
controller: 'EditPricingController'
resolve:
plans: ['Plan', (Plan) ->
Plan.query().$promise
]
groups: ['Group', (Group) ->
Group.query().$promise
]
machinesPricesPromise: ['Price', (Price)->
Price.query(priceable_type: 'Machine', plan_id: 'null').$promise
]
trainingsPricingsPromise: ['TrainingsPricing', (TrainingsPricing)->
TrainingsPricing.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.admin.pricing', 'app.shared.member_select', 'app.shared.coupon']).$promise
]
trainingsPromise: ['Training', (Training) ->
Training.query().$promise
]
machineCreditsPromise: ['Credit', (Credit) ->
Credit.query({creditable_type: 'Machine'}).$promise
]
machinesPromise: ['Machine', (Machine) ->
Machine.query().$promise
]
trainingCreditsPromise: ['Credit', (Credit) ->
Credit.query({creditable_type: 'Training'}).$promise
]
couponsPromise: ['Coupon', (Coupon) ->
Coupon.query().$promise
]
# plans
.state 'app.admin.plans',
abstract: true
resolve:
prices: ['Pricing', (Pricing) ->
Pricing.query().$promise
]
machines: ['Machine', (Machine) ->
Machine.query().$promise
]
groups: ['Group', (Group) ->
Group.query().$promise
]
plans: ['Plan', (Plan) ->
Plan.query().$promise
]
partners: ['User', (User) ->
User.query({role: 'partner'}).$promise
]
.state 'app.admin.plans.new',
url: '/admin/plans/new'
views:
'main@':
templateUrl: '<%= asset_path "admin/plans/new.html" %>'
controller: 'NewPlanController'
resolve:
translations: [ 'Translations', (Translations) ->
Translations.query(['app.admin.plans.new', 'app.shared.plan']).$promise
]
.state 'app.admin.plans.edit',
url: '/admin/plans/:id/edit'
views:
'main@':
templateUrl: '<%= asset_path "admin/plans/edit.html" %>'
controller: 'EditPlanController'
resolve:
planPromise: ['Plan', '$stateParams', (Plan, $stateParams) ->
Plan.get({id: $stateParams.id}).$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.admin.plans.edit', 'app.shared.plan']).$promise
]
# coupons
.state 'app.admin.coupons_new',
url: '/admin/coupons/new'
views:
'main@':
templateUrl: '<%= asset_path "admin/coupons/new.html" %>'
controller: 'NewCouponController'
resolve:
translations: [ 'Translations', (Translations) ->
Translations.query(['app.admin.coupons_new', 'app.shared.coupon']).$promise
]
.state 'app.admin.coupons_edit',
url: '/admin/coupons/:id/edit'
views:
'main@':
templateUrl: '<%= asset_path "admin/coupons/edit.html" %>'
controller: 'EditCouponController'
resolve:
couponPromise: ['Coupon', '$stateParams', (Coupon, $stateParams) ->
Coupon.get({id: $stateParams.id}).$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.admin.coupons_edit', 'app.shared.coupon']).$promise
]
# invoices
.state 'app.admin.invoices',
url: '/admin/invoices'
views:
'main@':
templateUrl: '<%= asset_path "admin/invoices/index.html.erb" %>'
controller: 'InvoicesController'
resolve:
settings: ['Setting', (Setting)->
Setting.query(names: "[
'invoice_legals',
'invoice_text',
'invoice_VAT-rate',
'invoice_VAT-active',
'invoice_order-nb',
'invoice_code-value',
'invoice_code-active',
'invoice_reference',
'invoice_logo'
]").$promise
]
invoices: [ 'Invoice', (Invoice) ->
Invoice.list({
query: { number: '', customer: '', date: null, order_by: '-reference', page: 1, size: 20 }
}).$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query('app.admin.invoices').$promise
]
# members
.state 'app.admin.members',
url: '/admin/members'
views:
'main@':
templateUrl: '<%= asset_path "admin/members/index.html.erb" %>'
controller: 'AdminMembersController'
'groups@app.admin.members':
templateUrl: '<%= asset_path "admin/groups/index.html.erb" %>'
controller: 'GroupsController'
'tags@app.admin.members':
templateUrl: '<%= asset_path "admin/tags/index.html.erb" %>'
controller: 'TagsController'
'authentification@app.admin.members':
templateUrl: '<%= asset_path "admin/authentications/index.html.erb" %>'
controller: 'AuthentificationController'
resolve:
membersPromise: ['Member', (Member)->
Member.list({ query: { search: '', order_by: 'id', page: 1, size: 20 } }).$promise
]
adminsPromise: ['Admin', (Admin)->
Admin.query().$promise
]
groupsPromise: ['Group', (Group)->
Group.query().$promise
]
tagsPromise: ['Tag', (Tag)->
Tag.query().$promise
]
authProvidersPromise: ['AuthProvider', (AuthProvider)->
AuthProvider.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query('app.admin.members').$promise
]
.state 'app.admin.members_new',
url: '/admin/members/new'
views:
'main@':
templateUrl: '<%= asset_path "admin/members/new.html" %>'
controller: 'NewMemberController'
resolve:
translations: [ 'Translations', (Translations) ->
Translations.query(['app.admin.members_new', 'app.shared.user', 'app.shared.user_admin']).$promise
]
.state 'app.admin.members_edit',
url: '/admin/members/:id/edit'
views:
'main@':
templateUrl: '<%= asset_path "admin/members/edit.html" %>'
controller: 'EditMemberController'
resolve:
memberPromise: ['Member', '$stateParams', (Member, $stateParams)->
Member.get(id: $stateParams.id).$promise
]
activeProviderPromise: ['AuthProvider', (AuthProvider) ->
AuthProvider.active().$promise
]
walletPromise: ['Wallet', '$stateParams', (Wallet, $stateParams)->
Wallet.getWalletByUser(user_id: $stateParams.id).$promise
]
transactionsPromise: ['Wallet', 'walletPromise', (Wallet, walletPromise)->
Wallet.transactions(id: walletPromise.id).$promise
]
tagsPromise: ['Tag', (Tag)->
Tag.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.admin.members_edit', 'app.shared.user', 'app.shared.user_admin', 'app.shared.wallet']).$promise
]
.state 'app.admin.admins_new',
url: '/admin/admins/new'
views:
'main@':
templateUrl: '<%= asset_path "admin/admins/new.html" %>'
controller: 'NewAdminController'
resolve:
translations: [ 'Translations', (Translations) ->
Translations.query('app.admin.admins_new').$promise
]
# authentification providers
.state 'app.admin.authentication_new',
url: '/admin/authentications/new'
views:
'main@':
templateUrl: '<%= asset_path "admin/authentications/new.html" %>'
controller: 'NewAuthenticationController'
resolve:
mappingFieldsPromise: ['AuthProvider', (AuthProvider)->
AuthProvider.mapping_fields().$promise
]
authProvidersPromise: ['AuthProvider', (AuthProvider)->
AuthProvider.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.admin.authentication_new', 'app.shared.authentication', 'app.shared.oauth2']).$promise
]
.state 'app.admin.authentication_edit',
url: '/admin/authentications/:id/edit'
views:
'main@':
templateUrl: '<%= asset_path "admin/authentications/edit.html" %>'
controller: 'EditAuthenticationController'
resolve:
providerPromise: ['AuthProvider', '$stateParams', (AuthProvider, $stateParams)->
AuthProvider.get(id: $stateParams.id).$promise
]
mappingFieldsPromise: ['AuthProvider', (AuthProvider)->
AuthProvider.mapping_fields().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query(['app.admin.authentication_edit', 'app.shared.authentication', 'app.shared.oauth2']).$promise
]
# statistics
.state 'app.admin.statistics',
url: '/admin/statistics'
views:
'main@':
templateUrl: '<%= asset_path "admin/statistics/index.html.erb" %>'
controller: 'StatisticsController'
resolve:
membersPromise: ['Member', (Member) ->
Member.mapping().$promise
]
statisticsPromise: ['Statistics', (Statistics)->
Statistics.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query('app.admin.statistics').$promise
]
.state 'app.admin.stats_graphs',
url: '/admin/statistics/evolution'
views:
'main@':
templateUrl: '<%= asset_path "admin/statistics/graphs.html" %>'
controller: 'GraphsController'
resolve:
translations: [ 'Translations', (Translations) ->
Translations.query('app.admin.stats_graphs').$promise
]
# configurations
.state 'app.admin.settings',
url: '/admin/settings'
views:
'main@':
templateUrl: '<%= asset_path "admin/settings/index.html.erb" %>'
controller: 'SettingsController'
resolve:
settingsPromise: ['Setting', (Setting)->
Setting.query(names: "[
'twitter_name',
'about_title',
'about_body',
'about_contacts',
'home_blogpost',
'machine_explications_alert',
'training_explications_alert',
'training_information_message',
'subscription_explications_alert',
'event_explications_alert',
'booking_window_start',
'booking_window_end',
'booking_move_enable',
'booking_move_delay',
'booking_cancel_enable',
'booking_cancel_delay',
'main_color',
'secondary_color',
'fablab_name',
'name_genre',
'reminder_enable',
'reminder_delay'
]").$promise
]
cguFile: ['CustomAsset', (CustomAsset) ->
CustomAsset.get({name: 'cgu-file'}).$promise
]
cgvFile: ['CustomAsset', (CustomAsset) ->
CustomAsset.get({name: 'cgv-file'}).$promise
]
faviconFile: ['CustomAsset', (CustomAsset) ->
CustomAsset.get({name: 'favicon-file'}).$promise
]
profileImageFile: ['CustomAsset', (CustomAsset) ->
CustomAsset.get({name: 'profile-image-file'}).$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query('app.admin.settings').$promise
]
# OpenAPI Clients
.state 'app.admin.open_api_clients',
url: '/open_api_clients'
views:
'main@':
templateUrl: '<%= asset_path "admin/open_api_clients/index.html.erb" %>'
controller: 'OpenAPIClientsController'
resolve:
clientsPromise: ['OpenAPIClient', (OpenAPIClient)->
OpenAPIClient.query().$promise
]
translations: [ 'Translations', (Translations) ->
Translations.query('app.admin.open_api_clients').$promise
]
]