1 package org
.cvut
.skischool
.back
;
3 import java
.io
.Serializable
;
6 import javax
.faces
.application
.FacesMessage
;
7 import javax
.faces
.bean
.ManagedBean
;
8 import javax
.faces
.bean
.SessionScoped
;
9 import javax
.faces
.context
.FacesContext
;
10 import javax
.faces
.event
.ActionEvent
;
11 import javax
.faces
.model
.DataModel
;
12 import javax
.faces
.model
.ListDataModel
;
13 import org
.cvut
.skischool
.beans
.AvailabilityManagementLocal
;
14 import org
.cvut
.skischool
.beans
.UserManagementLocal
;
15 import org
.cvut
.skischool
.core
.DateTools
;
16 import org
.cvut
.skischool
.core
.NumberConstants
;
17 import org
.cvut
.skischool
.model
.Availability
;
18 import org
.cvut
.skischool
.model
.Instructor
;
19 import org
.primefaces
.event
.DateSelectEvent
;
25 @ManagedBean(name
= "availabilityBean")
27 public class AvailabilityBean
implements Serializable
{
30 private AvailabilityManagementLocal availabilityManagement
;
32 private UserManagementLocal userManagement
;
33 private Availability availability
;
34 private DataModel
<Availability
> availabilities
;
35 private Instructor instructor
;
36 private int startHour
;
37 private int startMinutes
;
39 private int endMinutes
;
43 public AvailabilityBean() {
47 public Date
getDate() {
51 public void setDate(Date date
) {
55 public int getEndHour() {
59 public void setEndHour(int endHour
) {
60 this.endHour
= endHour
;
63 public int getEndMinutes() {
67 public void setEndMinutes(int endMinutes
) {
68 this.endMinutes
= endMinutes
;
71 public int getStartHour() {
75 public void setStartHour(int startHour
) {
76 this.startHour
= startHour
;
79 public int getStartMinutes() {
83 public void setStartMinutes(int startMinutes
) {
84 this.startMinutes
= startMinutes
;
87 public Instructor
getInstructor() {
91 public void setInstructor(Instructor instructor
) {
92 this.instructor
= instructor
;
96 public int getInterval() {
100 public void setInterval(int interval
) {
101 this.interval
= interval
;
104 public DataModel
<Availability
> getAllAvailabilities() {
105 availabilities
= new ListDataModel
<Availability
>(availabilityManagement
.getAvailabilityByDate(instructor
, date
));
106 return availabilities
;
109 public Availability
getAvailability() {
113 public void setAvailability(Availability availability
) {
114 this.availability
= availability
;
117 public void handleDateSelect(DateSelectEvent event
) {
118 date
= event
.getDate();
121 public String
newAvailability() {
122 availability
= new Availability();
123 return "availabilities?faces-redirect=true";
126 public void setWholeDay(ActionEvent event
) {
127 startHour
= NumberConstants
.DAY_START_HOUR
;
128 startMinutes
= NumberConstants
.DAY_START_MINUTES
;
129 endHour
= NumberConstants
.DAY_END_HOUR
;
130 endMinutes
= NumberConstants
.DAY_END_MINUTES
;
133 public void createAvailabilityInterval(Date startDate
, int interval
) {
135 for (int i
= 0; i
< interval
+ 1; i
++) {
136 nextDay
= DateTools
.addDays(date
, i
);
138 availability
.setStartTime(DateTools
.makeDateTime(nextDay
, startHour
, startMinutes
));
139 availability
.setEndTime(DateTools
.makeDateTime(nextDay
, endHour
, endMinutes
));
140 instructor
.getAvailability().add(availability
);
141 userManagement
.updateInstructor(instructor
);
145 public String
editAvailability() {
146 availability
= availabilities
.getRowData();
147 return "availabislities?faces-redirect=true";
150 public void saveAvailability(ActionEvent event
) {
151 Date time1
= DateTools
.makeDateTime(date
, startHour
, startMinutes
);
152 Date time2
= DateTools
.makeDateTime(date
, endHour
, endMinutes
);
153 if (time2
.before(time1
)) {
154 // showErrorMessage("End time is before start time");
155 showErrorMessage("Koniec je pred začiatkom");
158 if (time2
.equals(time1
)) {
159 // showErrorMessage("Start time and end time are equal");
160 showErrorMessage("Začiatok a koniec sú rovnaké");
163 if (availabilityManagement
.getConflictAvailabilities(instructor
, time1
, time2
).size() > 0) {
164 // showErrorMessage("Conflict availability");
165 showErrorMessage("Dostupnosť koliduje s inou dostupnosťou");
168 availability
.setInstructor(instructor
);
169 createAvailabilityInterval(date
, interval
);
170 // showInfoMessage("Availability created");
171 showInfoMessage("Dostupnosť vytvorená");
174 public void deleteAvailability(ActionEvent event
) {
175 availabilityManagement
.deleteAvailability(availabilities
.getRowData());
176 // showWarnMessage("Availability deleted");
177 showWarnMessage("Dostupnosť zmazaná");
180 private void showInfoMessage(String message
) {
181 FacesMessage msg
= new FacesMessage(FacesMessage
.SEVERITY_INFO
, message
, "");
182 FacesContext
.getCurrentInstance().addMessage(null, msg
);
185 private void showWarnMessage(String message
) {
186 FacesMessage msg
= new FacesMessage(FacesMessage
.SEVERITY_WARN
, message
, "");
187 FacesContext
.getCurrentInstance().addMessage(null, msg
);
190 private void showErrorMessage(String message
) {
191 FacesMessage msg
= new FacesMessage(FacesMessage
.SEVERITY_ERROR
, message
, "");
192 FacesContext
.getCurrentInstance().addMessage(null, msg
);