Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
1e8de8e
Contact us static UI page added
Apr 12, 2022
033d014
Updating ReadMe with Documentation
Hardik27 Apr 12, 2022
68da741
Update README.md
Hardik27 Apr 12, 2022
d7a7582
Contact-Us page done
Apr 17, 2022
7ea1b83
Merge pull request #1 from Hardik27/feature/Contact-Us-Page
vsricharan16 Apr 17, 2022
f9412d7
CORS Bug fix
Apr 18, 2022
adf2bc1
Merge pull request #2 from Hardik27/feature/Bug-Fixes
Hardik27 Apr 18, 2022
eb463f9
Adding a Global pom file for importing easily
vsricharan16 Apr 18, 2022
720bb05
Merge pull request #3 from Hardik27/adding-global-pom-file
Hardik27 Apr 18, 2022
53a3c20
Create Event button added and minor bug fix
Apr 19, 2022
6068e8d
Merge pull request #4 from Hardik27/feature/Bug-Fixes
Hardik27 Apr 19, 2022
6b8c365
Create Event Form Added (#6)
Hardik27 Apr 19, 2022
a3dfad4
Adding Event Service for handling events
vsricharan16 Apr 20, 2022
3619328
Merge pull request #7 from Hardik27/adding-event-service-handler
Hardik27 Apr 21, 2022
ea19ace
Minor error in pom.xml and few config files
vsricharan16 Apr 21, 2022
fa69b81
Hosting Event Service on 8091
vsricharan16 Apr 21, 2022
e33511a
Merge pull request #8 from Hardik27/event-service-handler-minor-bug
Hardik27 Apr 21, 2022
ae41c55
Merge pull request #9 from Hardik27/main
Hardik27 Apr 21, 2022
aaeab12
UI Merged with backend
Apr 21, 2022
f1dee85
Location field changed to Address
Apr 21, 2022
c462bb8
Adding tests for Event Service functions (#10)
vsricharan16 Apr 21, 2022
6ecc1ad
UI Integrated with backend (#11)
Hardik27 Apr 21, 2022
4710435
Minor Changes in Contact us page
Apr 21, 2022
5581b70
Merge pull request #12 from Hardik27/feature/Create_Form_UI_Integration
Hardik27 Apr 21, 2022
2c88ede
Merge pull request #13 from Hardik27/main
Hardik27 Apr 23, 2022
532136b
DOB bug fixed
Apr 23, 2022
5bb2004
Registration form bug fixes
Apr 23, 2022
f4511d0
Merge pull request #14 from Hardik27/feature/Bug-Fixes
Axel0944 Apr 25, 2022
ef7dc44
Search bar ui added (#15)
Hardik27 Apr 26, 2022
80aece6
Adding Search API and fixing few test cases
vsricharan16 Apr 26, 2022
6fae19f
Merge pull request #16 from Hardik27/event-service-search-api
Hardik27 Apr 26, 2022
026d861
UI backend integration for search API (#17)
Hardik27 Apr 26, 2022
ffabc4e
Fixed disapperaring details on refresh
Axel0944 Apr 28, 2022
1fad678
Converting user to User
Axel0944 Apr 28, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

# Log file
*.log
*.iml

# BlueJ files
*.ctxt
Expand Down
35 changes: 17 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
# SocialServiceFinder
My first commit
## SocialServiceFinder

### [Video Link](https://www.youtube.com/watch?v=DoI5_Ww7daA)

### Abstract

There are many people who would like to do community services, but don’t know the places that offer the opportunity for the same. Our project aims to provide a platform not only to people who seek non-profit organizations for any opportunities where they can contribute, but also to encourage more people by rewarding them for doing good deeds. We also plan on helping the organizations that are looking for volunteers to help them.

We are planning to create a web platform that creates and manages volunteering opportunities (posted by social service organizations). Users can search for an opportunity based on various criterias like location, type of service required, type of organizations listing the opportunities, etc. For motivating the users, rewards from various partner companies will be offered to those who volunteer in these events. We are planning to implement a microservice based architecture using SOLID principles, and create a complete system with a reactive frontend, scalable backend software and a NOSQL database. For internal communication within the services, we will be using Messaging channels between them. We are focusing on microservice based architecture because we want to create a robust, maintainable and a highly scalable system in a way that makes it easy to add more features in the future, supporting Agile methodology. We are also planning to cover the features using functional tests.

### Setup

#### Pre-reqs:
1. Java
2. Angular Cli
3. MongoDb
4. Git

#CORS Filter (Change the port number accordingly)
@Bean
public CorsFilter corsFilter() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.setAllowCredentials(true);
corsConfiguration.setAllowedOrigins(Arrays.asList("http://localhost:4202"));
corsConfiguration.setAllowedHeaders(Arrays.asList("Origin", "Access-Control-Allow-Origin", "Content-Type",
"Accept", "Authorization", "Origin, Accept", "X-Requested-With",
"Access-Control-Request-Method", "Access-Control-Request-Headers"));
corsConfiguration.setExposedHeaders(Arrays.asList("Origin", "Content-Type", "Accept", "Authorization",
"Access-Control-Allow-Origin", "Access-Control-Allow-Origin", "Access-Control-Allow-Credentials"));
corsConfiguration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS"));
UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
return new CorsFilter(urlBasedCorsConfigurationSource);
}
54 changes: 54 additions & 0 deletions eventservice/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.socialservicefinder</groupId>
<artifactId>eventservice</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eventservice</name>
<description>Event Service Folder for Social Service Finder Project</description>
<properties>
<java.version>11</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.socialservicefinder.eventservice;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

import java.util.Arrays;

@SpringBootApplication
public class EventServiceApplication {
public static void main(String[] args) {
SpringApplication.run(EventServiceApplication.class, args);
}
//CORS is some mechanism added by mordern browswers. just copy pasting. More Info: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
@Bean
public CorsFilter corsFilter() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.setAllowCredentials(true);
corsConfiguration.setAllowedOrigins(Arrays.asList("http://localhost:4200"));
corsConfiguration.setAllowedHeaders(Arrays.asList("Origin", "Access-Control-Allow-Origin", "Content-Type",
"Accept", "Authorization", "Origin, Accept", "X-Requested-With",
"Access-Control-Request-Method", "Access-Control-Request-Headers"));
corsConfiguration.setExposedHeaders(Arrays.asList("Origin", "Content-Type", "Accept", "Authorization",
"Access-Control-Allow-Origin", "Access-Control-Allow-Origin", "Access-Control-Allow-Credentials"));
corsConfiguration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS"));
UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
return new CorsFilter(urlBasedCorsConfigurationSource);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.socialservicefinder.eventservice.controller;

import com.socialservicefinder.eventservice.dto.Event;
import com.socialservicefinder.eventservice.dto.SearchQuery;
import com.socialservicefinder.eventservice.exceptions.InvalidEventException;
import com.socialservicefinder.eventservice.service.EventService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Collections;
import java.util.List;

@RestController
@RequestMapping(path = "api/v1/event")
public class EventController {
private final EventService eventService;

@Autowired
public EventController(EventService eventService) {
this.eventService = eventService;
}

@GetMapping
public List<Event> getEvents() {
return eventService.getEvents();
}

@PostMapping
public ResponseEntity<String> addEvent(@RequestBody Event event) {
try {
eventService.addEvent(event);
return ResponseEntity.status(HttpStatus.OK).body(null);
} catch (InvalidEventException e) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage());
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null);
}
}

@GetMapping
@RequestMapping("/search/")
public List<Event> getMatchingEvents(@RequestBody SearchQuery q) {
try {
List<Event> events = eventService.getMatchingEvents(q.getQuery());
System.out.println(q.getQuery());
return events;
} catch (Exception e) {
return Collections.emptyList();
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
package com.socialservicefinder.eventservice.dto;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.util.UUID;

@Document("events")
public class Event {
@Id
private String id;
private String name;
private String description;
private String phoneNo;
private String address;
private String city;
private long rewards;
private long pinCode;
private String email;
private String POCName;

@Override
public String toString() {
return "Event [name=" + name + ", description=" + description + ", phoneNo=" + phoneNo + ", email="+email+", POCName"+ POCName
+ ", address=" + address + ", city=" + city + ", rewards=" + rewards + ", pinCode="
+ pinCode + "]";
}

public Event() {
super();
}

public Event(String name, String description, String phoneNo, String address, String city, long rewards, long pinCode, String email, String POCName) {
this.name = name;
this.description = description;
this.phoneNo = phoneNo;
this.address = address;
this.city = city;
this.rewards = rewards;
this.pinCode = pinCode;
this.email = email;
this.POCName = POCName;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getPOCName() {
return POCName;
}

public void setPOCName(String POCName) {
this.POCName = POCName;
}

public void assign_id() {
this.id = UUID.randomUUID().toString();
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}

public String getPhoneNo() {
return phoneNo;
}

public void setPhoneNo(String phoneNo) {
this.phoneNo = phoneNo;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

public String getCity() {
return city;
}

public void setCity(String city) {
this.city = city;
}

public long getRewards() {
return rewards;
}

public void setRewards(long rewards) {
this.rewards = rewards;
}

public long getPinCode() {
return pinCode;
}

public void setPinCode(long pinCode) {
this.pinCode = pinCode;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.socialservicefinder.eventservice.dto;

public class SearchQuery {
private String query;

public String getQuery() {
return query;
}

public void setQuery(String query) {
this.query = query;
}

@Override
public String toString() {
return "Search Query [query=" + query + "]";
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.socialservicefinder.eventservice.exceptions;

public class InvalidEventException extends RuntimeException {
public InvalidEventException() {
super();
}

public InvalidEventException(String errorMessage) {
super(errorMessage);
}

public InvalidEventException(String errorMessage, Throwable throwable) {
super(errorMessage, throwable);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.socialservicefinder.eventservice.repository;

import com.socialservicefinder.eventservice.dto.Event;
import org.springframework.data.mongodb.repository.MongoRepository;

import java.util.List;

public interface EventRepository extends MongoRepository<Event, String> {
List<Event> findEventByNameContains(String name);
}
Loading