Subversion Repositories SmartDukaan

Rev

Rev 7312 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
7286 amit.gupta 1
package in.shop2020.creation.controllers;
2
 
3
import in.shop2020.content.security.UserManager;
4
import in.shop2020.metamodel.core.EntityState;
5
import in.shop2020.metamodel.core.ExpertReview;
6
import in.shop2020.metamodel.core.ExpertReviewSource;
7
import in.shop2020.metamodel.core.ExpertReviewStatus;
8
import in.shop2020.metamodel.util.CreationUtils;
9
import in.shop2020.metamodel.util.ExpandedEntity;
10
import in.shop2020.util.EntityUtils;
11
 
12
import java.util.ArrayList;
13
import java.util.Date;
14
import java.util.List;
15
import java.util.Set;
16
 
17
import org.apache.struts2.convention.annotation.InterceptorRef;
18
import org.apache.struts2.convention.annotation.InterceptorRefs;
19
import org.apache.struts2.convention.annotation.Result;
20
import org.apache.struts2.convention.annotation.Results;
21
 
22
 
23
@InterceptorRefs({
24
    @InterceptorRef("myDefault"),
25
    @InterceptorRef("login")
26
})
27
 
28
@Results({
29
    @Result(name="success", type="redirectAction", 
30
    		params = {"actionName" , "expert-review"}),
31
    @Result(name="redirect", location="${url}", type="redirect")
32
})
33
 
