diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..d843f34
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/ironhack/assosiationofnurses/AssosiationOfNursesApplication.java b/src/main/java/com/ironhack/assosiationofnurses/AssosiationOfNursesApplication.java
new file mode 100644
index 0000000..45d8d31
--- /dev/null
+++ b/src/main/java/com/ironhack/assosiationofnurses/AssosiationOfNursesApplication.java
@@ -0,0 +1,13 @@
+package com.ironhack.assosiationofnurses;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class AssosiationOfNursesApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(AssosiationOfNursesApplication.class, args);
+ }
+
+}
diff --git a/src/main/java/com/ironhack/assosiationofnurses/enums/GuestStatus.java b/src/main/java/com/ironhack/assosiationofnurses/enums/GuestStatus.java
new file mode 100644
index 0000000..3b2dafe
--- /dev/null
+++ b/src/main/java/com/ironhack/assosiationofnurses/enums/GuestStatus.java
@@ -0,0 +1,8 @@
+package com.ironhack.assosiationofnurses.enums;
+//Task2
+public enum GuestStatus {
+
+ ATTENDING,
+ NOT_ATTENDING,
+ NO_RESPONSE
+}
diff --git a/src/main/java/com/ironhack/assosiationofnurses/enums/StatusType.java b/src/main/java/com/ironhack/assosiationofnurses/enums/StatusType.java
new file mode 100644
index 0000000..01c9edc
--- /dev/null
+++ b/src/main/java/com/ironhack/assosiationofnurses/enums/StatusType.java
@@ -0,0 +1,7 @@
+package com.ironhack.assosiationofnurses.enums;
+// Task1
+public enum StatusType {
+
+ ACTIVE,
+ LAPSED
+}
diff --git a/src/main/java/com/ironhack/assosiationofnurses/loader/DataLoader.java b/src/main/java/com/ironhack/assosiationofnurses/loader/DataLoader.java
new file mode 100644
index 0000000..14bdaba
--- /dev/null
+++ b/src/main/java/com/ironhack/assosiationofnurses/loader/DataLoader.java
@@ -0,0 +1,247 @@
+package com.ironhack.assosiationofnurses.loader;
+// Task1/Task2
+
+import com.ironhack.assosiationofnurses.enums.GuestStatus;
+import com.ironhack.assosiationofnurses.enums.StatusType;
+import com.ironhack.assosiationofnurses.model.*;
+import com.ironhack.assosiationofnurses.repository.*;
+import jakarta.transaction.Transactional;
+import lombok.RequiredArgsConstructor;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDate;
+import java.util.HashSet;
+import java.util.Set;
+
+@Component
+@RequiredArgsConstructor
+public class DataLoader implements CommandLineRunner {
+
+ private final chapterRepository chapterRepository;
+ private final memberRepository memberRepository;
+ private final eventRepository eventRepository;
+ private final speakersRepository speakersRepository;
+ private final guestRepository guestRepository;
+
+
+ @Override
+ @Transactional
+ public void run(String... args) throws Exception {
+
+
+ Chapter chapter = new Chapter();
+ chapter.setName("Chapter Alpha");
+ chapter.setDistrict("North Hessen");
+ chapterRepository.save(chapter);
+
+ Chapter chapter2 = new Chapter();
+ chapter2.setName("Chapter Beta");
+ chapter2.setDistrict("South Hessen");
+ chapterRepository.save(chapter2);
+
+ Chapter chapter3 = new Chapter();
+ chapter3.setName("Chapter Gamma");
+ chapter3.setDistrict("BRE");
+ chapterRepository.save(chapter3);
+
+ Chapter chapter4 = new Chapter();
+ chapter4.setName("Chapter Bryta");
+ chapter4.setDistrict("FRA North");
+ chapterRepository.save(chapter4);
+
+ Member president = new Member();
+ president.setName("John Smith");
+ president.setRenewalDate(LocalDate.now());
+ president.setStatus(StatusType.ACTIVE);
+ president.setChapter(chapter);
+ chapter.setPresident(president);
+
+ chapterRepository.save(chapter);
+ memberRepository.save(president);
+
+ Member president2 = new Member();
+ president2.setName("Alba George");
+ president2.setRenewalDate(LocalDate.now());
+ president2.setStatus(StatusType.ACTIVE);
+ president2.setChapter(chapter2);
+ chapter2.setPresident(president2);
+
+ chapterRepository.save(chapter2);
+ memberRepository.save(president2);
+
+
+ Member president3 = new Member();
+ president3.setName("Pablo Rodrigez");
+ president3.setRenewalDate(LocalDate.now());
+ president3.setStatus(StatusType.ACTIVE);
+ president3.setChapter(chapter3);
+ chapter3.setPresident(president3);
+
+ chapterRepository.save(chapter3);
+ memberRepository.save(president3);
+
+ Member president4 = new Member();
+ president4.setName("Bob Smith");
+ president4.setRenewalDate(LocalDate.now());
+ president4.setStatus(StatusType.ACTIVE);
+ president4.setChapter(chapter4);
+ chapter4.setPresident(president4);
+
+ chapterRepository.save(chapter4);
+ memberRepository.save(president4);
+
+
+ Member member = new Member();
+ member.setName("Alice Newman");
+ member.setRenewalDate(LocalDate.now());
+ member.setStatus(StatusType.ACTIVE);
+ member.setChapter(chapter);
+
+ chapter.getMembers().add(member);
+ memberRepository.save(member);
+
+ Member member2 = new Member();
+ member2.setName("Teresa Kaufman");
+ member2.setRenewalDate(LocalDate.now());
+ member2.setStatus(StatusType.ACTIVE);
+ member2.setChapter(chapter2);
+
+ chapter2.getMembers().add(member2);
+ memberRepository.save(member2);
+
+
+ Member member3 = new Member();
+ member3.setName("Amira Ali");
+ member3.setRenewalDate(LocalDate.now());
+ member3.setStatus(StatusType.ACTIVE);
+ member3.setChapter(chapter3);
+
+ chapter3.getMembers().add(member3);
+ memberRepository.save(member3);
+
+
+ Member member4 = new Member();
+ member4.setName("Raul Moreno");
+ member4.setRenewalDate(LocalDate.now());
+ member4.setStatus(StatusType.ACTIVE);
+ member4.setChapter(chapter4);
+
+ chapter4.getMembers().add(member4);
+ memberRepository.save(member4);
+
+
+ Member member5 = new Member();
+ member5.setName("Charlie Dill");
+ member5.setRenewalDate(LocalDate.now());
+ member5.setStatus(StatusType.ACTIVE);
+ member5.setChapter(chapter);
+
+ chapter.getMembers().add(member5);
+ memberRepository.save(member5);
+
+
+ Member member6 = new Member();
+ member6.setName("David Moreno");
+ member6.setRenewalDate(LocalDate.now());
+ member6.setStatus(StatusType.ACTIVE);
+ member6.setChapter(chapter2);
+
+ chapter.getMembers().add(member6);
+ memberRepository.save(member6);
+
+
+ Conference conference = new Conference();
+ conference.setEventDate(LocalDate.now().plusDays(15));
+ conference.setDuration(30);
+ conference.setLocation("Halle A");
+ conference.setTitle("Health and wealthy");
+
+ Set speakersSet = new HashSet<>();
+
+ Speakers speaker = new Speakers();
+ speaker.setName("David Walid");
+ speaker.setPresentationDuration(15);
+ speaker.setConference(conference);
+ speakersSet.add(speaker);
+
+ Speakers speaker2 = new Speakers();
+ speaker2.setName("Kaya Raya");
+ speaker2.setPresentationDuration(12);
+ speaker2.setConference(conference);
+ speakersSet.add(speaker2);
+
+ conference.setSpeakers(speakersSet);
+
+ Set guest = new HashSet<>();
+
+ Guest guest1 = new Guest();
+ guest1.setName("Ronald Maroon");
+ guest1.setStatus(GuestStatus.ATTENDING);
+ guest1.setEvent(conference);
+ conference.getGuests().add(guest1);
+ guestRepository.save(guest1);
+
+ Guest guest2 = new Guest();
+ guest2.setName("Gabi Ahmad");
+ guest2.setStatus(GuestStatus.NOT_ATTENDING);
+ guest2.setEvent(conference);
+ conference.getGuests().add(guest2);
+ guestRepository.save(guest2);
+
+ Guest guest3 = new Guest();
+ guest3.setName("Tim Schreck");
+ guest3.setStatus(GuestStatus.NOT_ATTENDING);
+ guest3.setEvent(conference);
+ conference.getGuests().add(guest3);
+ guestRepository.save(guest3);
+
+ eventRepository.save(conference);
+
+ Exhibition exhibition = new Exhibition();
+ exhibition.setEventDate(LocalDate.now().plusDays(20));
+ exhibition.setDuration(30);
+ exhibition.setLocation("Halle B");
+ exhibition.setTitle("Art of Salvador Dali");
+
+ Speakers speaker3 = new Speakers();
+ speaker3.setName("Romeo Carno");
+ speaker3.setPresentationDuration(15);
+ speaker3.setExhibition(exhibition);
+ speakersSet.add(speaker3);
+
+ Speakers speaker4 = new Speakers();
+ speaker4.setName("Ariadna Dali");
+ speaker4.setPresentationDuration(15);
+ speaker4.setExhibition(exhibition);
+ speakersSet.add(speaker4);
+
+ exhibition.setSpeaker(speakersSet);
+
+ Guest guest5 = new Guest();
+ guest5.setName("Carlos Rodrigues");
+ guest5.setStatus(GuestStatus.NOT_ATTENDING);
+ guest5.setEvent(exhibition);
+ exhibition.getGuests().add(guest5);
+ guestRepository.save(guest5);
+
+ Guest guest6 = new Guest();
+ guest6.setName("Doron Cabillo");
+ guest6.setStatus(GuestStatus.NOT_ATTENDING);
+ guest6.setEvent(exhibition);
+ exhibition.getGuests().add(guest6);
+ guestRepository.save(guest6);
+
+ Guest guest7 = new Guest();
+ guest7.setName("Lara Marinova");
+ guest7.setStatus(GuestStatus.NOT_ATTENDING);
+ guest7.setEvent(exhibition);
+ exhibition.getGuests().add(guest7);
+ guestRepository.save(guest7);
+
+
+ eventRepository.save(exhibition);
+
+
+ }
+}
diff --git a/src/main/java/com/ironhack/assosiationofnurses/model/Chapter.java b/src/main/java/com/ironhack/assosiationofnurses/model/Chapter.java
new file mode 100644
index 0000000..5c9fbba
--- /dev/null
+++ b/src/main/java/com/ironhack/assosiationofnurses/model/Chapter.java
@@ -0,0 +1,38 @@
+package com.ironhack.assosiationofnurses.model;
+// Task1
+import jakarta.persistence.*;
+import lombok.Data;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+@Table(name = "chapter")
+public class Chapter {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ private String name;
+ private String district;
+
+
+
+ @OneToOne
+ @JoinColumn(name = "president_id")
+ private Member president;
+
+ @OneToMany(mappedBy = "chapter", cascade = CascadeType.ALL)
+ private Set members = new HashSet<>();
+
+}
diff --git a/src/main/java/com/ironhack/assosiationofnurses/model/Conference.java b/src/main/java/com/ironhack/assosiationofnurses/model/Conference.java
new file mode 100644
index 0000000..89bc561
--- /dev/null
+++ b/src/main/java/com/ironhack/assosiationofnurses/model/Conference.java
@@ -0,0 +1,21 @@
+package com.ironhack.assosiationofnurses.model;
+//Task2
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.util.HashSet;
+import java.util.Set;
+
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+@DiscriminatorValue("CONFERENCE")
+public class Conference extends Event{
+
+ @OneToMany(mappedBy = "conference",cascade = CascadeType.ALL)
+ private Set speakers=new HashSet<>();
+
+}
diff --git a/src/main/java/com/ironhack/assosiationofnurses/model/Event.java b/src/main/java/com/ironhack/assosiationofnurses/model/Event.java
new file mode 100644
index 0000000..6eafca7
--- /dev/null
+++ b/src/main/java/com/ironhack/assosiationofnurses/model/Event.java
@@ -0,0 +1,33 @@
+package com.ironhack.assosiationofnurses.model;
+
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.time.LocalDate;
+import java.util.HashSet;
+import java.util.Set;
+//Task2
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
+@DiscriminatorColumn(name = "event_type")
+public abstract class Event {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ private LocalDate eventDate;
+ private int duration;
+ private String location;
+ private String title;
+
+ @OneToMany(mappedBy = "event", cascade = CascadeType.ALL)
+ private Set guests = new HashSet<>();
+
+
+}
diff --git a/src/main/java/com/ironhack/assosiationofnurses/model/Exhibition.java b/src/main/java/com/ironhack/assosiationofnurses/model/Exhibition.java
new file mode 100644
index 0000000..0022742
--- /dev/null
+++ b/src/main/java/com/ironhack/assosiationofnurses/model/Exhibition.java
@@ -0,0 +1,20 @@
+package com.ironhack.assosiationofnurses.model;
+//Task2
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.util.HashSet;
+import java.util.Set;
+
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+@DiscriminatorValue("Exhibition")
+public class Exhibition extends Event{
+
+ @OneToMany(mappedBy = "exhibition", cascade = CascadeType.ALL)
+ private Set speaker=new HashSet<>();
+}
diff --git a/src/main/java/com/ironhack/assosiationofnurses/model/Guest.java b/src/main/java/com/ironhack/assosiationofnurses/model/Guest.java
new file mode 100644
index 0000000..842cb0c
--- /dev/null
+++ b/src/main/java/com/ironhack/assosiationofnurses/model/Guest.java
@@ -0,0 +1,25 @@
+package com.ironhack.assosiationofnurses.model;
+//Task2
+import com.ironhack.assosiationofnurses.enums.GuestStatus;
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Entity
+@Setter
+@Getter
+@NoArgsConstructor
+public class Guest {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+ private String name;
+ @Enumerated(EnumType.STRING)
+ private GuestStatus status;
+
+ @ManyToOne
+ @JoinColumn(name="event_id")
+ private Event event;
+}
diff --git a/src/main/java/com/ironhack/assosiationofnurses/model/Member.java b/src/main/java/com/ironhack/assosiationofnurses/model/Member.java
new file mode 100644
index 0000000..303217f
--- /dev/null
+++ b/src/main/java/com/ironhack/assosiationofnurses/model/Member.java
@@ -0,0 +1,37 @@
+package com.ironhack.assosiationofnurses.model;
+// Task1
+import ch.qos.logback.core.status.Status;
+import com.ironhack.assosiationofnurses.enums.StatusType;
+import jakarta.persistence.*;
+import lombok.Data;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+//Task1
+import java.time.LocalDate;
+
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+@Table(name = "member")
+public class Member {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ private String name;
+ private LocalDate renewalDate;
+
+ @Enumerated(EnumType.STRING)
+ private StatusType status;
+
+ @OneToOne(mappedBy = "president")
+ private Chapter presidentOf;
+
+ @ManyToOne
+ @JoinColumn(name = "chapter_id")
+ private Chapter chapter;
+
+}
diff --git a/src/main/java/com/ironhack/assosiationofnurses/model/Speakers.java b/src/main/java/com/ironhack/assosiationofnurses/model/Speakers.java
new file mode 100644
index 0000000..ea13f28
--- /dev/null
+++ b/src/main/java/com/ironhack/assosiationofnurses/model/Speakers.java
@@ -0,0 +1,29 @@
+package com.ironhack.assosiationofnurses.model;
+//Task2
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Entity
+@Getter
+@Setter
+@NoArgsConstructor
+public class Speakers {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+
+ private String name;
+ private int presentationDuration;
+
+ @ManyToOne
+ @JoinColumn(name="conference_id")
+ private Conference conference;
+
+ @ManyToOne
+ @JoinColumn(name="exhibition_id")
+ private Exhibition exhibition;
+
+}
diff --git a/src/main/java/com/ironhack/assosiationofnurses/repository/chapterRepository.java b/src/main/java/com/ironhack/assosiationofnurses/repository/chapterRepository.java
new file mode 100644
index 0000000..afde44a
--- /dev/null
+++ b/src/main/java/com/ironhack/assosiationofnurses/repository/chapterRepository.java
@@ -0,0 +1,7 @@
+package com.ironhack.assosiationofnurses.repository;
+//Task1
+import com.ironhack.assosiationofnurses.model.Chapter;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface chapterRepository extends JpaRepository {
+}
diff --git a/src/main/java/com/ironhack/assosiationofnurses/repository/eventRepository.java b/src/main/java/com/ironhack/assosiationofnurses/repository/eventRepository.java
new file mode 100644
index 0000000..1ef20e1
--- /dev/null
+++ b/src/main/java/com/ironhack/assosiationofnurses/repository/eventRepository.java
@@ -0,0 +1,7 @@
+package com.ironhack.assosiationofnurses.repository;
+//Task2
+import com.ironhack.assosiationofnurses.model.Event;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface eventRepository extends JpaRepository {
+}
diff --git a/src/main/java/com/ironhack/assosiationofnurses/repository/guestRepository.java b/src/main/java/com/ironhack/assosiationofnurses/repository/guestRepository.java
new file mode 100644
index 0000000..8956f03
--- /dev/null
+++ b/src/main/java/com/ironhack/assosiationofnurses/repository/guestRepository.java
@@ -0,0 +1,7 @@
+package com.ironhack.assosiationofnurses.repository;
+//Task2
+import com.ironhack.assosiationofnurses.model.Guest;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface guestRepository extends JpaRepository {
+}
diff --git a/src/main/java/com/ironhack/assosiationofnurses/repository/memberRepository.java b/src/main/java/com/ironhack/assosiationofnurses/repository/memberRepository.java
new file mode 100644
index 0000000..5cf5239
--- /dev/null
+++ b/src/main/java/com/ironhack/assosiationofnurses/repository/memberRepository.java
@@ -0,0 +1,7 @@
+package com.ironhack.assosiationofnurses.repository;
+//Task1
+import com.ironhack.assosiationofnurses.model.Member;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface memberRepository extends JpaRepository {
+}
diff --git a/src/main/java/com/ironhack/assosiationofnurses/repository/speakersRepository.java b/src/main/java/com/ironhack/assosiationofnurses/repository/speakersRepository.java
new file mode 100644
index 0000000..aae3a99
--- /dev/null
+++ b/src/main/java/com/ironhack/assosiationofnurses/repository/speakersRepository.java
@@ -0,0 +1,7 @@
+package com.ironhack.assosiationofnurses.repository;
+//Task2
+import com.ironhack.assosiationofnurses.model.Speakers;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface speakersRepository extends JpaRepository {
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
new file mode 100644
index 0000000..1cd148a
--- /dev/null
+++ b/src/main/resources/application.properties
@@ -0,0 +1,7 @@
+spring.application.name=AssosiationOfNurses
+spring.datasource.url=jdbc:mysql://localhost:3306/association_ns
+spring.datasource.username=ayordano
+spring.datasource.password=aa22SS3645?
+
+spring.jpa.hibernate.ddl-auto=create
+spring.jpa.show-sql=true
diff --git a/src/test/java/com/ironhack/assosiationofnurses/AssosiationOfNursesApplicationTests.java b/src/test/java/com/ironhack/assosiationofnurses/AssosiationOfNursesApplicationTests.java
new file mode 100644
index 0000000..f970e7e
--- /dev/null
+++ b/src/test/java/com/ironhack/assosiationofnurses/AssosiationOfNursesApplicationTests.java
@@ -0,0 +1,13 @@
+package com.ironhack.assosiationofnurses;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class AssosiationOfNursesApplicationTests {
+
+ @Test
+ void contextLoads() {
+ }
+
+}