Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.17.RELEASE</version>
<version>2.2.11.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.edimitri</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ public String getCalendar(@PathVariable int year, @PathVariable int month, @Path
for (CohortDay cohortDay: calendar) {
String dayDisplay = "";
if(cohortDay.getHoliday() != null) {
dayDisplay = String.format("%s", cohortDay.getHoliday().getName());
dayDisplay = String.format("%s", cohortDay.getHoliday().getHolidayName());
} else {
dayDisplay = cohortDay.getDate().getDayOfWeek().toString();
}
Expand All @@ -93,6 +93,4 @@ public String getCalendar(@PathVariable int year, @PathVariable int month, @Path
return body;
}



}
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,14 @@
@Controller
public class HolidayController {

private final HolidayRepository holidayRepository;

public HolidayController(HolidayRepository holidayRepository) {
this.holidayRepository = holidayRepository;
}
@Autowired
private HolidayRepository holidayRepository;

@GetMapping("/holidays")
public String cohortsIndex(Model model) {
List<Holiday> holidays = holidayRepository.findAll();
model.addAttribute("holidays", holidays);
model.addAttribute("byDate", Comparator.comparing(Holiday::getDate));

model.addAttribute("byDate", Comparator.comparing(Holiday::getHolidayDate));
return "holidays/holidays";
}

Expand All @@ -52,7 +48,7 @@ public String showUpdateHolidayForm(@PathVariable("id") Long id, Model model){
@PostMapping("holidays/{id}/edit")
public String editHoliday(@PathVariable Long id, @Valid Holiday editedHoliday, Model model) {
editedHoliday.setId(id);
editedHoliday.setName(editedHoliday.getName());
editedHoliday.setHolidayName(editedHoliday.getHolidayName());
holidayRepository.save(editedHoliday);
return "redirect:/holidays";
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.edimitri.cohortcalendar.controllers;

import com.edimitri.cohortcalendar.models.*;
import com.edimitri.cohortcalendar.repositories.Roles;
import com.edimitri.cohortcalendar.services.UserService;
import com.google.inject.internal.Errors;
import org.springframework.beans.factory.annotation.Autowired;
Expand Down Expand Up @@ -29,13 +30,12 @@ public class UserController {
@Autowired
private PasswordEncoder passwordEncoder;

/*@Autowired
private UserRoles userRoles;*/
@Autowired
private Roles userRoles;

@Autowired
private UserService userService;


@GetMapping("/sign-up")
public String showSignupForm(Model model) {
model.addAttribute("user", new User());
Expand All @@ -46,68 +46,53 @@ public String saveUser(@ModelAttribute User user) {
String hash = passwordEncoder.encode(user.getPassword());
user.setPassword(hash);
userRepository.save(user);
authenticate(user);
userService.authenticate(user);
return "index";
}

private void authenticate(User user) {
UserDetails userDetails = new UserWithRoles(user, Collections.emptyList());
Authentication auth = new UsernamePasswordAuthenticationToken(
userDetails,
userDetails.getPassword(),
userDetails.getAuthorities()
);
SecurityContext context = SecurityContextHolder.getContext();
context.setAuthentication(auth);
}

/*@PostMapping("/users/create")
public String saveUser(@Valid User user, Errors validation, Model m){

String username = user.getUsername();
User existingUsername = userRepository.findByUsername(username);
User existingEmail = userRepository.findByEmail(user.getEmail());

*//*
if(existingUsername != null){

validation.rejectValue("username", "user.username", "Duplicated username " + username);

}

if(existingEmail != null){

validation.rejectValue("email", "user.email", "Duplicated email " + user.getEmail());

}

*//*

if (validation.hasErrors()) {
m.addAttribute("errors", validation);
m.addAttribute("user", user);
return "users/create";
}

user.setPassword(passwordEncoder.encode(user.getPassword()));

// Custom validation if the username is taken

User newUser = UserRepository.save(user);

UserRole ur = new UserRole();
ur.setRole("ROLE_USER");
ur.setUserId(newUser.getId());
userRoles.save(ur);

// Programmatic login after registering a user
UserService.authenticate(user);

m.addAttribute("user", user);
return "redirect:/";

}*/

// @PostMapping("/users/create")
// public String saveUser(@Valid User user, Errors validation, Model m){
//
// String username = user.getUsername();
// User existingUsername = userRepository.findByUsername(username);
// User existingEmail = userRepository.findByEmail(user.getEmail());
//
//// if(existingUsername != null){
////
//// validation.re("username", "user.username", "Duplicated username " + username);
////
//// }
////
//// if(existingEmail != null){
////
//// validation.rejectValue("email", "user.email", "Duplicated email " + user.getEmail());
////
//// }
//
// if (validation.hasErrors()) {
// m.addAttribute("errors", validation);
// m.addAttribute("user", user);
// return "users/create";
// }
//
// user.setPassword(passwordEncoder.encode(user.getPassword()));
//
// // Custom validation if the username is taken
//
// User newUser = userRepository.save(user);
//
// UserRole ur = new UserRole();
// ur.setRole("ROLE_USER");
// ur.setUserId(newUser.getId());
// userRoles.save(ur);
//
// // Programmatic login after registering a user
// userService.authenticate(user);
//
// m.addAttribute("user", user);
// return "redirect:/";
//
// }

@GetMapping("/users/profile")
public String showProfile(Model viewModel){
Expand Down
27 changes: 13 additions & 14 deletions src/main/java/com/edimitri/cohortcalendar/models/Holiday.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

import javax.persistence.*;
import java.time.LocalDate;
import java.util.Date;

@Entity
@Table(name = "holidays")
Expand All @@ -14,17 +13,17 @@ public class Holiday {
private Long id;

@Column(nullable=false)
private String name;
private String holidayName;

@Column(nullable=false, unique=true)
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate date;
private LocalDate holidayDate;

public Holiday(){}

public Holiday(String name, LocalDate date) {
this.name = name;
this.date = date;
public Holiday(String holidayName, LocalDate holidayDate) {
this.holidayName = holidayName;
this.holidayDate = holidayDate;
}

public Long getId() {
Expand All @@ -35,20 +34,20 @@ public void setId(Long id) {
this.id = id;
}

public String getName() {
return name;
public String getHolidayName() {
return holidayName;
}

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

public LocalDate getDate() {
return date;
public LocalDate getHolidayDate() {
return holidayDate;
}

public void setDate(LocalDate date) {
this.date = date;
public void setHolidayDate(LocalDate date) {
this.holidayDate = date;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,20 @@
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

public interface CohortRepository extends JpaRepository<Cohort,Long> {
@Repository
public interface CohortRepository extends JpaRepository<Cohort, Long> {
Cohort findByName(String name);

Cohort findByCampusAndProgramType(String campus, String programType);

List<Cohort>findByProgramType(String programType);
List<Cohort> findByProgramType(String programType);

List<Cohort> findByCampus(String campus);

List<Cohort> findAll();

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@

import com.edimitri.cohortcalendar.models.Holiday;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.time.LocalDate;

@Repository
public interface HolidayRepository extends JpaRepository<Holiday,Long> {
Holiday findFirstByDate(LocalDate date);
//see Defining Query Methods lesson in curriculum
}
Holiday findFirstByHolidayDate(LocalDate date);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
import com.edimitri.cohortcalendar.models.UserRole;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface Roles extends CrudRepository<UserRole, Long> {
@Query("select ur.role from UserRole ur, User u where u.username=?1 and ur.userId = u.id")
List<String> ofUserWith(String username);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import com.edimitri.cohortcalendar.models.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends JpaRepository <User, Long> {
// User findByEmail(String email);
User findByUsername(String username);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.edimitri.cohortcalendar.models.CohortDay;
import com.edimitri.cohortcalendar.models.Holiday;
import com.edimitri.cohortcalendar.repositories.HolidayRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.DayOfWeek;
Expand All @@ -12,11 +13,9 @@

@Service
public class CohortCalendarServiceImpl implements CohortCalendarService{
private final HolidayRepository holidayRepository;

public CohortCalendarServiceImpl(HolidayRepository holidayRepository){
this.holidayRepository=holidayRepository;
}
@Autowired
private HolidayRepository holidayRepository;

@Override
public List<CohortDay> getCalendar(LocalDate startDate, double contactHours){
Expand All @@ -26,7 +25,7 @@ public List<CohortDay> getCalendar(LocalDate startDate, double contactHours){
LocalDate currentDate=startDate;
double totalHours=0;
while (totalHours<contactHours){
Holiday holiday = getHolidayByDate(currentDate);
Holiday holiday = holidayRepository.findFirstByHolidayDate(currentDate);
double dayHours=0;
if(holiday==null){
dayHours=getHoursOfDayofWeek(currentDate.getDayOfWeek());
Expand All @@ -38,11 +37,6 @@ public List<CohortDay> getCalendar(LocalDate startDate, double contactHours){
return results;
}


public Holiday getHolidayByDate(LocalDate date) {
return holidayRepository.findFirstByDate(date);
}

public static double getHoursOfDayofWeek(DayOfWeek dayOfWeek) {
double dayHours;
switch (dayOfWeek) {
Expand Down
6 changes: 2 additions & 4 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
spring.datasource.url=jdbc:mysql://localhost/cohort_calendar_db?createDatabaseIfNotExist=true&useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false
spring.jpa.properties.hibernate.jdbc.time_zone=UTC
spring.datasource.url=jdbc:mysql://localhost/cohort_calendar_db?createDatabaseIfNotExist=true&useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=codeup
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
user.timezone=UTC
spring.jpa.show-sql=true
4 changes: 2 additions & 2 deletions src/main/resources/templates/holidays/add.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,12 @@ <h1>Add Holidays</h1>

<div class="form-group">
<label for="name-field">Holiday Name</label>
<input th:field="*{name}" class="form-control" type="text" id="name-field" placeholder="Holiday Name"/>
<input th:field="*{holidayName}" class="form-control" type="text" id="name-field" placeholder="Holiday Name"/>
</div>

<div class="form-group">
<label for="date-field">Holiday Date</label>
<input th:field="*{date}" class="form-control" type="date" id="date-field" placeholder="Holiday Date"/>
<input th:field="*{holidayDate}" class="form-control" type="date" id="date-field" placeholder="Holiday Date"/>
</div>
<input type="submit" value="Add Holiday"/>
</form>
Expand Down
Loading