class NerdDetailsRoutes extends Config('hn.projects.components')
    constructor: ($stateProvider, $locationProvider, e) ->
        $stateProvider
            # when we are viewing this nerd from the invite consultants pages
            # we need to be able to add them to the list of consultants you are currently
            # going to invite. On this state, the invite header is shown
            .state('hn.nerds.profile-invite', {
                url: '/nerds/{userId:id}/invite/{projectId:id}'
                pageTitle: "Consultant Profile"
                abstract: true
                ### @ngInject ###
                resolve:
                    userId: ($stateParams) ->
                        return $stateParams.userId
                    nerd: ($stateParams, NerdUser) ->
                        return NerdUser.getOne(nerd_user_id: $stateParams.userId).$promise
                auth:
                    roles: [e.UserType.BUSINESS, e.UserType.ADMIN]
                data:
                    backButton:
                        state: 'hn.nerds.search'
                        text: 'Back'
                        params: (params) -> "{projectId: '" + params.projectId + "'}"
                views:
                    '':
                        templateUrl: "/components/nerd_invite/views/nerd_details.html"
                        controller: 'NerdDetailsController'
                        controllerAs: 'vm'
                    'tabs@hn.nerds.profile-invite':
                        templateUrl: "/components/nerd_invite/views/tabs_invite.html"
                    'header@hn.nerds.profile-invite':
                        templateUrl: "/components/nerd_invite/views/header.html"
                    'title':
                        template: 'Consultant Details'
                })
                .state('hn.nerds.profile-invite.overview', {
                    url: ''
                    views:
                        'content@hn.nerds.profile-invite':
                            templateUrl: "/components/nerd_invite/views/tab_overview.html"
                })
                .state('hn.nerds.profile-invite.projects', {
                    url: '/projects'
                    ### @ngInject ###
                    resolve:
                        projectTypes: (ProjectType) ->
                            return ProjectType.getMany().$promise
                    views:
                        'content@hn.nerds.profile-invite':
                            templateUrl: "/components/nerd_invite/views/tab_projects.html"
                            controller: "NerdProjectsController"
                            controllerAs: "vm"
                })
                .state('hn.nerds.profile-invite.recommendations', {
                    url: '/recommendations'
                    views:
                        'content@hn.nerds.profile-invite':
                            templateUrl: "/components/nerd_invite/views/tab_recommendations.html"
                            controller: "NerdRecommendationsController"
                            controllerAs: "vm"
                })
