.state('my-competitions', {
url: "/my-competitions",
auth: ['COMPANY', 'USER'],
data: {
pageTitle: "My Competitions - WriteUp"
},
headerClass: "headershadow",
bodyClass: "bg-grey",
resolve: {
profile: ['AuthenticationService', 'UserService', function (AuthenticationService, UserService) {
return UserService.getMyProfile().then(function (response) {
switch (response.status) {
case 'success':
return response.data
break;
}
return {};
});
}],
is_staff_member: ['AuthenticationService', '$state', '$q', function (AuthenticationService, $state, $q) {
var deferred = $q.defer();
if (AuthenticationService.isStaffMember()) {
$timeout(function () {
WUswalMessage('', 'You are not allowed to view the page', 'error');
$state.go('profile');
});
deferred.reject();
} else {
deferred.resolve();
}
return deferred.promise;
}],
competitions_hosted_by_self: ['CompetitionService', 'AuthenticationService', function (CompetitionService, AuthenticationService) {
if (AuthenticationService.isUser()) {
return null;
} else if (AuthenticationService.isCompany()) {
return CompetitionService.getCompaniesCompetitionsHostedBySelf(AuthenticationService.getAuthenticatedUserID(), 1, $WU_APP_SETTINGS.pages_settings.competitions.my_competitions.per_page).then(function (response) {
switch (response.status) {
case 'success':
if (response.data.length > 0) {
return {meta: response.meta, list: response.data};
} else {
return null;
}
break;
case 'error':
return null;
break;
}
});
}
}],
competitions_hosted_by_writeup: ['CompetitionService', 'AuthenticationService', function (CompetitionService, AuthenticationService) {
if (AuthenticationService.isUser()) {
return null;
} else {
return CompetitionService.getCompaniesCompetitionsHostedByWriteup(AuthenticationService.getAuthenticatedUserID(), 1, $WU_APP_SETTINGS.pages_settings.competitions.my_competitions.per_page).then(function (response) {
if (AuthenticationService.isUser() && AuthenticationService.isStaffMember()) {
return null;
} else if (AuthenticationService.isCompany()) {
switch (response.status) {
case 'success':
if (response.data.length > 0) {
return {meta: response.meta, list: response.data};
} else {
return null;
}
break;
case 'error':
return null;
break;
}
}
});
}
}],
competitions_interested: ['CompetitionService', 'AuthenticationService', function (CompetitionService, AuthenticationService) {
if (AuthenticationService.isUser()) {
return CompetitionService.getAllCompetitions(
{
page: 1,
per_page: $WU_APP_SETTINGS.pages_settings.competitions.my_competitions.per_page,
'filters[active]': 1,
'filters[status]': 'LIVE',
'filters[participant_id][neq]': AuthenticationService.getAuthenticatedUserID(),
}).then(function (response) {
switch (response.status) {
case 'success':
if (WUisArrayAndNotEmpty(response.data)) {
return {meta: response.meta, list: response.data};
} else {
return null;
}
break;
case 'error':
return null;
break;
}
});
} else if (AuthenticationService.isCompany()) {
return null;
}
}],
competitions_participated: ['CompetitionService', 'AuthenticationService', function (CompetitionService, AuthenticationService) {
if (AuthenticationService.isUser()) {
return CompetitionService.getAllCompetitions(
{
page: 1,
per_page: $WU_APP_SETTINGS.pages_settings.competitions.my_competitions.per_page,
'sort[competition_participation_id]': 'DESC',
'filters[active]': 1,
'filters[participant_id]': AuthenticationService.getAuthenticatedUserID(),
}).then(function (response) {
switch (response.status) {
case 'success':
if (response.data.length > 0) {
return {meta: response.meta, list: response.data};
} else {
return null;
}
break;
case 'error':
return null;
break;
}
});
} else if (AuthenticationService.isCompany()) {
return null;
}
}],
},
views: {
'header': {
templateUrl: 'template/header.html'
},
'content': {
controllerProvider: ['$stateParams', '$templateFactory', 'AuthenticationService', function ($stateParams, $templateFactory, AuthenticationService) {
if (AuthenticationService.isUser() && !AuthenticationService.isStaffMember())
{
return 'MyCompetitionsUserController';
} else if (AuthenticationService.isCompany()) {
return 'MyCompetitionsCompanyController';
}
}],
templateProvider: ['$stateParams', '$templateFactory', 'AuthenticationService', function ($stateParams, $templateFactory, AuthenticationService) {
if (AuthenticationService.isUser() && !AuthenticationService.isStaffMember())
{
return $templateFactory.fromUrl('views/my-competitions-user.html', $stateParams);
} else if (AuthenticationService.isCompany()) {
return $templateFactory.fromUrl('views/my-competitions-company.html', $stateParams);
}
}]
}
}
})