{"version":3,"file":"member-detail.repository-o8rRvciV.js","sources":["../../../src/packages/members/member/repository/detail/member-detail.server.data-source.ts","../../../src/packages/members/member/repository/detail/member-detail.repository.ts"],"sourcesContent":["import type { UmbMemberDetailModel } from '../../types.js';\r\nimport { UMB_MEMBER_ENTITY_TYPE } from '../../entity.js';\r\nimport { UmbMemberKind } from '../../utils/index.js';\r\nimport { UmbId } from '@umbraco-cms/backoffice/id';\r\nimport type { UmbDetailDataSource } from '@umbraco-cms/backoffice/repository';\r\nimport type { CreateMemberRequestModel, UpdateMemberRequestModel } from '@umbraco-cms/backoffice/external/backend-api';\r\nimport { MemberService } from '@umbraco-cms/backoffice/external/backend-api';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\nimport { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';\r\n\r\n/**\r\n * A data source for the Member that fetches data from the server\r\n * @class UmbMemberServerDataSource\r\n * @implements {RepositoryDetailDataSource}\r\n */\r\nexport class UmbMemberServerDataSource implements UmbDetailDataSource {\r\n\t#host: UmbControllerHost;\r\n\r\n\t/**\r\n\t * Creates an instance of UmbMemberServerDataSource.\r\n\t * @param {UmbControllerHost} host - The controller host for this controller to be appended to\r\n\t * @memberof UmbMemberServerDataSource\r\n\t */\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tthis.#host = host;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new Member scaffold\r\n\t * @param {Partial} [preset]\r\n\t * @returns { CreateMemberRequestModel }\r\n\t * @memberof UmbMemberServerDataSource\r\n\t */\r\n\tasync createScaffold(preset: Partial = {}) {\r\n\t\tconst data: UmbMemberDetailModel = {\r\n\t\t\tentityType: UMB_MEMBER_ENTITY_TYPE,\r\n\t\t\tunique: UmbId.new(),\r\n\t\t\temail: '',\r\n\t\t\tusername: '',\r\n\t\t\tmemberType: {\r\n\t\t\t\tunique: '',\r\n\t\t\t},\r\n\t\t\tisApproved: false,\r\n\t\t\tisLockedOut: false,\r\n\t\t\tisTwoFactorEnabled: false,\r\n\t\t\tkind: UmbMemberKind.DEFAULT,\r\n\t\t\tfailedPasswordAttempts: 0,\r\n\t\t\tlastLoginDate: null,\r\n\t\t\tlastLockoutDate: null,\r\n\t\t\tlastPasswordChangeDate: null,\r\n\t\t\tgroups: [],\r\n\t\t\tvalues: [],\r\n\t\t\tvariants: [\r\n\t\t\t\t{\r\n\t\t\t\t\tname: '',\r\n\t\t\t\t\tculture: null,\r\n\t\t\t\t\tsegment: null,\r\n\t\t\t\t\tcreateDate: new Date().toISOString(),\r\n\t\t\t\t\tupdateDate: new Date().toISOString(),\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t\t...preset,\r\n\t\t};\r\n\r\n\t\treturn { data };\r\n\t}\r\n\r\n\t/**\r\n\t * Fetches a Member with the given id from the server\r\n\t * @param {string} unique\r\n\t * @returns {*}\r\n\t * @memberof UmbMemberServerDataSource\r\n\t */\r\n\tasync read(unique: string) {\r\n\t\tif (!unique) throw new Error('Unique is missing');\r\n\r\n\t\tconst { data, error } = await tryExecuteAndNotify(this.#host, MemberService.getMemberById({ id: unique }));\r\n\r\n\t\tif (error || !data) {\r\n\t\t\treturn { error };\r\n\t\t}\r\n\r\n\t\t// TODO: make data mapper to prevent errors\r\n\t\tconst Member: UmbMemberDetailModel = {\r\n\t\t\tentityType: UMB_MEMBER_ENTITY_TYPE,\r\n\t\t\tunique: data.id,\r\n\t\t\temail: data.email,\r\n\t\t\tusername: data.username,\r\n\t\t\tmemberType: {\r\n\t\t\t\tunique: data.memberType.id,\r\n\t\t\t},\r\n\t\t\tisApproved: data.isApproved,\r\n\t\t\tisLockedOut: data.isLockedOut,\r\n\t\t\tisTwoFactorEnabled: data.isTwoFactorEnabled,\r\n\t\t\tkind: data.kind,\r\n\t\t\tfailedPasswordAttempts: data.failedPasswordAttempts,\r\n\t\t\tlastLoginDate: data.lastLoginDate || null,\r\n\t\t\tlastLockoutDate: data.lastLockoutDate || null,\r\n\t\t\tlastPasswordChangeDate: data.lastPasswordChangeDate || null,\r\n\t\t\tgroups: data.groups,\r\n\t\t\tvalues: data.values.map((value) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\teditorAlias: value.editorAlias,\r\n\t\t\t\t\tculture: value.culture || null,\r\n\t\t\t\t\tsegment: value.segment || null,\r\n\t\t\t\t\talias: value.alias,\r\n\t\t\t\t\tvalue: value.value,\r\n\t\t\t\t};\r\n\t\t\t}),\r\n\t\t\tvariants: data.variants.map((variant) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tculture: variant.culture || null,\r\n\t\t\t\t\tsegment: variant.segment || null,\r\n\t\t\t\t\tname: variant.name,\r\n\t\t\t\t\tcreateDate: variant.createDate,\r\n\t\t\t\t\tupdateDate: variant.updateDate,\r\n\t\t\t\t};\r\n\t\t\t}),\r\n\t\t};\r\n\r\n\t\treturn { data: Member };\r\n\t}\r\n\r\n\t/**\r\n\t * Inserts a new Member on the server\r\n\t * @param {UmbMemberDetailModel} model\r\n\t * @returns {*}\r\n\t * @memberof UmbMemberServerDataSource\r\n\t */\r\n\tasync create(model: UmbMemberDetailModel) {\r\n\t\tif (!model) throw new Error('Member is missing');\r\n\r\n\t\t// TODO: make data mapper to prevent errors\r\n\t\tconst requestBody: CreateMemberRequestModel = {\r\n\t\t\tid: model.unique,\r\n\t\t\temail: model.email,\r\n\t\t\tusername: model.username,\r\n\t\t\tpassword: model.newPassword || '',\r\n\t\t\tmemberType: { id: model.memberType.unique },\r\n\t\t\tgroups: model.groups,\r\n\t\t\tisApproved: model.isApproved,\r\n\t\t\tvalues: model.values,\r\n\t\t\tvariants: model.variants,\r\n\t\t};\r\n\r\n\t\tconst { data, error } = await tryExecuteAndNotify(\r\n\t\t\tthis.#host,\r\n\t\t\tMemberService.postMember({\r\n\t\t\t\trequestBody,\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\tif (data) {\r\n\t\t\treturn this.read(data);\r\n\t\t}\r\n\r\n\t\treturn { error };\r\n\t}\r\n\r\n\t/**\r\n\t * Updates a Member on the server\r\n\t * @param {UmbMemberDetailModel} Member\r\n\t * @param model\r\n\t * @returns {*}\r\n\t * @memberof UmbMemberServerDataSource\r\n\t */\r\n\tasync update(model: UmbMemberDetailModel) {\r\n\t\tif (!model.unique) throw new Error('Unique is missing');\r\n\r\n\t\t// TODO: make data mapper to prevent errors\r\n\t\tconst requestBody: UpdateMemberRequestModel = {\r\n\t\t\temail: model.email,\r\n\t\t\tgroups: model.groups,\r\n\t\t\tisApproved: model.isApproved,\r\n\t\t\tisLockedOut: model.isLockedOut,\r\n\t\t\tisTwoFactorEnabled: model.isTwoFactorEnabled,\r\n\t\t\tnewPassword: model.newPassword,\r\n\t\t\toldPassword: model.oldPassword,\r\n\t\t\tusername: model.username,\r\n\t\t\tvalues: model.values,\r\n\t\t\tvariants: model.variants,\r\n\t\t};\r\n\r\n\t\tconst { error } = await tryExecuteAndNotify(\r\n\t\t\tthis.#host,\r\n\t\t\tMemberService.putMemberById({\r\n\t\t\t\tid: model.unique,\r\n\t\t\t\trequestBody,\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\tif (!error) {\r\n\t\t\treturn this.read(model.unique);\r\n\t\t}\r\n\r\n\t\treturn { error };\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes a Member on the server\r\n\t * @param {string} unique\r\n\t * @returns {*}\r\n\t * @memberof UmbMemberServerDataSource\r\n\t */\r\n\tasync delete(unique: string) {\r\n\t\tif (!unique) throw new Error('Unique is missing');\r\n\r\n\t\treturn tryExecuteAndNotify(\r\n\t\t\tthis.#host,\r\n\t\t\tMemberService.deleteMemberById({\r\n\t\t\t\tid: unique,\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n}\r\n","import type { UmbMemberDetailModel } from '../../types.js';\r\nimport { UmbMemberServerDataSource } from './member-detail.server.data-source.js';\r\nimport { UMB_MEMBER_DETAIL_STORE_CONTEXT } from './member-detail.store.context-token.js';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\nimport { UmbDetailRepositoryBase } from '@umbraco-cms/backoffice/repository';\r\n\r\n/**\r\n * A repository for Member details\r\n * @class UmbMemberDetailRepository\r\n * @augments {UmbDetailRepositoryBase}\r\n */\r\nexport class UmbMemberDetailRepository extends UmbDetailRepositoryBase {\r\n\t/**\r\n\t * Creates an instance of UmbMemberDetailRepository.\r\n\t * @param {UmbControllerHost} host - The controller host for this controller to be appended to\r\n\t * @memberof UmbMemberDetailRepository\r\n\t */\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tsuper(host, UmbMemberServerDataSource, UMB_MEMBER_DETAIL_STORE_CONTEXT);\r\n\t}\r\n\r\n\toverride async create(model: UmbMemberDetailModel) {\r\n\t\treturn super.create(model, null);\r\n\t}\r\n}\r\n\r\nexport default UmbMemberDetailRepository;\r\n"],"names":["UmbMemberServerDataSource","#host","host","preset","UMB_MEMBER_ENTITY_TYPE","UmbId","UmbMemberKind","unique","data","error","tryExecuteAndNotify","MemberService","value","variant","model","requestBody","UmbMemberDetailRepository","UmbDetailRepositoryBase","UMB_MEMBER_DETAIL_STORE_CONTEXT"],"mappings":"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"}