34
public class ExpertReviewController extends BaseController {
35
 
36
	/**
37
	 * 
38
	 */
39
	private String entityId;
40
	private String entityName;
41
	private String id;
42
	private String index;
43
	private String previous;
44
 
45
	private String createdTimeStamp;
46
	private String source;
47
	private String expertReviewHtml;
48
	private String url;
49
 
50
	private static final long serialVersionUID = 1L;
51
 
52
	public String index(){
53
		return "index";
54
	}
55
 
56
	public String editNew(){
57
		if(!UserManager.getUserManager().canAddRemoveReview(getUsername())){
58
			addActionError("You dont have permission to Create review");
59
			setUrl("/expert-review");
60
			return "redirect";
61
		} else {
62
		return "edit-new";
63
		}
64
	}
65
 
66
	public String show(){
67
		return "show";
68
	}
69
 
70
	public String destroy(){
71
		if(canDelete()) {
72
			try {
73
				CreationUtils.deleteExpertReviews(Long.parseLong(entityId));
74
			} catch (NumberFormatException e) {
75
				// TODO Auto-generated catch block
76
				e.printStackTrace();
77
			} catch (Exception e) {
78
				// TODO Auto-generated catch block
79
				e.printStackTrace();
80
			}
81
		}else {
82
			addActionError("You do not have permission to delete");
83
		}
84
		this.url = "/expert-review";
85
		return "redirect";
86
	}
87
 
88
	public String delete() throws Exception{
89
		if(canAddDelete()) {
90
			try {
91
				CreationUtils.deleteExpertReview(Long.parseLong(entityId), Integer.parseInt(index));
92
			} catch (NumberFormatException e) {
93
				// TODO Auto-generated catch block
94
				e.printStackTrace();
95
			} catch (Exception e) {
96
				// TODO Auto-generated catch block
97
				e.printStackTrace();
98
			}
99
		}else {
100
			addActionError("You do not have permission to delete this review");
101
		}
102
		this.url = "/expert-review/" + entityId;
103
		return "redirect";
104
	}
105
 
106
	public String publish() throws Exception{
107
		Long eId = Long.parseLong(entityId);
108
		if(canPublish()) {
109
			try {
110
				ExpertReview er = CreationUtils.getExpertReviewByEntity(eId).get(Integer.parseInt(index));
111
				er.setApprovedBy(getUsername());
112
				er.setStatus(ExpertReviewStatus.PUBLISHED);
113
				CreationUtils.storeExpertReview(eId, er);
114
				touchEntityState(eId);
115
 
116
			} catch (NumberFormatException e) {
117
				// TODO Auto-generated catch block
118
				e.printStackTrace();
119
			} catch (Exception e) {
120
				// TODO Auto-generated catch block
121
				e.printStackTrace();
122
			}
123
		}else {
124
			addActionError("You cant publish this review");
125
		}
126
		this.url = "/expert-review/" + entityId;
127
		return "redirect";
128
	}
129
 
130
	public String approve() throws Exception{
131
		Long eId = Long.parseLong(entityId);
132
		if(canApprove()) {
133
			try {
134
				ExpertReview er = CreationUtils.getExpertReviewByEntity(eId).get(Integer.parseInt(index));
135
				er.setStatus(ExpertReviewStatus.APPROVED);
136
 
137
			} catch (NumberFormatException e) {
138
				// TODO Auto-generated catch block
139
				e.printStackTrace();
140
			} catch (Exception e) {
141
				// TODO Auto-generated catch block
142
				e.printStackTrace();
143
			}
144
		}else {
145
			addActionError("You cant approve this review");
146
		}
147
		this.url = "/expert-review/" + entityId;
148
		return "redirect";
149
	}
150
 
151
	private void touchEntityState(Long eId) throws Exception {
152
		EntityState es = CreationUtils.getEntityState(eId);
153
		es.setMerkedReadyOn(new Date());
154
		CreationUtils.updateEntityState(es);
155
	}
156
 
157
	public List<EntityState> getReviews() throws Exception{
158
		List<EntityState> reviewList = new ArrayList<EntityState>();
159
		Set<Long> entitySet = CreationUtils.getExpertReviews().keySet();
160
		for (Long entityId : entitySet){
161
			EntityState es = CreationUtils.getEntityState(entityId);
162
			reviewList.add(es);
163
		}
164
		return reviewList;
165
	}
166
 
167
	public String create(){
168
		if(canCreate()) {
169
			setUrl("/expert-review/" + entityId);
170
			Long entityID = Long.parseLong(entityId);
171
			try {
172
				if(CreationUtils.getEntity(entityID) != null){
173
					Date d  = new Date();
174
					ExpertReview er = new ExpertReview(d);
175
					er.setReviewContent(expertReviewHtml);
176
					er.setCreatedBy(getUsername());
177
					er.setSource(source);
178
					er.setStatus(ExpertReviewStatus.CREATED);
179
					if(canApprove(er)) {
180
						er.setStatus(ExpertReviewStatus.APPROVED);
181
					}else {
182
					}
183
					CreationUtils.storeExpertReview(entityID, er);
184
					return "redirect";
185
				}
186
			} catch (Exception e) {
187
				// TODO Auto-generated catch block
188
				e.printStackTrace();
189
			}
190
		}else {
191
			this.addActionError("You dont have rights to create entity");
192
		}
193
		return "show";
194
 
195
	}
196
	public String getEntityId() {
197
		return entityId;
198
	}
199
 
200
	public void setEntityId(String entityId) {
201
		this.entityId = entityId;
202
	}
203
 
204
	public String getCreatedTimeStamp() {
205
		return createdTimeStamp;
206
	}
207
 
208
	public List<ExpertReview> getExpertReviewByEntity(){
209
		try {
210
			return CreationUtils.getExpertReviewByEntity(Long.parseLong(entityId));
211
		} catch (Exception e) {
212
			e.printStackTrace();
213
			return null;
214
		}
215
	}
216
 
217
	public void setCreatedTimeStamp(String createdTimeStamp) {
218
		this.createdTimeStamp = createdTimeStamp;
219
	}
220
 
221
	public String getSource() {
222
		return source;
223
	}
224
 
225
	public void setSource(String source) {
226
		this.source = source;
227
	}
228
 
229
	public String getExpertReviewHtml() {
230
		return expertReviewHtml;
231
	}
232
 
233
		public void setExpertReviewHtml(String expertReviewHtml) {
234
			this.expertReviewHtml = expertReviewHtml;
235
		}
236
 
237
	public String getUrl() {
238
		return url;
239
	}
240
 
241
	public void setUrl(String url) {
242
		this.url = url;
243
	}
244
 
245
	public void setId(String id) {
246
		this.id = id;
247
		this.entityId = id;
248
		ExpandedEntity expEntity;
249
		try {
250
			expEntity = CreationUtils.getExpandedEntity(Long.parseLong(entityId));
251
			this.entityName = EntityUtils.getProductName(expEntity);
252
		} catch (NumberFormatException e) {
253
			// TODO Auto-generated catch block
254
			e.printStackTrace();
255
		} catch (Exception e) {
256
			// TODO Auto-generated catch block
257
			e.printStackTrace();
258
		}
259
	}
260
 
261
	public String getId() {
262
		return id;
263
	}
264
 
265
	public void setEntityName(String entityName) {
266
		this.entityName = entityName;
267
	}
268
 
269
	public String getEntityName() {
270
		return entityName;
271
	}
272
 
273
	public String move(){
274
		int index = Integer.parseInt(this.index);
275
		int previous = Integer.parseInt(this.previous);
276
		try {
277
			List<ExpertReview> expReviewList = CreationUtils.getExpertReviewByEntity(Long.parseLong(entityId));
278
			expReviewList.add(index, expReviewList.remove(previous));
279
			CreationUtils.storeExpertReview(Long.parseLong(entityId), expReviewList);
280
		} catch (NumberFormatException e) {
281
			// TODO Auto-generated catch block
282
			e.printStackTrace();
283
		} catch (Exception e) {
284
			// TODO Auto-generated catch block
285
			e.printStackTrace();
286
		}
287
		url="/expert-review/" + id;
288
		return "redirect";
289
	}
290
 
291
	public void setPrevious(String previous) {
292
		this.previous = previous;
293
	}
294
 
295
	public String getPrevious() {
296
		return previous;
297
	}
298
 
299
	public void setIndex(String index) {
300
		this.index = index;
301
	}
302
 
303
	public String getIndex() {
304
		return index;
305
	}
306
 
307
	public boolean canDelete(){
308
		return UserManager.getUserManager().canRemoveReview(getUsername());
309
	}
310
 
311
	public boolean canAddDelete() throws Exception{
312
		return canAddDelete(Integer.parseInt(index));
313
	}
314
 
315
	public boolean canAddDelete(ExpertReview expertReview) throws Exception{
316
		if(expertReview.getCreatedBy().equals(getUsername()) && (expertReview.getStatus().equals(ExpertReviewStatus.CREATED) || 
317
				expertReview.getStatus().equals(ExpertReviewStatus.PENDING_APPROVAL))) {
318
			return UserManager.getUserManager().canAddRemoveReview(getUsername());
319
		} else { 
320
			return UserManager.getUserManager().canRemoveReview(getUsername()); 
321
		}
322
	}
323
 
324
	public boolean canAddDelete(int index) throws Exception{
325
		Long entityid = Long.parseLong(getEntityId());
326
		List<ExpertReview> er = CreationUtils.getExpertReviewByEntity(entityid);
327
		ExpertReview expertReview = er.get(index);
328
		return canAddDelete(expertReview);
329
	}
330
 
331
	public boolean canOrder(){
332
		return UserManager.getUserManager().canOrderReview(getUsername());
333
	}
334
 
335
	public boolean canApprove(int index) throws Exception{
336
		Long entityid = Long.parseLong(getEntityId());
337
		List<ExpertReview> er = CreationUtils.getExpertReviewByEntity(entityid);
338
		ExpertReview expertReview = er.get(index);
339
		return canApprove(expertReview);
340
	}
341
 
342
	public boolean canApprove() throws Exception{
343
		return canApprove(Integer.parseInt(index));
344
	}
345
 
346
	public boolean canApprove(ExpertReview expertReview) throws Exception{
347
		if(expertReview.getStatus().equals(ExpertReviewStatus.PENDING_APPROVAL) || (expertReview.getStatus().equals(ExpertReviewStatus.CREATED) && expertReview.getCreatedBy().equals(getUsername()))) {
348
			return UserManager.getUserManager().canApproveReview(getUsername());
349
		} else {
350
			return false;
351
		}
352
	}
353
 
354
	public boolean canPublish(int index) throws Exception{
355
		Long entityid = Long.parseLong(getEntityId());
356
		List<ExpertReview> er = CreationUtils.getExpertReviewByEntity(entityid);
357
		ExpertReview expertReview = er.get(index);
358
		return canPublish(expertReview);
359
	}
360
 
361
	public boolean canPublish() throws Exception{
362
		return canPublish(Integer.parseInt(index));
363
	}
364
 
365
	public boolean canPublish(ExpertReview expertReview) throws Exception{
366
		if(expertReview.getStatus().equals(ExpertReviewStatus.APPROVED)) {
367
			return UserManager.getUserManager().canPublishReview(getUsername());
368
		} else {
369
			return false;
370
		}
371
	}
372
 
373
	public boolean canPhaseOut(ExpertReview expertReview) throws Exception{
374
		if(expertReview.getStatus().equals(ExpertReviewStatus.PHASED_OUT)) {
375
			return UserManager.getUserManager().canPhaseOutReview(getUsername());
376
		} else {
377
			return false;
378
		}
379
	}
380
 
381
	public boolean canCreate(){
382
		return UserManager.getUserManager().canCreateReview(getUsername());
383
	}
384
 
385
	public Set<ExpertReviewSource> getSources() throws Exception {
386
		return CreationUtils.getExpertReviewSources();
387
	}
388
}
389