Compare commits
2 Commits
d43b6b746d
...
5d26572073
| Author | SHA1 | Date | |
|---|---|---|---|
| 5d26572073 | |||
| 0b69eee16b |
@@ -1,5 +1,4 @@
|
||||
import { Observable } from "rxjs";
|
||||
import { Discussion } from "../../pages/menu/menu-users/menu-users.component";
|
||||
import { HttpClient } from "@angular/common/http";
|
||||
import { inject, Injectable } from "@angular/core";
|
||||
|
||||
@@ -11,6 +10,21 @@ export interface Message {
|
||||
authorName: string;
|
||||
}
|
||||
|
||||
export interface MemberWithRole {
|
||||
userId: number;
|
||||
username: string;
|
||||
roleId: number | null;
|
||||
roleLibelle: string | null;
|
||||
}
|
||||
|
||||
export interface Discussion {
|
||||
id: number;
|
||||
name: string;
|
||||
isGroup: boolean;
|
||||
membersCount?: number;
|
||||
groupId?: number;
|
||||
}
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class discussionsService {
|
||||
|
||||
@@ -32,4 +46,20 @@ export class discussionsService {
|
||||
createGroupDiscussion(groupName: string, usernames: string[]): Observable<Discussion> {
|
||||
return this.http.post<Discussion>(`${this.apiUrl}/discussions/group`, { groupName, usernames });
|
||||
}
|
||||
|
||||
getDiscussionMembers(discussionId: string): Observable<string[]> {
|
||||
return this.http.get<string[]>(`${this.apiUrl}/discussions/${discussionId}/members`);
|
||||
}
|
||||
|
||||
getMembersWithRoles(discussionId: string): Observable<MemberWithRole[]> {
|
||||
return this.http.get<MemberWithRole[]>(`${this.apiUrl}/discussions/${discussionId}/members/roles`);
|
||||
}
|
||||
|
||||
createRole(libelle: string): Observable<{ id: number, libelle: string }> {
|
||||
return this.http.post<{ id: number, libelle: string }>(`${this.apiUrl}/roles`, { libelle });
|
||||
}
|
||||
|
||||
assignRole(groupId: number, userId: number, roleId: number): Observable<void> {
|
||||
return this.http.post<void>(`${this.apiUrl}/groups/${groupId}/members/${userId}/role`, { roleId });
|
||||
}
|
||||
}
|
||||
@@ -40,4 +40,216 @@
|
||||
font-size: 18px;
|
||||
font-weight: 500;
|
||||
color: #c07070;
|
||||
}
|
||||
|
||||
ion-modal {
|
||||
--background: transparent;
|
||||
}
|
||||
|
||||
/* MODALE */
|
||||
.modal-layout {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
height: 100%;
|
||||
|
||||
background: radial-gradient(
|
||||
ellipse at top,
|
||||
#fff 0%,
|
||||
#f9ece9 45%,
|
||||
#f3d4cc 100%
|
||||
);
|
||||
|
||||
border-radius: 22px 22px 0 0;
|
||||
|
||||
box-shadow: 0 -12px 45px rgba(200, 120, 100, 0.25);
|
||||
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* HEADER */
|
||||
|
||||
.modal-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
padding: 18px;
|
||||
|
||||
background: rgba(255, 255, 255, 0.6);
|
||||
backdrop-filter: blur(10px);
|
||||
|
||||
border-bottom: 1px solid rgba(192, 112, 112, 0.15);
|
||||
}
|
||||
|
||||
.modal-title {
|
||||
margin: 0;
|
||||
font-size: 1.15rem;
|
||||
font-weight: 700;
|
||||
color: #c07070;
|
||||
}
|
||||
|
||||
/* CLOSE */
|
||||
|
||||
.modal-close-btn {
|
||||
width: 38px;
|
||||
height: 38px;
|
||||
|
||||
border: none;
|
||||
border-radius: 50%;
|
||||
|
||||
background: #fff;
|
||||
color: #c07070;
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
box-shadow: 0 3px 12px rgba(200, 120, 100, 0.15);
|
||||
|
||||
cursor: pointer;
|
||||
|
||||
transition: all 0.2s ease;
|
||||
|
||||
ion-icon {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 6px 18px rgba(200, 120, 100, 0.22);
|
||||
}
|
||||
|
||||
&:active {
|
||||
transform: scale(0.92);
|
||||
}
|
||||
}
|
||||
|
||||
/* BODY */
|
||||
|
||||
.modal-body {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
|
||||
padding: 18px;
|
||||
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
/* MEMBER CARD */
|
||||
|
||||
.member-card {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
padding: 14px;
|
||||
|
||||
background: rgba(255, 255, 255, 0.75);
|
||||
border-radius: 16px;
|
||||
|
||||
box-shadow: 0 2px 12px rgba(200, 120, 100, 0.12);
|
||||
|
||||
transition: all 0.2s ease;
|
||||
|
||||
&:hover {
|
||||
transform: translateY(-2px);
|
||||
background: rgba(255, 255, 255, 0.92);
|
||||
}
|
||||
}
|
||||
|
||||
/* MEMBER INFO */
|
||||
|
||||
.member-info {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.member-info img {
|
||||
width: 38px;
|
||||
height: 38px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.member-text {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 2px;
|
||||
}
|
||||
|
||||
.member-name {
|
||||
font-size: 0.95rem;
|
||||
font-weight: 600;
|
||||
color: #7a3a3a;
|
||||
}
|
||||
|
||||
.member-role {
|
||||
font-size: 0.75rem;
|
||||
color: rgba(122, 58, 58, 0.6);
|
||||
}
|
||||
|
||||
/* ROLE ASSIGN */
|
||||
|
||||
.role-assign {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
/* INPUT */
|
||||
|
||||
.role-input {
|
||||
width: 120px;
|
||||
|
||||
padding: 8px 10px;
|
||||
|
||||
border: 1px solid rgba(192, 112, 112, 0.25);
|
||||
border-radius: 10px;
|
||||
|
||||
background: rgba(255, 255, 255, 0.8);
|
||||
|
||||
font-size: 0.85rem;
|
||||
color: #7a3a3a;
|
||||
|
||||
outline: none;
|
||||
|
||||
transition: all 0.2s ease;
|
||||
|
||||
&:focus {
|
||||
border-color: #c07070;
|
||||
box-shadow: 0 0 0 3px rgba(192, 112, 112, 0.15);
|
||||
}
|
||||
}
|
||||
|
||||
/* BUTTON + */
|
||||
|
||||
.role-btn {
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
|
||||
border: none;
|
||||
border-radius: 10px;
|
||||
|
||||
background: #c07070;
|
||||
color: white;
|
||||
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
|
||||
cursor: pointer;
|
||||
|
||||
box-shadow: 0 2px 10px rgba(192, 112, 112, 0.25);
|
||||
|
||||
transition: all 0.2s ease;
|
||||
|
||||
&:hover {
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 6px 16px rgba(192, 112, 112, 0.35);
|
||||
}
|
||||
|
||||
&:active {
|
||||
transform: scale(0.92);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,40 @@
|
||||
<button class="profile-btn">
|
||||
<button class="profile-btn" (click)="openModal()">
|
||||
<div class="icon-wrapper">
|
||||
<img width="50" height="50" src="https://img.icons8.com/ios/50/user-male-circle--v1.png" alt="user"/>
|
||||
</div>
|
||||
<span class="username">{{ name || 'Utilisateur' }}</span>
|
||||
</button>
|
||||
</button>
|
||||
|
||||
<ion-modal [isOpen]="isModalOpen()" (didDismiss)="closeModal()">
|
||||
<ng-template>
|
||||
<div class="modal-layout">
|
||||
<div class="modal-header">
|
||||
<h2 class="modal-title">Membres</h2>
|
||||
<button class="modal-close-btn" (click)="closeModal()">
|
||||
<ion-icon name="close-outline"/>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<div class="member-card" *ngFor="let member of members()">
|
||||
<div class="member-info">
|
||||
<img width="36" height="36" src="https://img.icons8.com/ios/50/user-male-circle--v1.png" alt="user"/>
|
||||
<div class="member-text">
|
||||
<span class="member-name">{{ member.username }}</span>
|
||||
<span class="member-role" *ngIf="member.roleLibelle">{{ member.roleLibelle }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="role-assign" *ngIf="groupId">
|
||||
<input
|
||||
class="role-input"
|
||||
[(ngModel)]="newRoleInput[member.userId]"
|
||||
placeholder="Nouveau rôle..."
|
||||
/>
|
||||
<button class="role-btn" (click)="assignRole(member.userId)">+</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ng-template>
|
||||
</ion-modal>
|
||||
@@ -1,15 +1,63 @@
|
||||
import {Component, inject, Input} from '@angular/core';
|
||||
import {AuthService} from "../../../core/auth/auth.service";
|
||||
import { Component, Input, inject, signal } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
import { IonModal, IonIcon } from '@ionic/angular/standalone';
|
||||
import { addIcons } from 'ionicons';
|
||||
import { closeOutline } from 'ionicons/icons';
|
||||
import { discussionsService, MemberWithRole } from '../../../core/chat/discussion.service';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
|
||||
@Component({
|
||||
selector: 'app-messages-infouser',
|
||||
imports: [],
|
||||
imports: [CommonModule, IonModal, IonIcon, FormsModule],
|
||||
templateUrl: './messages-infouser.component.html',
|
||||
styleUrl: './messages-infouser.component.css'
|
||||
})
|
||||
export class MessagesInfoUser {
|
||||
@Input() name: string = '';
|
||||
private authService = inject(AuthService);
|
||||
@Input() groupId: number | null = null;
|
||||
|
||||
user = this.authService.currentUser;
|
||||
}
|
||||
private discussionService = inject(discussionsService);
|
||||
private route = inject(ActivatedRoute);
|
||||
|
||||
isModalOpen = signal(false);
|
||||
members = signal<MemberWithRole[]>([]);
|
||||
newRoleInput: { [userId: number]: string } = {};
|
||||
|
||||
constructor() {
|
||||
addIcons({ closeOutline });
|
||||
}
|
||||
|
||||
openModal() {
|
||||
const discussionId = this.route.snapshot.paramMap.get('discussionId')!;
|
||||
this.discussionService.getMembersWithRoles(discussionId).subscribe({
|
||||
next: (members) => {
|
||||
this.members.set(members);
|
||||
this.isModalOpen.set(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
closeModal() { this.isModalOpen.set(false); }
|
||||
|
||||
assignRole(userId: number) {
|
||||
const libelle = this.newRoleInput[userId]?.trim();
|
||||
if (!libelle || !this.groupId) return;
|
||||
|
||||
this.discussionService.createRole(libelle).subscribe({
|
||||
next: (role) => {
|
||||
this.discussionService.assignRole(this.groupId!, userId, role.id).subscribe({
|
||||
next: () => {
|
||||
this.members.update(members =>
|
||||
members.map(m => m.userId === userId
|
||||
? { ...m, roleId: role.id, roleLibelle: libelle }
|
||||
: m
|
||||
)
|
||||
);
|
||||
this.newRoleInput[userId] = '';
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
<div class="header">
|
||||
<app-messages-menu/>
|
||||
<app-messages-infouser [name]="discussionName"/>
|
||||
<app-messages-infouser [name]="discussionName" [groupId]="groupId"/>
|
||||
</div>
|
||||
|
||||
<div class="messages">
|
||||
|
||||
@@ -25,6 +25,7 @@ export class MessagesMain implements OnInit {
|
||||
currentUserId!: number;
|
||||
messages: Message[] = [];
|
||||
discussionName: string = '';
|
||||
groupId: number | null = null;
|
||||
|
||||
async ngOnInit() {
|
||||
this.currentDiscussionId = this.route.snapshot.paramMap.get('discussionId')!;
|
||||
@@ -33,7 +34,10 @@ export class MessagesMain implements OnInit {
|
||||
this.discussionService.getDiscussions().subscribe({
|
||||
next: (discussions) => {
|
||||
const discussion = discussions.find(d => d.id === +this.currentDiscussionId);
|
||||
console.log('discussion:', discussion);
|
||||
this.discussionName = discussion?.name ?? '';
|
||||
this.groupId = discussion?.groupId ?? null;
|
||||
console.log('groupId:', this.groupId);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -27,7 +27,6 @@ model/knots-dto-key-delete-key-dto.ts
|
||||
model/knots-dto-message-create-message-dto.ts
|
||||
model/knots-dto-message-delete-message-dto.ts
|
||||
model/knots-dto-message-get-message-details-dto.ts
|
||||
model/knots-dto-role-create-role-dto.ts
|
||||
model/knots-dto-role-delete-role-dto.ts
|
||||
model/knots-dto-user-create-user-dto.ts
|
||||
model/knots-dto-user-delete-user-dto.ts
|
||||
@@ -41,6 +40,10 @@ model/knots-dto-user-update-user-profile-picture-dto.ts
|
||||
model/knots-dto-user-update-username-dto.ts
|
||||
model/knots-endpoints-discussion-create-group-discussion-request.ts
|
||||
model/knots-endpoints-discussion-create-private-discussion-request.ts
|
||||
model/knots-endpoints-discussion-member-with-role-dto.ts
|
||||
model/knots-endpoints-role-assign-role-request.ts
|
||||
model/knots-endpoints-role-create-role-request.ts
|
||||
model/knots-endpoints-role-role-dto.ts
|
||||
model/models.ts
|
||||
param.ts
|
||||
provide-api.ts
|
||||
|
||||
@@ -28,6 +28,8 @@ import { KnotsDTOMessageGetMessageDetailsDto } from '../model/knots-dto-message-
|
||||
import { KnotsEndpointsDiscussionCreateGroupDiscussionRequest } from '../model/knots-endpoints-discussion-create-group-discussion-request';
|
||||
// @ts-ignore
|
||||
import { KnotsEndpointsDiscussionCreatePrivateDiscussionRequest } from '../model/knots-endpoints-discussion-create-private-discussion-request';
|
||||
// @ts-ignore
|
||||
import { KnotsEndpointsDiscussionMemberWithRoleDto } from '../model/knots-endpoints-discussion-member-with-role-dto';
|
||||
|
||||
// @ts-ignore
|
||||
import { BASE_PATH, COLLECTION_FORMATS } from '../variables';
|
||||
@@ -317,14 +319,15 @@ export class DiscussionsService extends BaseService {
|
||||
* @param name
|
||||
* @param isGroup
|
||||
* @param membersCount
|
||||
* @param groupId
|
||||
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
||||
* @param reportProgress flag to report request and response progress.
|
||||
* @param options additional options
|
||||
*/
|
||||
public getDiscussionEndpoint(id: number, name: string, isGroup: boolean, membersCount?: number, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<any>;
|
||||
public getDiscussionEndpoint(id: number, name: string, isGroup: boolean, membersCount?: number, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<any>>;
|
||||
public getDiscussionEndpoint(id: number, name: string, isGroup: boolean, membersCount?: number, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<any>>;
|
||||
public getDiscussionEndpoint(id: number, name: string, isGroup: boolean, membersCount?: number, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<any> {
|
||||
public getDiscussionEndpoint(id: number, name: string, isGroup: boolean, membersCount?: number, groupId?: number, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<any>;
|
||||
public getDiscussionEndpoint(id: number, name: string, isGroup: boolean, membersCount?: number, groupId?: number, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<any>>;
|
||||
public getDiscussionEndpoint(id: number, name: string, isGroup: boolean, membersCount?: number, groupId?: number, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<any>>;
|
||||
public getDiscussionEndpoint(id: number, name: string, isGroup: boolean, membersCount?: number, groupId?: number, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<any> {
|
||||
if (id === null || id === undefined) {
|
||||
throw new Error('Required parameter id was null or undefined when calling getDiscussionEndpoint.');
|
||||
}
|
||||
@@ -373,6 +376,15 @@ export class DiscussionsService extends BaseService {
|
||||
);
|
||||
|
||||
|
||||
localVarQueryParameters = this.addToHttpParams(
|
||||
localVarQueryParameters,
|
||||
'groupId',
|
||||
<any>groupId,
|
||||
QueryParamStyle.Form,
|
||||
true,
|
||||
);
|
||||
|
||||
|
||||
let localVarHeaders = this.defaultHeaders;
|
||||
|
||||
const localVarHttpHeaderAcceptSelected: string | undefined = options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept([
|
||||
@@ -413,6 +425,122 @@ export class DiscussionsService extends BaseService {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @endpoint get /API/discussions/{discussionId}/members
|
||||
* @param discussionId
|
||||
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
||||
* @param reportProgress flag to report request and response progress.
|
||||
* @param options additional options
|
||||
*/
|
||||
public getDiscussionMembersEndpoint(discussionId: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<Array<string>>;
|
||||
public getDiscussionMembersEndpoint(discussionId: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<Array<string>>>;
|
||||
public getDiscussionMembersEndpoint(discussionId: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<Array<string>>>;
|
||||
public getDiscussionMembersEndpoint(discussionId: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<any> {
|
||||
if (discussionId === null || discussionId === undefined) {
|
||||
throw new Error('Required parameter discussionId was null or undefined when calling getDiscussionMembersEndpoint.');
|
||||
}
|
||||
|
||||
let localVarHeaders = this.defaultHeaders;
|
||||
|
||||
// authentication (JWTBearerAuth) required
|
||||
localVarHeaders = this.configuration.addCredentialToHeaders('JWTBearerAuth', 'Authorization', localVarHeaders, 'Bearer ');
|
||||
|
||||
const localVarHttpHeaderAcceptSelected: string | undefined = options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept([
|
||||
'application/json'
|
||||
]);
|
||||
if (localVarHttpHeaderAcceptSelected !== undefined) {
|
||||
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
|
||||
}
|
||||
|
||||
const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();
|
||||
|
||||
const localVarTransferCache: boolean = options?.transferCache ?? true;
|
||||
|
||||
|
||||
let responseType_: 'text' | 'json' | 'blob' = 'json';
|
||||
if (localVarHttpHeaderAcceptSelected) {
|
||||
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
|
||||
responseType_ = 'text';
|
||||
} else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
|
||||
responseType_ = 'json';
|
||||
} else {
|
||||
responseType_ = 'blob';
|
||||
}
|
||||
}
|
||||
|
||||
let localVarPath = `/API/discussions/${this.configuration.encodeParam({name: "discussionId", value: discussionId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}/members`;
|
||||
const { basePath, withCredentials } = this.configuration;
|
||||
return this.httpClient.request<Array<string>>('get', `${basePath}${localVarPath}`,
|
||||
{
|
||||
context: localVarHttpContext,
|
||||
responseType: <any>responseType_,
|
||||
...(withCredentials ? { withCredentials } : {}),
|
||||
headers: localVarHeaders,
|
||||
observe: observe,
|
||||
...(localVarTransferCache !== undefined ? { transferCache: localVarTransferCache } : {}),
|
||||
reportProgress: reportProgress
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @endpoint get /API/discussions/{discussionId}/members/roles
|
||||
* @param discussionId
|
||||
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
||||
* @param reportProgress flag to report request and response progress.
|
||||
* @param options additional options
|
||||
*/
|
||||
public getDiscussionMembersWithRolesEndpoint(discussionId: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<Array<KnotsEndpointsDiscussionMemberWithRoleDto>>;
|
||||
public getDiscussionMembersWithRolesEndpoint(discussionId: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<Array<KnotsEndpointsDiscussionMemberWithRoleDto>>>;
|
||||
public getDiscussionMembersWithRolesEndpoint(discussionId: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<Array<KnotsEndpointsDiscussionMemberWithRoleDto>>>;
|
||||
public getDiscussionMembersWithRolesEndpoint(discussionId: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<any> {
|
||||
if (discussionId === null || discussionId === undefined) {
|
||||
throw new Error('Required parameter discussionId was null or undefined when calling getDiscussionMembersWithRolesEndpoint.');
|
||||
}
|
||||
|
||||
let localVarHeaders = this.defaultHeaders;
|
||||
|
||||
// authentication (JWTBearerAuth) required
|
||||
localVarHeaders = this.configuration.addCredentialToHeaders('JWTBearerAuth', 'Authorization', localVarHeaders, 'Bearer ');
|
||||
|
||||
const localVarHttpHeaderAcceptSelected: string | undefined = options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept([
|
||||
'application/json'
|
||||
]);
|
||||
if (localVarHttpHeaderAcceptSelected !== undefined) {
|
||||
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
|
||||
}
|
||||
|
||||
const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();
|
||||
|
||||
const localVarTransferCache: boolean = options?.transferCache ?? true;
|
||||
|
||||
|
||||
let responseType_: 'text' | 'json' | 'blob' = 'json';
|
||||
if (localVarHttpHeaderAcceptSelected) {
|
||||
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
|
||||
responseType_ = 'text';
|
||||
} else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
|
||||
responseType_ = 'json';
|
||||
} else {
|
||||
responseType_ = 'blob';
|
||||
}
|
||||
}
|
||||
|
||||
let localVarPath = `/API/discussions/${this.configuration.encodeParam({name: "discussionId", value: discussionId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}/members/roles`;
|
||||
const { basePath, withCredentials } = this.configuration;
|
||||
return this.httpClient.request<Array<KnotsEndpointsDiscussionMemberWithRoleDto>>('get', `${basePath}${localVarPath}`,
|
||||
{
|
||||
context: localVarHttpContext,
|
||||
responseType: <any>responseType_,
|
||||
...(withCredentials ? { withCredentials } : {}),
|
||||
headers: localVarHeaders,
|
||||
observe: observe,
|
||||
...(localVarTransferCache !== undefined ? { transferCache: localVarTransferCache } : {}),
|
||||
reportProgress: reportProgress
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @endpoint get /API/discussions/{discussionId}/messages
|
||||
* @param discussionId
|
||||
|
||||
@@ -28,6 +28,8 @@ import { KnotsDTOGroupUpdateGroupMembersAmountDto } from '../model/knots-dto-gro
|
||||
import { KnotsDTOGroupUpdateGroupNameDto } from '../model/knots-dto-group-update-group-name-dto';
|
||||
// @ts-ignore
|
||||
import { KnotsDTOGroupUpdateGroupProfilePictureDto } from '../model/knots-dto-group-update-group-profile-picture-dto';
|
||||
// @ts-ignore
|
||||
import { KnotsEndpointsRoleAssignRoleRequest } from '../model/knots-endpoints-role-assign-role-request';
|
||||
|
||||
// @ts-ignore
|
||||
import { BASE_PATH, COLLECTION_FORMATS } from '../variables';
|
||||
@@ -45,6 +47,81 @@ export class GroupsService extends BaseService {
|
||||
super(basePath, configuration);
|
||||
}
|
||||
|
||||
/**
|
||||
* @endpoint post /API/groups/{groupId}/members/{userId}/role
|
||||
* @param groupId
|
||||
* @param userId
|
||||
* @param knotsEndpointsRoleAssignRoleRequest
|
||||
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
||||
* @param reportProgress flag to report request and response progress.
|
||||
* @param options additional options
|
||||
*/
|
||||
public assignRoleEndpoint(groupId: string, userId: string, knotsEndpointsRoleAssignRoleRequest: KnotsEndpointsRoleAssignRoleRequest, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<any>;
|
||||
public assignRoleEndpoint(groupId: string, userId: string, knotsEndpointsRoleAssignRoleRequest: KnotsEndpointsRoleAssignRoleRequest, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<any>>;
|
||||
public assignRoleEndpoint(groupId: string, userId: string, knotsEndpointsRoleAssignRoleRequest: KnotsEndpointsRoleAssignRoleRequest, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<any>>;
|
||||
public assignRoleEndpoint(groupId: string, userId: string, knotsEndpointsRoleAssignRoleRequest: KnotsEndpointsRoleAssignRoleRequest, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable<any> {
|
||||
if (groupId === null || groupId === undefined) {
|
||||
throw new Error('Required parameter groupId was null or undefined when calling assignRoleEndpoint.');
|
||||
}
|
||||
if (userId === null || userId === undefined) {
|
||||
throw new Error('Required parameter userId was null or undefined when calling assignRoleEndpoint.');
|
||||
}
|
||||
if (knotsEndpointsRoleAssignRoleRequest === null || knotsEndpointsRoleAssignRoleRequest === undefined) {
|
||||
throw new Error('Required parameter knotsEndpointsRoleAssignRoleRequest was null or undefined when calling assignRoleEndpoint.');
|
||||
}
|
||||
|
||||
let localVarHeaders = this.defaultHeaders;
|
||||
|
||||
// authentication (JWTBearerAuth) required
|
||||
localVarHeaders = this.configuration.addCredentialToHeaders('JWTBearerAuth', 'Authorization', localVarHeaders, 'Bearer ');
|
||||
|
||||
const localVarHttpHeaderAcceptSelected: string | undefined = options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept([
|
||||
]);
|
||||
if (localVarHttpHeaderAcceptSelected !== undefined) {
|
||||
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
|
||||
}
|
||||
|
||||
const localVarHttpContext: HttpContext = options?.context ?? new HttpContext();
|
||||
|
||||
const localVarTransferCache: boolean = options?.transferCache ?? true;
|
||||
|
||||
|
||||
// to determine the Content-Type header
|
||||
const consumes: string[] = [
|
||||
'application/json'
|
||||
];
|
||||
const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);
|
||||
if (httpContentTypeSelected !== undefined) {
|
||||
localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected);
|
||||
}
|
||||
|
||||
let responseType_: 'text' | 'json' | 'blob' = 'json';
|
||||
if (localVarHttpHeaderAcceptSelected) {
|
||||
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
|
||||
responseType_ = 'text';
|
||||
} else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
|
||||
responseType_ = 'json';
|
||||
} else {
|
||||
responseType_ = 'blob';
|
||||
}
|
||||
}
|
||||
|
||||
let localVarPath = `/API/groups/${this.configuration.encodeParam({name: "groupId", value: groupId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}/members/${this.configuration.encodeParam({name: "userId", value: userId, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}/role`;
|
||||
const { basePath, withCredentials } = this.configuration;
|
||||
return this.httpClient.request<any>('post', `${basePath}${localVarPath}`,
|
||||
{
|
||||
context: localVarHttpContext,
|
||||
body: knotsEndpointsRoleAssignRoleRequest,
|
||||
responseType: <any>responseType_,
|
||||
...(withCredentials ? { withCredentials } : {}),
|
||||
headers: localVarHeaders,
|
||||
observe: observe,
|
||||
...(localVarTransferCache !== undefined ? { transferCache: localVarTransferCache } : {}),
|
||||
reportProgress: reportProgress
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @endpoint post /API/groups
|
||||
* @param knotsDTOGroupCreateGroupDto
|
||||
|
||||
@@ -19,9 +19,11 @@ import { OpenApiHttpParams, QueryParamStyle } from '../query.params';
|
||||
// @ts-ignore
|
||||
import { FastEndpointsErrorResponse } from '../model/fast-endpoints-error-response';
|
||||
// @ts-ignore
|
||||
import { KnotsDTORoleCreateRoleDto } from '../model/knots-dto-role-create-role-dto';
|
||||
// @ts-ignore
|
||||
import { KnotsDTORoleDeleteRoleDto } from '../model/knots-dto-role-delete-role-dto';
|
||||
// @ts-ignore
|
||||
import { KnotsEndpointsRoleCreateRoleRequest } from '../model/knots-endpoints-role-create-role-request';
|
||||
// @ts-ignore
|
||||
import { KnotsEndpointsRoleRoleDto } from '../model/knots-endpoints-role-role-dto';
|
||||
|
||||
// @ts-ignore
|
||||
import { BASE_PATH, COLLECTION_FORMATS } from '../variables';
|
||||
@@ -41,23 +43,26 @@ export class RolesService extends BaseService {
|
||||
|
||||
/**
|
||||
* @endpoint post /API/roles
|
||||
* @param knotsDTORoleCreateRoleDto
|
||||
* @param knotsEndpointsRoleCreateRoleRequest
|
||||
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
||||
* @param reportProgress flag to report request and response progress.
|
||||
* @param options additional options
|
||||
*/
|
||||
public createRoleEndpoint(knotsDTORoleCreateRoleDto: KnotsDTORoleCreateRoleDto, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/problem+json', context?: HttpContext, transferCache?: boolean}): Observable<any>;
|
||||
public createRoleEndpoint(knotsDTORoleCreateRoleDto: KnotsDTORoleCreateRoleDto, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/problem+json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<any>>;
|
||||
public createRoleEndpoint(knotsDTORoleCreateRoleDto: KnotsDTORoleCreateRoleDto, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/problem+json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<any>>;
|
||||
public createRoleEndpoint(knotsDTORoleCreateRoleDto: KnotsDTORoleCreateRoleDto, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/problem+json', context?: HttpContext, transferCache?: boolean}): Observable<any> {
|
||||
if (knotsDTORoleCreateRoleDto === null || knotsDTORoleCreateRoleDto === undefined) {
|
||||
throw new Error('Required parameter knotsDTORoleCreateRoleDto was null or undefined when calling createRoleEndpoint.');
|
||||
public createRoleEndpoint(knotsEndpointsRoleCreateRoleRequest: KnotsEndpointsRoleCreateRoleRequest, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<KnotsEndpointsRoleRoleDto>;
|
||||
public createRoleEndpoint(knotsEndpointsRoleCreateRoleRequest: KnotsEndpointsRoleCreateRoleRequest, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpResponse<KnotsEndpointsRoleRoleDto>>;
|
||||
public createRoleEndpoint(knotsEndpointsRoleCreateRoleRequest: KnotsEndpointsRoleCreateRoleRequest, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<HttpEvent<KnotsEndpointsRoleRoleDto>>;
|
||||
public createRoleEndpoint(knotsEndpointsRoleCreateRoleRequest: KnotsEndpointsRoleCreateRoleRequest, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable<any> {
|
||||
if (knotsEndpointsRoleCreateRoleRequest === null || knotsEndpointsRoleCreateRoleRequest === undefined) {
|
||||
throw new Error('Required parameter knotsEndpointsRoleCreateRoleRequest was null or undefined when calling createRoleEndpoint.');
|
||||
}
|
||||
|
||||
let localVarHeaders = this.defaultHeaders;
|
||||
|
||||
// authentication (JWTBearerAuth) required
|
||||
localVarHeaders = this.configuration.addCredentialToHeaders('JWTBearerAuth', 'Authorization', localVarHeaders, 'Bearer ');
|
||||
|
||||
const localVarHttpHeaderAcceptSelected: string | undefined = options?.httpHeaderAccept ?? this.configuration.selectHeaderAccept([
|
||||
'application/problem+json'
|
||||
'application/json'
|
||||
]);
|
||||
if (localVarHttpHeaderAcceptSelected !== undefined) {
|
||||
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
|
||||
@@ -90,10 +95,10 @@ export class RolesService extends BaseService {
|
||||
|
||||
let localVarPath = `/API/roles`;
|
||||
const { basePath, withCredentials } = this.configuration;
|
||||
return this.httpClient.request<any>('post', `${basePath}${localVarPath}`,
|
||||
return this.httpClient.request<KnotsEndpointsRoleRoleDto>('post', `${basePath}${localVarPath}`,
|
||||
{
|
||||
context: localVarHttpContext,
|
||||
body: knotsDTORoleCreateRoleDto,
|
||||
body: knotsEndpointsRoleCreateRoleRequest,
|
||||
responseType: <any>responseType_,
|
||||
...(withCredentials ? { withCredentials } : {}),
|
||||
headers: localVarHeaders,
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* Knots
|
||||
*
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
|
||||
export interface KnotsEndpointsDiscussionMemberWithRoleDto {
|
||||
userId?: number;
|
||||
username?: string;
|
||||
roleId?: number | null;
|
||||
roleLibelle?: string | null;
|
||||
}
|
||||
|
||||
+2
-2
@@ -9,7 +9,7 @@
|
||||
*/
|
||||
|
||||
|
||||
export interface KnotsDTORoleCreateRoleDto {
|
||||
libelle: string;
|
||||
export interface KnotsEndpointsRoleAssignRoleRequest {
|
||||
roleId?: number;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
* Knots
|
||||
*
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
|
||||
export interface KnotsEndpointsRoleCreateRoleRequest {
|
||||
libelle?: string;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* Knots
|
||||
*
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
|
||||
export interface KnotsEndpointsRoleRoleDto {
|
||||
id?: number;
|
||||
libelle?: string;
|
||||
}
|
||||
|
||||
@@ -11,7 +11,6 @@ export * from './knots-dto-key-delete-key-dto';
|
||||
export * from './knots-dto-message-create-message-dto';
|
||||
export * from './knots-dto-message-delete-message-dto';
|
||||
export * from './knots-dto-message-get-message-details-dto';
|
||||
export * from './knots-dto-role-create-role-dto';
|
||||
export * from './knots-dto-role-delete-role-dto';
|
||||
export * from './knots-dto-user-create-user-dto';
|
||||
export * from './knots-dto-user-delete-user-dto';
|
||||
@@ -25,3 +24,7 @@ export * from './knots-dto-user-update-user-profile-picture-dto';
|
||||
export * from './knots-dto-user-update-username-dto';
|
||||
export * from './knots-endpoints-discussion-create-group-discussion-request';
|
||||
export * from './knots-endpoints-discussion-create-private-discussion-request';
|
||||
export * from './knots-endpoints-discussion-member-with-role-dto';
|
||||
export * from './knots-endpoints-role-assign-role-request';
|
||||
export * from './knots-endpoints-role-create-role-request';
|
||||
export * from './knots-endpoints-role-role-dto';
|
||||
|
||||
Reference in New Issue
Block a user