Skip to content

Commit

Permalink
Merge pull request #188 from HackRVA/issue-186-187
Browse files Browse the repository at this point in the history
Issue 186-187: Allow member to add full name when creating a new member
  • Loading branch information
pacna authored Oct 5, 2024
2 parents b384a5e + 053df91 commit a632458
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 10 deletions.
5 changes: 4 additions & 1 deletion web/src/app/pages/member/member.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,10 @@ export class MemberComponent implements OnInit {
.open(
MemberRFIDManagementComponent,
member
? RFIDManagementFactory.createEditMemberData(member.email)
? RFIDManagementFactory.createEditMemberData(
member.name,
member.email
)
: RFIDManagementFactory.createNewMemberData()
)
.afterClosed()
Expand Down
2 changes: 1 addition & 1 deletion web/src/app/pages/user/user.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export class UserComponent implements OnInit {
this.dialog
.open(
MemberRFIDManagementComponent,
RFIDManagementFactory.createSelfData(this.user.email)
RFIDManagementFactory.createSelfData(this.user.name, this.user.email)
)
.afterClosed()
.pipe(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ <h2>{{ title }}</h2>
</header>

<form [formGroup]="rfidManagementGroup" (ngSubmit)="submit()">
<mat-form-field appearance="outline">
<mat-label>Full name</mat-label>
<input matInput formControlName="name" />
</mat-form-field>

<mat-form-field appearance="outline">
<mat-label>Email address</mat-label>
<input matInput type="email" formControlName="email" />
Expand All @@ -21,8 +26,9 @@ <h2>{{ title }}</h2>
<p>
This is an option if the new member's info hasn't been sent from paypal
yet. Check the table before trying to add them manually.
<strong>Note:</strong> if you add the member with this method, their email
has to match what they use in paypal.
<strong>Note:</strong> if you add the member with this method, their
<strong>email</strong> and <strong>full name</strong> have to match what
they use in PayPal.
</p>
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar';
import { MemberService } from '../../services';
import {
AssignRFIDRequest,
CreateMemberRequest,
RFIDManagementData,
RFIDManagementType,
} from '../../types';
Expand Down Expand Up @@ -44,6 +43,7 @@ export class MemberRFIDManagementComponent implements OnInit {
memberRFIDType: RFIDManagementType;

rfidManagementGroup: FormGroup = new FormGroup({
name: new FormControl<string>(null, [Validators.required]),
email: new FormControl<string>(null, [
Validators.required,
Validators.email,
Expand All @@ -69,7 +69,7 @@ export class MemberRFIDManagementComponent implements OnInit {

submit(): void {
let memberObs$: Observable<void> = null;
const request: CreateMemberRequest | AssignRFIDRequest = {
const request: AssignRFIDRequest = {
email: this.rfidManagementGroup.get('email').value,
rfid: this.rfidManagementGroup.get('rfid').value.toString(),
};
Expand All @@ -79,7 +79,10 @@ export class MemberRFIDManagementComponent implements OnInit {
memberObs$ = this.memberService.assignRFIDToSelf(request);
break;
case RFIDManagementType.New:
memberObs$ = this.memberService.assignNewMemberRFID(request);
memberObs$ = this.memberService.assignNewMemberRFID({
...request,
name: this.rfidManagementGroup.get('name').value,
});
break;
case RFIDManagementType.Edit:
memberObs$ = this.memberService.assignRFID(request);
Expand All @@ -101,11 +104,16 @@ export class MemberRFIDManagementComponent implements OnInit {
}

private handleData(data: RFIDManagementData): void {
if (data.name) {
this.rfidManagementGroup.get('name').setValue(data.name);
}

if (data.email) {
this.rfidManagementGroup.get('email').setValue(data.email);
}

if (data.shouldDisable) {
this.rfidManagementGroup.get('name').disable();
this.rfidManagementGroup.get('email').disable();
}

Expand Down
6 changes: 4 additions & 2 deletions web/src/app/shared/functions/rfid-management-factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@ import { RFIDManagementData, RFIDManagementType } from '../types';

export class RFIDManagementFactory {
public static createSelfData(
name: string,
email: string
): MatDialogConfig<RFIDManagementData> {
return {
autoFocus: false,
height: '380px',
width: '320px',
data: {
name: name,
email: email,
title: 'Assign RFID',
shouldDisable: true,
Expand All @@ -31,13 +32,14 @@ export class RFIDManagementFactory {
}

public static createEditMemberData(
name: string,
email: string
): MatDialogConfig<RFIDManagementData> {
return {
autoFocus: false,
height: '380px',
width: '320px',
data: {
name: name,
email: email,
title: 'Assign member RFID',
shouldDisable: true,
Expand Down
2 changes: 1 addition & 1 deletion web/src/app/shared/types/member.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export type AssignRFIDRequest = {
rfid: string;
};

export type CreateMemberRequest = AssignRFIDRequest;
export type CreateMemberRequest = AssignRFIDRequest & { name: string };

export type UpdateMemberRequest = {
fullName: string;
Expand Down
1 change: 1 addition & 0 deletions web/src/app/shared/types/rfid-management-data.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
export type RFIDManagementData = {
name: string;
title: string;
email: string;
shouldDisable: boolean;
Expand Down

0 comments on commit a632458

Please sign in to comment.