{"version":3,"file":"app-25b6ce5b.7fa014b28e684bf4.bundle.js","mappings":"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","sources":["webpack://client-app/./src/app/project/project-manager/project-manager.scss","webpack://client-app/./src/app/project/project-manager/project-manager.html","webpack://client-app/./src/app/project/project-manager/project-manager.ts"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.project-manager{margin:15px;width:calc(100% - 30px);height:calc(100vh - 4em - 30px)}[data-device-type=mobile] .project-manager,[data-device-type=tablet] .project-manager{height:calc(100vh - 4em - 50px)}.project-manager__inner{overflow:auto;height:100%;width:100%;display:grid;gap:15px;grid-template-columns:1fr}@media screen and (min-width: 768px){.project-manager__inner{grid-template-columns:1fr}}@media screen and (min-width: 1200px){.project-manager__inner{grid-template-columns:1fr 1fr}}.project-manager__inner .project-information{min-width:400px;padding:15px}.project-manager__inner .project-information label{font-weight:800}.project-manager__inner .project-information__top-area h4{display:inline}.project-manager__inner .project-information__top-area .right-floating-btn{float:right;display:inline}.project-manager__inner .project-member-list .project-member,.project-manager__inner .project-member-list .project-invitation,.project-manager__inner .project-member-list .project-search-member,.project-manager__inner .project-invitation-list .project-member,.project-manager__inner .project-invitation-list .project-invitation,.project-manager__inner .project-invitation-list .project-search-member,.project-manager__inner .project-search-list .project-member,.project-manager__inner .project-search-list .project-invitation,.project-manager__inner .project-search-list .project-search-member{display:grid;border-bottom:1px solid #d3d3d3}.project-manager__inner .project-member-list .project-member .header-cell,.project-manager__inner .project-member-list .project-invitation .header-cell,.project-manager__inner .project-member-list .project-search-member .header-cell,.project-manager__inner .project-invitation-list .project-member .header-cell,.project-manager__inner .project-invitation-list .project-invitation .header-cell,.project-manager__inner .project-invitation-list .project-search-member .header-cell,.project-manager__inner .project-search-list .project-member .header-cell,.project-manager__inner .project-search-list .project-invitation .header-cell,.project-manager__inner .project-search-list .project-search-member .header-cell{font-weight:800}.project-manager__inner .project-member-list .project-member .cell,.project-manager__inner .project-member-list .project-member .header-cell,.project-manager__inner .project-member-list .project-member .dropdown-cell,.project-manager__inner .project-member-list .project-invitation .cell,.project-manager__inner .project-member-list .project-invitation .header-cell,.project-manager__inner .project-member-list .project-invitation .dropdown-cell,.project-manager__inner .project-member-list .project-search-member .cell,.project-manager__inner .project-member-list .project-search-member .header-cell,.project-manager__inner .project-member-list .project-search-member .dropdown-cell,.project-manager__inner .project-invitation-list .project-member .cell,.project-manager__inner .project-invitation-list .project-member .header-cell,.project-manager__inner .project-invitation-list .project-member .dropdown-cell,.project-manager__inner .project-invitation-list .project-invitation .cell,.project-manager__inner .project-invitation-list .project-invitation .header-cell,.project-manager__inner .project-invitation-list .project-invitation .dropdown-cell,.project-manager__inner .project-invitation-list .project-search-member .cell,.project-manager__inner .project-invitation-list .project-search-member .header-cell,.project-manager__inner .project-invitation-list .project-search-member .dropdown-cell,.project-manager__inner .project-search-list .project-member .cell,.project-manager__inner .project-search-list .project-member .header-cell,.project-manager__inner .project-search-list .project-member .dropdown-cell,.project-manager__inner .project-search-list .project-invitation .cell,.project-manager__inner .project-search-list .project-invitation .header-cell,.project-manager__inner .project-search-list .project-invitation .dropdown-cell,.project-manager__inner .project-search-list .project-search-member .cell,.project-manager__inner .project-search-list .project-search-member .header-cell,.project-manager__inner .project-search-list .project-search-member .dropdown-cell{height:3.5em;line-height:3.5em;padding:0px 5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-manager__inner .project-member-list .project-member .dropdown-cell,.project-manager__inner .project-member-list .project-invitation .dropdown-cell,.project-manager__inner .project-member-list .project-search-member .dropdown-cell,.project-manager__inner .project-invitation-list .project-member .dropdown-cell,.project-manager__inner .project-invitation-list .project-invitation .dropdown-cell,.project-manager__inner .project-invitation-list .project-search-member .dropdown-cell,.project-manager__inner .project-search-list .project-member .dropdown-cell,.project-manager__inner .project-search-list .project-invitation .dropdown-cell,.project-manager__inner .project-search-list .project-search-member .dropdown-cell{overflow:visible}.project-manager__inner .project-member-list .project-member .dropdown-cell .dropdown .role-item,.project-manager__inner .project-member-list .project-invitation .dropdown-cell .dropdown .role-item,.project-manager__inner .project-member-list .project-search-member .dropdown-cell .dropdown .role-item,.project-manager__inner .project-invitation-list .project-member .dropdown-cell .dropdown .role-item,.project-manager__inner .project-invitation-list .project-invitation .dropdown-cell .dropdown .role-item,.project-manager__inner .project-invitation-list .project-search-member .dropdown-cell .dropdown .role-item,.project-manager__inner .project-search-list .project-member .dropdown-cell .dropdown .role-item,.project-manager__inner .project-search-list .project-invitation .dropdown-cell .dropdown .role-item,.project-manager__inner .project-search-list .project-search-member .dropdown-cell .dropdown .role-item{display:grid;line-height:2em}.project-manager__inner .project-member-list .project-member{grid-template-columns:1fr 13.5em repeat(2, 1fr) 4.5em}.project-manager__inner .project-invitation-list .project-invitation{grid-template-columns:1fr 13.5em repeat(3, 1fr) 6em 4.5em}.project-manager__inner .project-search-list .project-search-member{grid-template-columns:repeat(3, 1fr) 4.5em}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/app/project/project-manager/project-manager.scss\",\"webpack://./src/resources/customized-styles/variables.scss\"],\"names\":[],\"mappings\":\"AAGA,iBACI,WCaK,CDZR,uBAAA,CACA,+BAAA,CACG,sFACI,+BAAA,CAEJ,wBACI,aAAA,CACA,WAAA,CACA,UAAA,CACA,YAAA,CACA,QCEC,CDDD,yBAAA,CACA,qCAPJ,wBAQQ,yBAAA,CAAA,CAGJ,sCAXJ,wBAYQ,6BAAA,CAAA,CAEJ,6CACI,eAAA,CACA,YCTH,CDUG,mDACI,eAAA,CAGA,0DAAA,cAAA,CACA,2EACI,WAAA,CACA,cAAA,CAKR,klBACI,YAAA,CACA,+BAAA,CACA,usBACI,eAAA,CAEJ,wiEACI,YAAA,CACA,iBAAA,CACA,eAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CAEJ,ytBACI,gBAAA,CAGI,s5BACI,YAAA,CACA,eAAA,CAOhB,6DACI,qDAAA,CAIJ,qEACI,yDAAA,CAIJ,oEACI,0CAAA\",\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Module\nvar code = ` `;\n// Exports\nexport default code;","import { ClassificationDto, ProjectDto,Member, ProjectInvitation, ResponseStatus } from 'app/models/project-dto';\r\nimport { ProjectRole, UIPrjRoleNames } from 'app/models/project-role';\r\nimport { UserDto } from 'app/models/user-administration-dtos';\r\nimport { WhitelistDto } from 'app/models/whitelist-dto';\r\nimport { ApiClient } from 'app/services/api-client';\r\nimport { AppContextService } from 'app/services/app-context-service';\r\nimport { ModalService } from 'app/services/modal-service';\r\nimport { DialogCloseResult } from 'aurelia-dialog';\r\nimport { autoinject,computedFrom,bindable } from 'aurelia-framework';\r\nimport { HttpResponseMessage } from 'aurelia-http-client';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { Router } from 'aurelia-router';\r\nimport { EventAggregator } from 'aurelia-event-aggregator';\r\nimport { ProjectInvitationDto } from 'app/models/project-invitation-dto';\r\nimport { ErrorService } from 'app/services/error-service';\r\nimport { RequestErrorHandling } from 'app/services/RequestErrorHandling';\r\nimport { RequestMethod } from 'app/services/RequestMethod';\r\nimport { ProjectTokenService } from 'app/services/project-token-service';\r\n\r\n\r\n\r\n@autoinject\r\nexport class ProjectManager {\r\n private project: ProjectDto | undefined;\r\n\tsetProject2(p:ProjectDto | undefined) {this.project = p;}//in-setProject2\r\n\r\n private classifications: ClassificationDto[] = [];\r\n private whitelists: WhitelistDto[] = [];\r\n private projectRoles: string[] = Object.keys(ProjectRole).filter((v) => isNaN(Number(v)));\r\n private admin: UserDto |undefined;\r\n @bindable private searchText: string = \"\";\r\n private searchMemberResult: Member[] = [];\r\n\tprivate asOrgUser: boolean = true;\r\n\r\n constructor (public appContext: AppContextService, \r\n\t\tpublic apiClient: ApiClient, \r\n\t\tprivate projectTokenService: ProjectTokenService,\r\n\t\tpublic modal: ModalService, \r\n\t\tpublic router: Router, private i18n: I18N,\r\n\t\tprivate events: EventAggregator) {}\r\n\r\n async activate(params: any): Promise {\r\n console.log(\"project-manager:activate \" , params);\r\n if (params.projectId) { \r\n this.appContext.setProject(params.projectId); \r\n\r\n this.project = await this.apiClient.project(params.projectId).get('Project/GetProject').jsonResult();//activate\r\n //this.project = await this.apiClient.projectWToken(params.projectId).get('Project/GetProject').jsonResult();//activate\r\n this.classifications = await this.apiClient.projectWToken(params.projectId,'Aactivate1').get('Classification/GetClassifications').jsonResult();\r\n this.whitelists = await this.apiClient.projectWToken(params.projectId,'Aactivate2').get('Whitelist/GetWhitelists').jsonResult();\r\n\r\n\t\t\t//JG: burde ovenstaaende ikke ogsaa fejle?\r\n\t\t\t//await this.projectTokenService.updatePrjTokenIfNeeded(params.projectId, this.apiClient); \r\n\r\n console.log(\"project\", this.project);\r\n console.log(\"keys\", this.projectRoles);\r\n this.admin = this.appContext.currentUser;\r\n }//in-activate.\r\n }\r\n\r\n async bind(): Promise {\r\n console.log(\"project-manager:bind\");\r\n }\r\n\r\n @computedFrom('project.name', 'project.location.address', 'project.location.zipcode', 'project.location.city')\r\n\tget isFormInvalid(): boolean {\r\n\t\t//Unless these conditions are fullfilled a project can neither be updated or created.\r\n\t\t//This is based on the database setup.\r\n\t\treturn !(\r\n\t\t\t\t(this.project?.name != undefined \t\t\t\t&& this.project.name != '')\r\n\t\t\t&& \t(this.project?.location?.address != undefined \t&& this.project?.location?.address != '')\r\n\t\t\t&&\t(this.project?.location?.zipCode != undefined \t&& this.project?.location?.zipCode != '')\r\n\t\t\t&&\t(this.project?.location?.city != undefined \t\t&& this.project?.location?.city != '')\r\n\t\t);\r\n\t}\r\n\r\n async searchTextChanged(newValue: string, oldValue: string): Promise {\r\n if (!newValue) {\r\n\t\t\tthis.searchMemberResult = [];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet result:any = undefined; // this is an array of some DTO type, and we should specify that.\r\n\t\ttry {\r\n\t\t\tif (this.project?.id != undefined) {\r\n\t\t\t\tresult = await this.apiClient.projectWToken(this.project?.id,'AsearchTextChanged').postJson(\"UserInfo/SearchForUsers\", newValue).jsonResult();\r\n\t\t\t\tconsole.log(\"result \" , result);\r\n\t\t\t}\r\n\t\t} catch (reason) {\r\n\t\t\tconsole.error(reason);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\t\r\n\t\tlet currentMemberIds = this.project?.members.map(x => x.userId);\r\n\t\tthis.searchMemberResult = result\r\n\t\t.filter((m: any) => {\t\t\t\t\t\r\n\t\t\treturn currentMemberIds?.indexOf(m.id) === -1\r\n\t\t})\r\n\t\t.map((userDto: any) => {\r\n\t\t\treturn { userId : userDto.id, \r\n\t\t\t\tname : userDto.name, \r\n\t\t\t\temail: userDto.email, \r\n\t\t\t\tcompanyName: userDto.companyName, \r\n\t\t\t\tuserCompanyId: userDto.UserCompanyId };\r\n\t\t});\r\n }\r\n\r\n async saveProjectInformation(): Promise {\r\n //TODO - Save project-information.\r\n if (this.project) {\r\n this.project.name = this.project?.name.trim();\r\n let response: HttpResponseMessage = await this.apiClient.projectWToken(this.project?.id,'AsaveProjectInformation').postJson('PrjManager/UpdateProject/', this.project).response()\r\n if (response.statusCode == 200) {\r\n this.modal.OpenMessage(\"Saved changes\", \"The changes were successfully saved\");\r\n } else {\r\n this.modal.OpenMessage(\"Changes not saved\", \"Some changes were not saved\");\r\n }\r\n }\r\n }\r\n\r\n async openTransferStandards(): Promise {\r\n\t\tthis.router.navigate('project/'+this.project?.id+'/project-manager/transfer');\r\n }\r\n\r\n getRoleName(role: number | string): string {\r\n\t\tif (typeof role === \"number\") {\r\n\t\t\treturn UIPrjRoleNames[ProjectRole[role]];\r\n\t\t} else {\r\n\t\t\treturn UIPrjRoleNames[role];\r\n\t\t}\r\n\t}\r\n\r\n async setNewRole(member: Member, role:string): Promise { // UI button handler.\r\n if (this.project) {\r\n let memberRole = ProjectRole[role];\r\n console.log(\"role\",memberRole);\r\n let response = await this.apiClient.projectWToken(this.project.id,'AsetNewRole').postJson(`PrjManager/ChangeMemberRole?userId=${member.userId}`, memberRole).response();\r\n if (response.statusCode == 200) {\r\n member.role = ProjectRole[role];\r\n\t\t\t\tif (member.userId == this.appContext.currentUser?.id) {\r\n\t\t\t\t\tthis.events.publish(\"navigation:update-prj-token\");//in-setNewRole\r\n\t\t\t\t}\r\n return;\r\n }\r\n }\r\n }\r\n\r\n\tasync setNewRoleForInvitee(invitation: ProjectInvitation, role:string): Promise {\r\n if (this.project) {\r\n let invitationRole = ProjectRole[role];\r\n let response = await this.apiClient.projectWToken(this.project.id,'AsetNewRoleForInvitee').postJson(`Project/UpdateInvitationRole_PRJORGROLE?invitationId=${invitation.id}`, invitationRole)\r\n\t\t\t.handleErrorWithErrorService(async(t: ErrorService, reason: HttpResponseMessage) => {\r\n\t\t\t\tif (reason.statusCode == 410) {\r\n\t\t\t\t\tthis.modal.OpenConfirm(\"Invitation not found\",\"The invitation could not be found. Do you wish to reload the project?\")\r\n\t\t\t\t\t.whenClosed(async (result: DialogCloseResult) => {\r\n\t\t\t\t\t\tif (result.wasCancelled == false) {\r\n\t\t\t\t\t\t\tthis.setProject2(await this.apiClient.project(this.project!.id).get('Project/GetProject').jsonResult());//setNewRoleForInvitee\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.modal.OpenMessage(\"Role change failed\",\"Changing the role did not succeed.\");\r\n\t\t\t\t}\r\n\t\t\t}).response();\r\n if (response.statusCode == 200) {\r\n invitation.projectRole = ProjectRole[role];\r\n return;\r\n }\r\n }\r\n }\r\n\r\n public async removeInvitee(invitee: ProjectInvitation): Promise {\r\n\t\tif (this.project?.id != undefined) {\r\n\t\t\tlet areYouSure: DialogCloseResult = await this.modal.OpenConfirm(\"Remove invitation\", \"Are you sure you want to remove this invitation?\").whenClosed();\r\n\t\t\tif (areYouSure.wasCancelled == true) { return; }\r\n\t\t\tlet result: HttpResponseMessage = await this.apiClient.projectWToken(this.project.id,'AremoveInvitee').postJson('Project/RemoveInvitations_PRJORGROLE', [invitee.id])\r\n\t\t\t.handleErrorWithErrorService(async(t: ErrorService, reason: HttpResponseMessage) => {\r\n\t\t\t\tif (reason.statusCode == 410) {\r\n\t\t\t\t\tthis.modal.OpenConfirm(\"Invitation not found\",\"The invitation could not be found. Do you wish to reload the project?\")\r\n\t\t\t\t\t.whenClosed(async (result: DialogCloseResult) => {\r\n\t\t\t\t\t\tif (result.wasCancelled == false) {\r\n\t\t\t\t\t\t\tthis.setProject2(await this.apiClient.project(this.project!.id).get('Project/GetProject').jsonResult());//removeInvitee\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.modal.OpenMessage(\"Invitation not deleted\",\"The invitation was not removed.\")\r\n\t\t\t\t}\r\n\t\t\t}).response();\r\n\t\t\tif (result.statusCode == 200) {\r\n\t\t\t\tlet index = this.project?.projectInvitations.indexOf(invitee);\r\n\t\t\t\tif (index != undefined && index != -1) {\r\n\t\t\t\t\tthis.project?.projectInvitations.splice(index, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async toggleNotifySync2(member:Member) {\r\n\t\t//member.notifySync = ! member.notifySync;\r\n\t\tconsole.log('pm.toggleNotifySync2', member.notifySync, member);\r\n\t\tif (!this.project?.id) { return; }\r\n\t\tlet projectId = this.project?.id;\r\n\r\n\t\t// \t\tawait this.projectTokenService.updatePrjTokenIfNeeded(projectId, this.apiClient); \r\n\r\n\t\t//let prjApi_:RequestMethod = this.apiClient.project(projectId);\r\n\t\tlet prjApi:RequestMethod = this.apiClient.project_insist(projectId); // toggleNotifySync2\r\n\t\t\r\n\t\tlet im:RequestErrorHandling = prjApi.postJson('Project/ToggleMember_NotifySync', member.userId);\r\n\t\tlet result: HttpResponseMessage = await im.response(); // todo: pass member.notifySync .\r\n\t\tconsole.log('p-m.toggleNotifySync2',result); \r\n\t} // if (this.projectId == undefined) { return; }\r\n\r\n public async removeMember(member:Member): Promise {\r\n\t\tif (this.project?.id != undefined) {\r\n\t\t\tlet areYouSure: DialogCloseResult = await this.modal.OpenConfirm(\"Remove member\", \"Are you sure you want to remove this member?\").whenClosed();\r\n\t\t\tif (areYouSure.wasCancelled == true) { return; }\r\n\t\t\tlet result: HttpResponseMessage = await this.apiClient.projectWToken(this.project?.id,'AremoveMember').postJson('Project/RemoveMembers_PRJORGROLE', [member.userId]).response();\r\n\t\t\tif (result.statusCode == 200) {\r\n\t\t\t\tlet index = this.project?.members.indexOf(member);\r\n\t\t\t\tif (index != undefined) {\r\n\t\t\t\t\tthis.project?.members.splice(index, 1); // in ProjectManager.removeMember. hvorfor har vi baade manageproject og projectmanager..\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.modal.OpenMessage(\"User not removed\", \"The user could not be removed from the project.\")\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async inviteMember(email: string) { // triggers when +Plus-INVITE is clicked.\r\n\t\tconsole.log('inviteMember, email:',email);\r\n\r\n\t\tif (Boolean(this.project?.projectInvitations.find(x => x.email.toLowerCase() === email.toLowerCase())) || Boolean(this.project?.members.find(x => x.email.toLowerCase() === email.toLowerCase()))) {\r\n\t\t\tthis.modal.OpenMessage(\r\n\t\t\t\tthis.i18n.tr(\"Error\"),\r\n\t\t\t\tthis.i18n.tr(\"Invite Member - A user with email: \") + email + this.i18n.tr(\" has already been added to this project.\")\r\n\t\t\t)\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!this.validateEmail(email)) {\r\n\t\t\tthis.modal.OpenMessage(\r\n\t\t\t\tthis.i18n.tr(\"Error\"),\r\n\t\t\t\tthis.i18n.tr(\"The entered email is invalid\")\r\n\t\t\t)\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet L = window.location;\r\n\t\tlet host = `${L.protocol}//${L.host}`; \r\n\t\tconsole.log('passing host:',host);\r\n\t\t//let host:string = 'https://aoc-linux-client-test.azurewebsites.net';\r\n\t\tlet invite: ProjectInvitation = { \r\n\t\t\temail: email, \r\n\t\t\tid: \"00000000-0000-0000-0000-000000000000\",\r\n\t\t\tprojectId: \"00000000-0000-0000-0000-000000000000\" ,\r\n\t\t\thost: host,\r\n\t\t\tresponseStatus: ResponseStatus.Pending,\r\n\t\t\tasOrgUser: this.asOrgUser,\r\n\t\t\tinviteeName: \"\",\r\n\t\t\tinviteeOrgName: \"\",\r\n\t\t\tprojectRole: ProjectRole.Prj_User\r\n\t\t};\r\n\r\n\t\tif (this.project?.id != undefined) {\r\n\t\t\t// let userExistResult: HttpResponseMessage = await this.apiClient.project(this.projectId).postJson('Project/IsUserKnown', invite.email).response();\r\n\t\t\t// console.log(\"userExistResult \" , userExistResult);\r\n\t\t\tlet addInviResult: HttpResponseMessage = await this.apiClient.projectWToken(this.project.id,'AinviteMember').postJson('Project/AddInvitations_PRJORGROLE', [invite]).response();\r\n\t\t\tif (addInviResult.statusCode == 200) {\r\n\t\t\t\tlet updatedInvitations: ProjectInvitation[] = addInviResult.content;\r\n\t\t\t\tfor (let i = 0; i < updatedInvitations.length; i++) {\r\n\t\t\t\t\tlet ix = this.project?.projectInvitations.findIndex(x => x.email == updatedInvitations[i].email);\r\n\t\t\t\t\tif (ix && ix > -1) {\r\n\t\t\t\t\t\tthis.project?.projectInvitations.splice(ix, 1, updatedInvitations[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t\tconsole.log(\"updatedInvitaiton\" , updatedInvitations[0]);\r\n\t\t\t\tthis.project?.projectInvitations.push(updatedInvitations[0]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async resendInvitation(invitation: ProjectInvitation) {\r\n\t\tlet L = window.location;\r\n\t\tlet host = `${L.protocol}//${L.host}`; \r\n\t\tinvitation.host = host;\r\n\t\tif (this.project) {\r\n\t\t\tlet response = await this.apiClient.projectWToken(this.project.id,'AresendInvitation').postJson(`Project/ResendInvitation_PRJORGROLE`, invitation)\r\n\t\t\t.handleErrorWithErrorService(async(t: ErrorService, reason: HttpResponseMessage) => {\r\n\t\t\t\tif (reason.statusCode == 410) {\r\n\t\t\t\t\tthis.modal.OpenConfirm(\"Invitation not found\",\"The invitation could not be found. Do you wish to reload the project?\")\r\n\t\t\t\t\t.whenClosed(async (result: DialogCloseResult) => {\r\n\t\t\t\t\t\tif (result.wasCancelled == false) {\r\n\t\t\t\t\t\t\tthis.setProject2( await this.apiClient.project(this.project!.id).get('Project/GetProject').jsonResult());//resendInvitation\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.modal.OpenMessage(\"Role change failed\",\"Changing the role did not succeed.\");\r\n\t\t\t\t}\r\n\t\t\t}).response();\r\n if (response.statusCode == 200) {\r\n\t\t\t\tinvitation.responseStatus = ResponseStatus.Pending;\r\n return;\r\n } \r\n\t\t}\r\n\t}\r\n\r\n\tprivate validateEmail(mail: string): boolean { // UB: inviteMember.\r\n\t\treturn /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/.test(mail);\r\n\t}\r\n\r\n\tprivate GetResponseStatus(status: number): string {\r\n\t\treturn ResponseStatus[status];\r\n\t}\r\n\r\n}\r\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","ProjectManager","setProject2","p","this","project","constructor","appContext","apiClient","projectTokenService","modal","router","i18n","events","classifications","whitelists","projectRoles","Object","keys","filter","v","isNaN","Number","searchText","searchMemberResult","asOrgUser","activate","params","console","log","projectId","setProject","get","jsonResult","projectWToken","admin","currentUser","bind","isFormInvalid","undefined","name","location","address","zipCode","city","searchTextChanged","newValue","oldValue","result","postJson","reason","error","currentMemberIds","members","map","x","userId","m","indexOf","userDto","email","companyName","userCompanyId","UserCompanyId","saveProjectInformation","trim","response","statusCode","OpenMessage","openTransferStandards","navigate","getRoleName","role","setNewRole","member","memberRole","publish","setNewRoleForInvitee","invitation","invitationRole","handleErrorWithErrorService","async","t","OpenConfirm","whenClosed","wasCancelled","projectRole","removeInvitee","invitee","index","projectInvitations","splice","toggleNotifySync2","notifySync","im","project_insist","removeMember","inviteMember","Boolean","find","toLowerCase","tr","validateEmail","L","window","host","protocol","invite","responseStatus","Pending","inviteeName","inviteeOrgName","Prj_User","addInviResult","updatedInvitations","content","i","length","ix","findIndex","resendInvitation","mail","test","GetResponseStatus","status","bindable","computedFrom","autoinject","I18N","EventAggregator"],"sourceRoot":""}