#68 added ping method

This commit is contained in:
Nightblade73 2019-04-24 21:05:25 +04:00
parent f556b969b4
commit d921def09d
7 changed files with 96 additions and 41 deletions

View File

@ -21,7 +21,6 @@ import springfox.documentation.annotations.ApiIgnore;
import javax.validation.Valid;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
import java.util.stream.Collectors;
@ -58,26 +57,8 @@ public class ConferenceController {
@GetMapping("/dashboard")
public void getDashboard(ModelMap modelMap) {
modelMap.put("conferences", conferenceService.findAllActiveDto());
//first, add the regional sales
Integer northeastSales = 17089;
Integer westSales = 10603;
Integer midwestSales = 5223;
Integer southSales = 10111;
modelMap.addAttribute("northeastSales", northeastSales);
modelMap.addAttribute("southSales", southSales);
modelMap.addAttribute("midwestSales", midwestSales);
modelMap.addAttribute("westSales", westSales);
//now add sales by lure type
List<Integer> inshoreSales = Arrays.asList(4074, 3455, 4112);
List<Integer> nearshoreSales = Arrays.asList(3222, 3011, 3788);
List<Integer> offshoreSales = Arrays.asList(7811, 7098, 6455);
modelMap.addAttribute("inshoreSales", inshoreSales);
modelMap.addAttribute("nearshoreSales", nearshoreSales);
modelMap.addAttribute("offshoreSales", offshoreSales);
conferenceService.setChartData(modelMap); // example
}
@GetMapping("/conference")
@ -145,6 +126,15 @@ public class ConferenceController {
return CONFERENCE_PAGE;
}
@PostMapping(value = "/conference", params = "ping")
public String ping(@Valid ConferenceDto conferenceDto, Errors errors) throws IOException {
if (errors.hasErrors()) {
return CONFERENCE_PAGE;
}
conferenceService.ping(conferenceDto);
return CONFERENCE_PAGE;
}
@ModelAttribute("allParticipation")
public List<ConferenceUser.Participation> getAllParticipation() {
return conferenceService.getAllParticipations();

View File

@ -35,7 +35,7 @@ public class Conference extends BaseEntity {
private String url;
private int ping;
private int ping = 0;
@Column(name = "begin_date")
@Temporal(TemporalType.TIMESTAMP)

View File

@ -4,6 +4,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.ModelMap;
import ru.ulstu.conference.model.Conference;
import ru.ulstu.conference.model.ConferenceDto;
import ru.ulstu.conference.model.ConferenceFilterDto;
@ -12,6 +13,7 @@ import ru.ulstu.conference.repository.ConferenceRepository;
import ru.ulstu.deadline.service.DeadlineService;
import ru.ulstu.paper.model.Paper;
import ru.ulstu.paper.service.PaperService;
import ru.ulstu.ping.service.PingService;
import ru.ulstu.user.model.User;
import ru.ulstu.user.service.UserService;
@ -33,17 +35,20 @@ public class ConferenceService {
private final DeadlineService deadlineService;
private final PaperService paperService;
private final UserService userService;
private final PingService pingService;
public ConferenceService(ConferenceRepository conferenceRepository,
ConferenceUserService conferenceUserService,
DeadlineService deadlineService,
PaperService paperService,
UserService userService) {
UserService userService,
PingService pingService) {
this.conferenceRepository = conferenceRepository;
this.conferenceUserService = conferenceUserService;
this.deadlineService = deadlineService;
this.paperService = paperService;
this.userService = userService;
this.pingService = pingService;
}
public ConferenceDto getExistConferenceById(Integer id) {
@ -141,7 +146,8 @@ public class ConferenceService {
conference.setTitle(conferenceDto.getTitle());
conference.setDescription(conferenceDto.getDescription());
conference.setUrl(conferenceDto.getUrl());
conference.setPing(0);
Integer pingCount = conferenceDto.getPing() - conference.getPing(); // for notification
conference.setPing(conference.getPing());
conference.setBeginDate(conferenceDto.getBeginDate());
conference.setEndDate(conferenceDto.getEndDate());
conference.setPapers(conferenceDto.getPapers());
@ -173,4 +179,35 @@ public class ConferenceService {
public List<Conference> findAllActive() {
return conferenceRepository.findAllActive(new Date());
}
public void ping(ConferenceDto conferenceDto) throws IOException {
pingService.addPing(findOne(conferenceDto.getId()));
// conferenceDto.setPing(conferenceDto.getPing() + 1);
}
public Conference findOne(Integer conferenceId) {
return conferenceRepository.findOne(conferenceId);
}
public void setChartData(ModelMap modelMap) {
//first, add the regional sales
Integer northeastSales = 17089;
Integer westSales = 10603;
Integer midwestSales = 5223;
Integer southSales = 10111;
modelMap.addAttribute("northeastSales", northeastSales);
modelMap.addAttribute("southSales", southSales);
modelMap.addAttribute("midwestSales", midwestSales);
modelMap.addAttribute("westSales", westSales);
//now add sales by lure type
List<Integer> inshoreSales = Arrays.asList(4074, 3455, 4112);
List<Integer> nearshoreSales = Arrays.asList(3222, 3011, 3788);
List<Integer> offshoreSales = Arrays.asList(7811, 7098, 6455);
modelMap.addAttribute("inshoreSales", inshoreSales);
modelMap.addAttribute("nearshoreSales", nearshoreSales);
modelMap.addAttribute("offshoreSales", offshoreSales);
}
}

View File

@ -1,7 +1,9 @@
package ru.ulstu.ping.model;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.sun.istack.internal.Nullable;
import org.springframework.format.annotation.DateTimeFormat;
import ru.ulstu.conference.model.Conference;
import ru.ulstu.core.model.BaseEntity;
import ru.ulstu.user.model.User;
@ -24,6 +26,11 @@ public class Ping extends BaseEntity {
@JoinColumn(name = "users_id")
private User user;
@Nullable
@ManyToOne(optional = false)
@JoinColumn(name = "conference_id")
private Conference conference;
public Ping() {
}
@ -34,10 +41,12 @@ public class Ping extends BaseEntity {
public Ping(@JsonProperty("id") Integer id,
@JsonProperty("date") Date date,
@JsonProperty("user") User user) {
@JsonProperty("user") User user,
@JsonProperty("conference") Conference conference) {
setId(id);
this.date = date;
this.user = user;
this.conference = conference;
}
public Date getDate() {
@ -55,4 +64,12 @@ public class Ping extends BaseEntity {
public void setUser(User user) {
this.user = user;
}
public Conference getConference() {
return conference;
}
public void setConference(Conference conference) {
this.conference = conference;
}
}

View File

@ -1,13 +1,30 @@
package ru.ulstu.ping.service;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import ru.ulstu.conference.model.Conference;
import ru.ulstu.ping.model.Ping;
import ru.ulstu.ping.repository.PingRepository;
import ru.ulstu.user.service.UserService;
import java.io.IOException;
import java.util.Date;
@Service
public class PingService {
private final PingRepository pingRepository;
private final UserService userService;
public PingService(PingRepository pingRepository) {
public PingService(PingRepository pingRepository,
UserService userService) {
this.pingRepository = pingRepository;
this.userService = userService;
}
@Transactional
public void addPing(Conference conference) throws IOException {
Ping newPing = new Ping(new Date(), userService.getCurrentUser());
newPing.setConference(conference);
pingRepository.save(newPing);
}
}

View File

@ -121,7 +121,10 @@
</div>
</div>
<div class="form-group d-flex justify-content-end">
<div class="form-group d-flex justify-content-between flex-wrap">
<input type="hidden" th:value="*{ping}" th:name="ping"/>
<input id="pingButton" class="btn btn-primary"
type="submit" name="ping" value="Ping участникам"/>
<input type="hidden" th:value="*{disabledTakePart}" th:name="disabledTakePart"/>
<input id="take-part" class="btn btn-primary"
type="submit" name="takePart" value="Принять участие"

View File

@ -23,6 +23,7 @@
</th:block>
</div>
<hr/>
<!--chart example-->
<nav>
<div class="nav nav-tabs" id="nav-tab" role="tablist">
<a class="nav-item nav-link active" id="nav-main-tab" data-toggle="tab"
@ -41,10 +42,13 @@
<div id="salesByRegion" style="width:100%; height:400px;"></div>
</div>
</div>
<!--chart example-->
</div>
</section>
<script th:inline="javascript">
/*<![CDATA[*/
// chart example
$(function () {
Highcharts.setOptions({
lang: {
@ -62,12 +66,7 @@
var salesByRegionChart = Highcharts.chart('salesByRegion', {
chart: {
type: 'pie',
margin: 40,
options3d: {
enabled: true,
alpha: 45,
beta: 0
}
margin: 40
},
title: {
text: 'Sales by Region'
@ -105,13 +104,7 @@
var salesByTypeChart = Highcharts.chart('salesByType', {
chart: {
type: 'column',
margin: 75,
options3d: {
enabled: true,
alpha: 15,
beta: 15,
depth: 110
}
margin: 75
},
title: {
text: 'Sales by Lure Type'
@ -149,8 +142,6 @@
}
/*]]>*/
</script>
</div>
</body>