Skip to content

Commit 6fe5c7d

Browse files
authored
Merge pull request #355 from navikt/duplicateFix
Sjekker om personer invitert og lar bruker melde seg på
2 parents bb0aeac + e172fcf commit 6fe5c7d

File tree

2 files changed

+35
-19
lines changed

2 files changed

+35
-19
lines changed

force-app/main/default/classes/CourseRegistrationController.cls

+34-19
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ public without sharing class CourseRegistrationController {
22
@AuraEnabled
33
public static String createRegistration(String fields, String courseId) {
44
try {
5-
Boolean duplicate = checkForDuplicates(fields, courseId );
6-
if ( duplicate ) {
7-
return 'Du er allerede påmeldt dette kurset, vennligst bruk en annen e-postadresse.';
5+
Boolean duplicate = checkForDuplicates(fields, courseId);
6+
if (duplicate) {
7+
return 'Du er allerede påmeldt dette kurset, vennligst bruk en annen e-postadresse.';
88
}
99
Boolean courseIsFull = checkIfCourseIsFull(courseId);
1010
if (fields != null) {
@@ -18,7 +18,7 @@ public without sharing class CourseRegistrationController {
1818
return 'Det oppsto en feil. Prøv igjen senere.';
1919
}
2020
}
21-
21+
2222
@AuraEnabled
2323
public static Course__c getCourseFields(String courseId) {
2424
return [
@@ -56,12 +56,27 @@ public without sharing class CourseRegistrationController {
5656
return courseIsFull;
5757
}
5858

59+
private static List<CourseRegistration__c> getAlreadyInvited(CourseRegistrationModel model, String courseId) {
60+
List<CourseRegistration__c> alreadyInvited = [
61+
SELECT Id, Course__c, CourseParticipant__r.Email
62+
FROM CourseRegistration__c
63+
WHERE Course__c = :courseId AND CourseParticipant__r.Email = :model.email AND Status__c = 'Invitert'
64+
LIMIT 1
65+
];
66+
67+
return alreadyInvited;
68+
}
69+
5970
public static void insertRegistration(String fields, Id courseId) {
6071
if (fields != null) {
6172
Boolean courseIsFull = checkIfCourseIsFull(courseId);
6273
CourseRegistrationModel model = CourseRegistrationModel.parse(fields);
63-
CourseRegistration__c registration = new CourseRegistration__c();
74+
List<CourseRegistration__c> registrations = getAlreadyInvited(model, courseId);
75+
if (registrations.size() > 0) {
76+
delete registrations;
77+
}
6478

79+
CourseRegistration__c registration = new CourseRegistration__c();
6580
registration.ContactFirstName__c = model.firstName;
6681
registration.ContactLastName__c = model.lastName;
6782
registration.ContactEmail__c = model.email;
@@ -70,12 +85,11 @@ public without sharing class CourseRegistrationController {
7085
registration.County__c = model.county;
7186
registration.CompanyName__c = model.companyName;
7287
registration.Role__c = model.role;
73-
74-
registration.Allergies__c=model.allergies;
75-
registration.Workplace__c=model.workplace;
76-
registration.Invoice_address__c=model.invoiceAdress;
77-
registration.Invoice_reference__c=model.invoiceReference;
78-
registration.AdditionalInformation__c=model.additionalInformation;
88+
registration.Allergies__c = model.allergies;
89+
registration.Workplace__c = model.workplace;
90+
registration.Invoice_address__c = model.invoiceAdress;
91+
registration.Invoice_reference__c = model.invoiceReference;
92+
registration.AdditionalInformation__c = model.additionalInformation;
7993

8094
if (courseIsFull) {
8195
registration.Status__c = 'Venteliste';
@@ -86,15 +100,16 @@ public without sharing class CourseRegistrationController {
86100
insert registration;
87101
}
88102
}
89-
90-
public static Boolean checkForDuplicates( String fields, Id courseId ) {
103+
104+
public static Boolean checkForDuplicates(String fields, Id courseId) {
91105
CourseRegistrationModel model = CourseRegistrationModel.parse(fields);
92-
List<CourseRegistration__c> existingRecord =
93-
[SELECT Id, Course__c, CourseParticipant__r.Email
94-
FROM CourseRegistration__c
95-
WHERE Course__c =: courseId
96-
AND CourseParticipant__r.Email =: model.email LIMIT 1];
106+
List<CourseRegistration__c> existingRecord = [
107+
SELECT Id, Course__c, CourseParticipant__r.Email
108+
FROM CourseRegistration__c
109+
WHERE Course__c = :courseId AND CourseParticipant__r.Email = :model.email AND Status__c = 'Påmeldt'
110+
LIMIT 1
111+
];
97112

98113
return existingRecord.size() > 0;
99-
}
114+
}
100115
}

force-app/main/default/classes/CourseRegistrationModel.cls

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ public with sharing class CourseRegistrationModel {
55
public String phone;
66
public String companyNumber;
77
public String source;
8+
public String status;
89
public String county;
910
public String companyName;
1011
public String role;

0 commit comments

Comments
 (0)