1
2
3
4
5
6
7
8
9
10
11
12 package fr.hyphonem.conges.actions;
13
14 import java.util.Iterator;
15 import java.util.Vector;
16 import java.util.logging.Logger;
17
18 import javax.servlet.http.HttpServletRequest;
19 import javax.servlet.http.HttpServletResponse;
20 import javax.servlet.http.HttpSession;
21
22 import org.apache.struts.action.Action;
23 import org.apache.struts.action.ActionError;
24 import org.apache.struts.action.ActionErrors;
25 import org.apache.struts.action.ActionForm;
26 import org.apache.struts.action.ActionForward;
27 import org.apache.struts.action.ActionMapping;
28
29 import fr.hyphonem.conges.AccessData;
30 import fr.hyphonem.conges.AccessDataMng;
31 import fr.hyphonem.conges.CommonCal;
32 import fr.hyphonem.conges.data.CalendarData;
33 import fr.hyphonem.conges.data.EmployeeData;
34 import fr.hyphonem.conges.data.EmployeeIdCalData;
35 import fr.hyphonem.conges.data.PendingEventData;
36 import fr.hyphonem.conges.data.StatsData;
37 import fr.hyphonem.conges.data.UserData;
38 import fr.hyphonem.conges.forms.ValidatingForm;
39
40
41
42
43 public class ValidValidatingAction extends Action {
44
45 public ActionForward execute(ActionMapping mapping, ActionForm form,
46 HttpServletRequest request, HttpServletResponse response)
47 throws Exception {
48 if (request.getParameter("forward").toString().equals("accept")) {
49 return accept(mapping, form, request, response);
50 } else if (request.getParameter("forward").toString().equals("refuse")) {
51 return refuse(mapping, form, request, response);
52 } else {
53 return mapping.getInputForward();
54 }
55 }
56
57
58
59
60
61
62
63
64
65 public ActionForward accept(ActionMapping mapping, ActionForm form,
66 HttpServletRequest request, HttpServletResponse response)
67 throws Exception {
68
69 HttpSession session = request.getSession();
70
71 if (session.getAttribute("user") == null) {
72 return mapping.findForward("invalidsession");
73 }
74
75 UserData userd = (UserData) session.getAttribute("user");
76 if (!userd.isModif() && userd.isEmployee()) {
77 return mapping.findForward("invalidaction");
78 }
79
80 ActionErrors errors = new ActionErrors();
81 ActionForward forward = new ActionForward();
82
83 ValidatingForm vform = (ValidatingForm) form;
84 String[] checks = vform.getCheckboxes();
85 for (int i = 0; i < checks.length; i++) {
86 String id = checks[i];
87 String dataDirPath = (String) session.getAttribute("dataDirPath");
88 AccessData ad = new AccessDataMng().getInstance(dataDirPath);
89
90
91 PendingEventData ped = ad.readPendingEvent(id);
92
93 EmployeeIdCalData eid = ad.deletePendingEvent(id);
94
95 if (ped.getType().equalsIgnoreCase("C")) {
96
97
98 Logger.getAnonymousLogger()
99 .info("data are already in the file");
100 } else {
101
102
103
104 Vector stats = (Vector) session.getAttribute("stats");
105
106 CalendarData cda = new CalendarData();
107
108
109 cda.setCbaprem(ped.isCbaprem());
110 cda.setCbmatin(ped.isCbmatin());
111 cda.setId(ped.getIdcal());
112 cda.setRaison(ped.getRaison());
113 cda.setDatedeb(ped.getDatedeb());
114 cda.setDatefin(ped.getDatefin());
115 EmployeeData employee = new EmployeeData();
116 employee.setNom(eid.getNom());
117 employee.setPrenom(eid.getPrenom());
118 cda.setEmployee(employee);
119
120 if (ped.getType().equalsIgnoreCase("M")) {
121
122
123 Iterator iter1 = stats.iterator();
124 int j = -1;
125 while (iter1.hasNext()) {
126 j++;
127 StatsData stat = (StatsData) iter1.next();
128 if (stat.getRaison().equals(ped.getRaison())) {
129
130 String nbjours = stat.getNbJours();
131 String maxdays = stat.getMaxNBJours();
132
133 double nbj = 0.0;
134
135
136
137 if (cda.isCbmatin()) {
138 nbj += 0.5;
139 }
140 if (cda.isCbaprem()) {
141 nbj += 0.5;
142 }
143
144 double nbtot = new Double(nbjours).doubleValue()
145 + nbj;
146 double maxdays_d = new Double(maxdays)
147 .doubleValue();
148
149 if (nbtot > maxdays_d) {
150 double delta = nbtot - maxdays_d;
151 String s_delta = "" + delta;
152 errors
153 .add("error.too.much.abs",
154 new ActionError(
155 "error.too.much.abs",
156 new String[] { maxdays,
157 s_delta }));
158 } else {
159 stat.setNbJours("" + nbtot);
160 stats.remove(j);
161 stats.add(stat);
162 }
163 break;
164 }
165 }
166
167 if (!errors.isEmpty()) {
168 saveErrors(request, errors);
169 return mapping.getInputForward();
170 }
171
172
173 ad.writeCalendarData(cda, false);
174
175
176
177 ad.deleteTemporarilyOriginalEvent(ped.getIdcal());
178 }
179 if (ped.getType().equalsIgnoreCase("D")) {
180
181
182
183
184 ad.deleteTemporarilyOriginalEvent(ped.getIdcal());
185 }
186
187
188 session.setAttribute("stats", stats);
189 }
190
191 new CommonCal().sendEmailValidation(ped, eid, request, session, ad,
192 0);
193 }
194
195 if (!errors.isEmpty()) {
196 saveErrors(request, errors);
197
198
199
200 forward = mapping.getInputForward();
201 } else {
202
203
204
205 forward = mapping.findForward("success");
206 }
207
208
209 return (forward);
210 }
211
212
213
214
215
216
217
218
219
220 public ActionForward refuse(ActionMapping mapping, ActionForm form,
221 HttpServletRequest request, HttpServletResponse response)
222 throws Exception {
223
224 HttpSession session = request.getSession();
225
226 if (session.getAttribute("user") == null) {
227 return mapping.findForward("invalidsession");
228 }
229
230 UserData userd = (UserData) session.getAttribute("user");
231 if (!userd.isModif() && userd.isEmployee()) {
232 return mapping.findForward("invalidaction");
233 }
234
235 ActionErrors errors = new ActionErrors();
236 ActionForward forward = new ActionForward();
237
238 ValidatingForm vform = (ValidatingForm) form;
239 String[] checks = vform.getCheckboxes();
240 String dataDirPath = (String) session.getAttribute("dataDirPath");
241 AccessData ad = new AccessDataMng().getInstance(dataDirPath);
242 for (int i = 0; i < checks.length; i++) {
243 String id = checks[i];
244
245
246 PendingEventData ped = ad.readPendingEvent(id);
247
248
249 EmployeeIdCalData eid = ad.deletePendingEvent(id);
250
251
252 if (ped.getType().equalsIgnoreCase("C")) {
253
254 Vector cals = ad.searchCalendarData(eid);
255 Iterator iter = cals.iterator();
256 while (iter.hasNext()) {
257 CalendarData cd = (CalendarData) iter.next();
258 ad.writeCalendarData(cd, false, true);
259 }
260 } else {
261
262
263 CalendarData cal = ad.searchTemporarilyOriginalEvents(ped
264 .getIdcal());
265 ad.writeCalendarData(cal, false);
266
267
268 ad.deleteTemporarilyOriginalEvent(ped.getIdcal());
269 }
270
271 new CommonCal().sendEmailValidation(ped, eid, request, session, ad,
272 1);
273 }
274
275 if (!errors.isEmpty()) {
276 saveErrors(request, errors);
277
278
279
280 forward = mapping.getInputForward();
281
282 } else {
283
284
285
286 forward = mapping.findForward("success");
287
288 }
289
290
291 return (forward);
292 }
293 }