roles.service.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import {Injectable} from '@angular/core';
  2. import {ICollection, ISchema, Resource, Service} from 'ngx-jsonapi';
  3. import {Permission, PermissionsService} from '../permissions/permissions.service';
  4. import {Base} from 'ngx-jsonapi/services/base';
  5. @Injectable()
  6. export class RolesService extends Service<Role> {
  7. public resource = Role;
  8. public type = 'roles';
  9. public schema: ISchema = {
  10. relationships: {
  11. permissions: {
  12. hasMany: true
  13. }
  14. }
  15. };
  16. }
  17. export class Role extends Resource {
  18. public attributes: {
  19. name: string;
  20. slug: string;
  21. };
  22. get name(): string {
  23. return this.attributes.name;
  24. }
  25. set name(name: string) {
  26. this.attributes.name = name;
  27. }
  28. get slug(): string {
  29. return this.attributes.slug;
  30. }
  31. set slug(slug: string) {
  32. this.attributes.slug = slug;
  33. }
  34. // ina vase relation permision hastan ke chand be chand hast
  35. get permissions(): ICollection<Permission> {
  36. return <ICollection<Permission>>this.relationships.permissions.data;
  37. }
  38. set permissions(permisssions: ICollection<Permission>) {
  39. this.relationships.permissions.data = permisssions;
  40. }
  41. get permissionsIds(): string[] {
  42. const ids: string[] = [];
  43. Base.forEach(this.permissions, (permission: Permission) => {
  44. ids.push(permission.id);
  45. });
  46. return ids;
  47. }
  48. set permissionsIds(ids: string[]) {
  49. const selected_permissions: ICollection<Permission> = Base.newCollection<Permission>();
  50. for (const key in ids) {
  51. if (key in ids) {
  52. const permission_id = ids[key];
  53. const permissionsService = new PermissionsService();
  54. const permission = permissionsService.new();
  55. permission.id = permission_id;
  56. selected_permissions[permission_id] = permission;
  57. }
  58. }
  59. this.permissions = selected_permissions;
  60. }
  61. }