Subversion Repositories SmartDukaan

Rev

Rev 1514 | Rev 1738 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1494 vikas 1
package in.shop2020.support.controllers;
2
 
3
import in.shop2020.model.v1.order.LineItem;
4
import in.shop2020.model.v1.order.Order;
5
import in.shop2020.model.v1.order.Transaction;
6
import in.shop2020.model.v1.order.TransactionServiceException;
7
import in.shop2020.model.v1.user.Address;
8
import in.shop2020.model.v1.user.User;
1608 vikas 9
import in.shop2020.model.v1.user.UserCommunication;
10
import in.shop2020.model.v1.user.UserContextException;
1494 vikas 11
import in.shop2020.model.v1.user.UserContextService.Client;
12
import in.shop2020.payments.Payment;
13
import in.shop2020.thrift.clients.PaymentServiceClient;
14
import in.shop2020.thrift.clients.TransactionServiceClient;
15
import in.shop2020.thrift.clients.UserContextServiceClient;
16
 
17
import java.io.BufferedReader;
18
import java.io.ByteArrayOutputStream;
19
import java.io.IOException;
20
import java.io.UnsupportedEncodingException;
21
import java.security.Principal;
22
import java.text.DateFormat;
23
import java.text.ParseException;
24
import java.text.SimpleDateFormat;
1608 vikas 25
import java.util.Collections;
1494 vikas 26
import java.util.Date;
27
import java.util.Enumeration;
1608 vikas 28
import java.util.HashMap;
1494 vikas 29
import java.util.List;
30
import java.util.Locale;
31
import java.util.Map;
32
 
33
import javax.servlet.RequestDispatcher;
34
import javax.servlet.ServletInputStream;
35
import javax.servlet.ServletOutputStream;
36
import javax.servlet.http.Cookie;
37
import javax.servlet.http.HttpServletRequest;
38
import javax.servlet.http.HttpServletResponse;
39
import javax.servlet.http.HttpSession;
40
 
41
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
42
import org.apache.poi.ss.usermodel.Cell;
43
import org.apache.poi.ss.usermodel.CellStyle;
44
import org.apache.poi.ss.usermodel.Font;
45
import org.apache.poi.ss.usermodel.Row;
46
import org.apache.poi.ss.usermodel.Sheet;
47
import org.apache.poi.ss.usermodel.Workbook;
48
import org.apache.poi.ss.util.CellRangeAddress;
49
import org.apache.struts2.interceptor.ServletRequestAware;
50
import org.apache.struts2.interceptor.ServletResponseAware;
1608 vikas 51
import org.apache.thrift.TException;
1494 vikas 52
 
53
public class UserOrdersController implements ServletResponseAware, ServletRequestAware{
54
 
1608 vikas 55
	private static final DateFormat DATE_TIME_FORMAT = new SimpleDateFormat("dd/MM/yyyy HH:mm");
56
 
1494 vikas 57
	private HttpServletRequest request;
58
	private HttpServletResponse response;
59
 
60
	private String errorMsg = "";
61
 
62
	public UserOrdersController(){
63
 
64
	}
65
 
66
	@Override
67
	public void setServletRequest(HttpServletRequest req) {
68
		this.request = req;
69
	}
70
 
71
	@Override
72
	public void setServletResponse(HttpServletResponse res) {
73
		this.response = res;
74
	}
75
 
76
	public String index()	{
77
		return "report";
78
	}
79
 
80
	public String show(){
81
		return "report";
82
	}
83
 
84
	// Handles the POST request (Form Submission)
85
	public String create(){
86
		try	{
87
			//Formatting Form input parameters
88
			String email = request.getParameter("email");
89
			String orderid = request.getParameter("orderid");
90
 
91
			TransactionServiceClient transactionServiceClient = new TransactionServiceClient();
92
			in.shop2020.model.v1.order.TransactionService.Client transactionClient = transactionServiceClient.getClient();
93
 
94
			UserContextServiceClient userContextServiceClient = new UserContextServiceClient();
95
			Client userClient = userContextServiceClient.getClient();
96
 
97
			PaymentServiceClient paymentServiceClient = new PaymentServiceClient();
98
			in.shop2020.payments.PaymentService.Client paymentClient = paymentServiceClient.getClient();
1608 vikas 99
 
1494 vikas 100
			User user = null;
101
			if (email != null && !email.isEmpty()) {
102
				user = userClient.getUserByEmail(email);
103
				if(user.getUserId() == -1){
104
				    errorMsg = "No user for this id.";
105
					return "report";
106
				}
107
			}
108
			else {
1498 vikas 109
				try {
110
				    user = userClient.getUserById(transactionClient.getOrder(Long.parseLong(orderid)).getCustomer_id());
111
				} catch (NumberFormatException e)	{
112
					errorMsg = "Order Id should be a number.";
113
					return "report";
114
				}
1494 vikas 115
			}
116
 
117
			if (user == null) {
118
				errorMsg = "Could not find user.";
119
				return "report";
120
			}
121
 
1608 vikas 122
			//Retrieving all user communications
123
			List<UserCommunication> userCommunications = userClient.getUserCommunicationByUser(user.getUserId());
124
			List<UserCommunication> allCommunications = userClient.getAllUserCommunications();
125
 
126
			//Retrieving all the transactions
127
			List <Transaction> transactions = transactionClient.getTransactionsForCustomer(user.getUserId(), 0, (new Date()).getTime(), null);
128
			Collections.reverse(transactions);
1494 vikas 129
 
130
			System.out.println("Total number of Transaction: " + transactions.size());
131
 
132
			//Retrieving all the payments 
1608 vikas 133
			List <Payment> payments = paymentClient.getPaymentsForUser(user.getUserId(), 0,
134
					(new Date()).getTime(), null, 0);
135
 
136
			Map<Long, Payment> txnIdToPaymentMap = new HashMap<Long, Payment>();
137
			for(Payment payment : payments) {
138
				txnIdToPaymentMap.put(payment.getMerchantTxnId(), payment);
139
			}
140
 
1494 vikas 141
			// Preparing XLS file for output
142
			response.setContentType("application/vnd.ms-excel");
143
 
144
			response.setHeader("Content-disposition", "inline; filename=user-orders" + ".xls");
145
 
146
			ServletOutputStream sos;
147
			try {
1608 vikas 148
				ByteArrayOutputStream baos = getSpreadSheetData(user,
149
						transactions, txnIdToPaymentMap, userCommunications,
150
						allCommunications, userClient);
1494 vikas 151
				sos = response.getOutputStream();
152
				baos.writeTo(sos);
153
				sos.flush();
154
			} catch (IOException e) {
155
				errorMsg = "Failed to write to response.";
156
				e.printStackTrace();
157
			}
158
 
159
		} catch (ParseException e)	{
1498 vikas 160
			errorMsg = e.getMessage();
1494 vikas 161
			e.printStackTrace();
162
		} catch (TransactionServiceException e)	{
1498 vikas 163
			errorMsg = e.getMessage();
1494 vikas 164
			e.printStackTrace();
165
		} catch (Exception e)	{
1498 vikas 166
			errorMsg = e.getMessage();
1494 vikas 167
			e.printStackTrace();
168
		}
169
		return "report";
170
	}
171
 
172
	// Prepares the XLS worksheet object and fills in the data with proper formatting
1608 vikas 173
	private ByteArrayOutputStream getSpreadSheetData(User user,
174
			List<Transaction> transactions,
175
			Map<Long, Payment> txnIdToPaymentMap,
176
			List<UserCommunication> userCommunications,
177
			List<UserCommunication> allCommunications, Client userClient) 
178
	{
179
	    ByteArrayOutputStream baosXLS = new ByteArrayOutputStream();
1494 vikas 180
 
1608 vikas 181
		Workbook wb = new HSSFWorkbook();
1494 vikas 182
 
183
	    Font font = wb.createFont();
184
	    font.setBoldweight(Font.BOLDWEIGHT_BOLD);
185
	    CellStyle style = wb.createCellStyle();
186
	    style.setFont(font);
187
 
1608 vikas 188
	    createUserSheet(user, userCommunications, wb, style);
189
	    createTransactionSheet(transactions, txnIdToPaymentMap, wb, style);
190
	    createAllUserCommunicationSheet(allCommunications, userClient, wb, style);
1494 vikas 191
 
192
		// Write the workbook to the output stream
193
		try {
194
			wb.write(baosXLS);
195
			baosXLS.close();
196
		} catch (IOException e) {
197
			e.printStackTrace();
198
		}		
199
		return baosXLS;
200
	}
201
 
1608 vikas 202
	private void createAllUserCommunicationSheet(
203
			List<UserCommunication> allCommunications, 
204
			Client userClient,
205
			Workbook wb, 
206
			CellStyle style) 
1494 vikas 207
	{
1608 vikas 208
		// USER COMMUNICATION SHEET
209
	    Sheet commSheet = wb.createSheet("All Users Communications");
210
	    short commSerialNo = 0;
1494 vikas 211
 
1608 vikas 212
	    Row commTitleRow = commSheet.createRow(commSerialNo ++);
213
	    Cell commTitleCell = commTitleRow.createCell(0);
214
	    commTitleCell.setCellValue("All Users Communications");
215
	    commTitleCell.setCellStyle(style);
1494 vikas 216
 
1608 vikas 217
	    commSheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 6));
1494 vikas 218
 
1608 vikas 219
	    commSheet.createRow(commSerialNo ++);
220
 
221
	    Row commHeaderRow = commSheet.createRow(commSerialNo++);
222
	    commHeaderRow.createCell(0).setCellValue("User Email");
223
	    commHeaderRow.createCell(1).setCellValue("User Name");
224
	    commHeaderRow.createCell(2).setCellValue("Communication Email");
225
	    commHeaderRow.createCell(3).setCellValue("Date of Birth");
226
	    commHeaderRow.createCell(4).setCellValue("Mobile Number");
227
	    commHeaderRow.createCell(5).setCellValue("User Id");
228
	    commHeaderRow.createCell(6).setCellValue("Sex");
229
	    commHeaderRow.createCell(7).setCellValue("Order Id");
230
	    commHeaderRow.createCell(8).setCellValue("Communication Type");
231
	    commHeaderRow.createCell(9).setCellValue("AirwayBill No");
232
	    commHeaderRow.createCell(10).setCellValue("TimeStamp");
233
	    commHeaderRow.createCell(11).setCellValue("Product Name");
234
	    commHeaderRow.createCell(12).setCellValue("Reply To");
235
	    commHeaderRow.createCell(13).setCellValue("Subject");
236
	    commHeaderRow.createCell(14).setCellValue("Message");
1494 vikas 237
 
1608 vikas 238
		for( UserCommunication userComm : allCommunications) {
239
			commSerialNo++;
240
			Row commContentRow = commSheet.createRow(commSerialNo);
241
 
242
			try {
243
				User user = userClient.getUserById(userComm.getUserId());
244
				if (user.getUserId() == -1) {
245
					commContentRow.createCell(0).setCellValue(user.getEmail());
246
					commContentRow.createCell(1).setCellValue(user.getName());
247
					commContentRow.createCell(2).setCellValue(user.getCommunicationEmail());
248
					commContentRow.createCell(3).setCellValue(user.getDateOfBirth());
249
					commContentRow.createCell(4).setCellValue(user.getMobileNumber());
250
					commContentRow.createCell(5).setCellValue(user.getUserId());
251
					if (user.getSex() != null) {
252
						commContentRow.createCell(6).setCellValue(user.getSex().name());
253
					}
254
				}
255
			} catch (UserContextException e) {
256
				e.printStackTrace();
257
			} catch (TException e) {
258
				e.printStackTrace();
259
			}
260
			commContentRow.createCell(7).setCellValue(userComm.getOrderId());
261
			if (userComm.getCommunicationType() != null) {
262
				commContentRow.createCell(8).setCellValue(
263
						userComm.getCommunicationType().name());
264
			}
265
			commContentRow.createCell(9).setCellValue(userComm.getAirwaybillNo());
266
			commContentRow.createCell(10).setCellValue(DATE_TIME_FORMAT.format(userComm.getCommunication_timestamp()));
267
			commContentRow.createCell(11).setCellValue(userComm.getProductName());
268
			commContentRow.createCell(12).setCellValue(userComm.getReplyTo());
269
			commContentRow.createCell(13).setCellValue(userComm.getSubject());
270
			commContentRow.createCell(14).setCellValue(userComm.getMessage());
1494 vikas 271
		}
272
	}
273
 
1608 vikas 274
	private void createTransactionSheet(List<Transaction> transactions, Map<Long, Payment> txnIdToPaymentMap, Workbook wb, CellStyle style) {
1494 vikas 275
		// TRANSACTION SHEET
1608 vikas 276
	    Sheet transactionSheet = wb.createSheet("Transactions and Payments");
1494 vikas 277
	    short transactionSerialNo = 0;
278
 
279
	    Row orderTitleRow = transactionSheet.createRow(transactionSerialNo ++);
280
	    Cell orderTitleCell = orderTitleRow.createCell(0);
1608 vikas 281
	    orderTitleCell.setCellValue("User Transactions and Payments");
1494 vikas 282
	    orderTitleCell.setCellStyle(style);
283
 
284
	    transactionSheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 6));
285
 
286
	    transactionSheet.createRow(transactionSerialNo ++);
287
 
288
	    Row orderHeaderRow = transactionSheet.createRow(transactionSerialNo ++);
289
	    orderHeaderRow.createCell(0).setCellValue("Transaction Id");
290
	    orderHeaderRow.createCell(1).setCellValue("Transaction Date");
291
	    orderHeaderRow.createCell(2).setCellValue("Transaction Status");
292
	    orderHeaderRow.createCell(3).setCellValue("Order Id");
293
	    orderHeaderRow.createCell(4).setCellValue("Billing Number");
294
	    orderHeaderRow.createCell(5).setCellValue("Billing Date");
295
	    orderHeaderRow.createCell(6).setCellValue("Order Status");
1608 vikas 296
 
1494 vikas 297
	    orderHeaderRow.createCell(7).setCellValue("Brand");
298
	    orderHeaderRow.createCell(8).setCellValue("Model Name");
299
	    orderHeaderRow.createCell(9).setCellValue("Model Number");
300
	    orderHeaderRow.createCell(10).setCellValue("Color");
301
	    orderHeaderRow.createCell(11).setCellValue("Quantity");
302
	    orderHeaderRow.createCell(12).setCellValue("Unit Price");
303
	    orderHeaderRow.createCell(13).setCellValue("Total Price");
1608 vikas 304
 
1494 vikas 305
	    orderHeaderRow.createCell(14).setCellValue("User Id");
306
	    orderHeaderRow.createCell(15).setCellValue("Name");
307
	    orderHeaderRow.createCell(16).setCellValue("Address1");
308
	    orderHeaderRow.createCell(17).setCellValue("Address2");
309
	    orderHeaderRow.createCell(17).setCellValue("City");
310
	    orderHeaderRow.createCell(19).setCellValue("State");
311
	    orderHeaderRow.createCell(20).setCellValue("Pin Code");
312
	    orderHeaderRow.createCell(21).setCellValue("Mobile Number");
313
	    orderHeaderRow.createCell(22).setCellValue("email");
1608 vikas 314
 
1494 vikas 315
	    orderHeaderRow.createCell(23).setCellValue("Airway Bill No.");
316
	    orderHeaderRow.createCell(24).setCellValue("Billed By");
317
	    orderHeaderRow.createCell(25).setCellValue("Receiver");
318
	    orderHeaderRow.createCell(26).setCellValue("Tracking Id");
319
	    orderHeaderRow.createCell(27).setCellValue("Accepted Timestamp");
320
	    orderHeaderRow.createCell(28).setCellValue("Delivery Timestamp");
321
	    orderHeaderRow.createCell(29).setCellValue("Expected Delivery Time");
1608 vikas 322
 
323
	    orderHeaderRow.createCell(30).setCellValue("Payment Id");
324
	    orderHeaderRow.createCell(31).setCellValue("Payment Status");
325
	    orderHeaderRow.createCell(32).setCellValue("Gateway Payment Id");
326
	    orderHeaderRow.createCell(33).setCellValue("Gateway Transaction Date");
327
	    orderHeaderRow.createCell(34).setCellValue("Gateway Txn Id");
328
	    orderHeaderRow.createCell(35).setCellValue("Gateway Txn Status");
329
	    orderHeaderRow.createCell(36).setCellValue("Reference Code");
330
	    orderHeaderRow.createCell(37).setCellValue("Gateway Id");
331
	    orderHeaderRow.createCell(38).setCellValue("Amount");
332
	    orderHeaderRow.createCell(39).setCellValue("Description");
333
	    orderHeaderRow.createCell(40).setCellValue("Auth Code");
334
	    orderHeaderRow.createCell(41).setCellValue("Error Code");
1494 vikas 335
 
336
	    for(Transaction transaction : transactions)	{
337
	    	List<Order> orders = transaction.getOrders();
338
	    	Date transactionDate = new Date(transaction.getCreatedOn());
339
	    	long transactionId = transaction.getId();
340
	    	String transactionStatus = transaction.getStatusDescription();
341
	    	for(Order order : orders)	{
342
		    	transactionSerialNo ++;
343
		    	Row contentRow = transactionSheet.createRow(transactionSerialNo);
344
			    LineItem lineItem = order.getLineitems().get(0);
1608 vikas 345
			    Payment payment = txnIdToPaymentMap.get(transactionId);
1494 vikas 346
 
347
			    contentRow.createCell(0).setCellValue(transactionId);
1608 vikas 348
			    contentRow.createCell(1).setCellValue(DATE_TIME_FORMAT.format(transactionDate));
1494 vikas 349
			    contentRow.createCell(2).setCellValue(transactionStatus);
350
			    contentRow.createCell(3).setCellValue(order.getId());
351
			    contentRow.createCell(4).setCellValue(order.getInvoice_number());
1608 vikas 352
			    contentRow.createCell(5).setCellValue(DATE_TIME_FORMAT.format(new Date(order.getBilling_timestamp())));
1494 vikas 353
			    contentRow.createCell(6).setCellValue(order.getStatusDescription());
1608 vikas 354
 
1494 vikas 355
			    contentRow.createCell(7).setCellValue(getValueForEmptyString(lineItem.getBrand()));
356
			    contentRow.createCell(8).setCellValue(getValueForEmptyString(lineItem.getModel_name()));
357
			    contentRow.createCell(9).setCellValue(getValueForEmptyString(lineItem.getModel_number()));
358
			    contentRow.createCell(10).setCellValue(getValueForEmptyString(lineItem.getColor()));
359
			    contentRow.createCell(11).setCellValue(lineItem.getQuantity());
360
			    contentRow.createCell(12).setCellValue(lineItem.getUnit_price());
361
			    contentRow.createCell(13).setCellValue(lineItem.getTotal_price());
1608 vikas 362
 
1494 vikas 363
			    contentRow.createCell(14).setCellValue(order.getCustomer_id());
364
			    contentRow.createCell(15).setCellValue(order.getCustomer_name());
365
			    contentRow.createCell(16).setCellValue(order.getCustomer_address1());
366
			    contentRow.createCell(17).setCellValue(order.getCustomer_address2());
367
			    contentRow.createCell(18).setCellValue(order.getCustomer_city());
368
			    contentRow.createCell(19).setCellValue(order.getCustomer_state());
369
			    contentRow.createCell(20).setCellValue(order.getCustomer_pincode());
370
			    contentRow.createCell(21).setCellValue(order.getCustomer_mobilenumber());
371
			    contentRow.createCell(22).setCellValue(order.getCustomer_email());
1608 vikas 372
 
1494 vikas 373
			    contentRow.createCell(23).setCellValue(order.getAirwaybill_no());
374
			    contentRow.createCell(24).setCellValue(order.getBilled_by());
375
			    contentRow.createCell(25).setCellValue(order.getReceiver());
376
			    contentRow.createCell(26).setCellValue(order.getTracking_id());
1608 vikas 377
			    contentRow.createCell(27).setCellValue(DATE_TIME_FORMAT.format(new Date(order.getAccepted_timestamp())));
378
			    contentRow.createCell(28).setCellValue(DATE_TIME_FORMAT.format(new Date(order.getDelivery_timestamp())));
379
			    contentRow.createCell(29).setCellValue(DATE_TIME_FORMAT.format(new Date(order.getExpected_delivery_time())));
380
 
381
				if (payment != null) {
382
					contentRow.createCell(30).setCellValue(payment.getPaymentId());
383
					contentRow.createCell(31).setCellValue(payment.getStatus().name());
384
					contentRow.createCell(32).setCellValue(payment.getGatewayPaymentId());
385
					contentRow.createCell(33).setCellValue(payment.getGatewayTxnDate());
386
					contentRow.createCell(34).setCellValue(payment.getGatewayTxnId());
387
					contentRow.createCell(35).setCellValue(payment.getGatewayTxnStatus());
388
					contentRow.createCell(36).setCellValue(payment.getReferenceCode());
389
					contentRow.createCell(37).setCellValue(payment.getGatewayId());
390
					contentRow.createCell(38).setCellValue(payment.getAmount());
391
					contentRow.createCell(39).setCellValue(payment.getDescription());
392
					contentRow.createCell(40).setCellValue(payment.getAuthCode());
393
					contentRow.createCell(41).setCellValue(payment.getErrorCode());
394
				}
1494 vikas 395
		    }
396
	    }
397
	}
398
 
399
	private String getValueForEmptyString(String s){
400
		if(s==null || s.equals(""))
401
			return "-";
402
		else
403
			return s; 
404
	}
405
 
1608 vikas 406
	private void createUserSheet(User user, List<UserCommunication> userCommunications, Workbook wb, CellStyle style) {
1494 vikas 407
	    Sheet userSheet = wb.createSheet("User");
408
	    short userSerialNo = 0;
409
    	// Create the header row and put all the titles in it. Rows are 0 based.
410
 
411
	    Row titleRow = userSheet.createRow(userSerialNo++);
412
	    Cell titleCell = titleRow.createCell(0);
413
	    titleCell.setCellValue("User Details");
414
	    titleCell.setCellStyle(style);
415
 
416
	    userSheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 6));
417
 
418
	    Row userHeaderRow = userSheet.createRow(userSerialNo++);
419
	    userHeaderRow.createCell(0).setCellValue("Name");
420
	    userHeaderRow.createCell(1).setCellValue("Email");
421
	    userHeaderRow.createCell(2).setCellValue("Communication Email");
422
	    userHeaderRow.createCell(3).setCellValue("Date Of Birth");
423
	    userHeaderRow.createCell(4).setCellValue("Mobile Number");
424
	    userHeaderRow.createCell(5).setCellValue("Sex");
425
	    userHeaderRow.createCell(6).setCellValue("User Id");
426
 
427
	    Row userContentRow = userSheet.createRow(userSerialNo++);
428
 
429
    	userContentRow.createCell(0).setCellValue(user.getName());
430
    	userContentRow.createCell(1).setCellValue(user.getEmail());
431
    	userContentRow.createCell(2).setCellValue(user.getCommunicationEmail());
432
    	userContentRow.createCell(3).setCellValue(user.getDateOfBirth());
433
    	userContentRow.createCell(4).setCellValue(user.getMobileNumber());
434
    	userContentRow.createCell(5).setCellValue(user.getSex().name());
435
    	userContentRow.createCell(6).setCellValue(user.getUserId());
436
 
1498 vikas 437
    	userSerialNo+=2;
438
		Row addressHeaderRow = userSheet.createRow(userSerialNo++);
439
	    addressHeaderRow.createCell(0).setCellValue("Name");
440
	    addressHeaderRow.createCell(1).setCellValue("Line1");
441
	    addressHeaderRow.createCell(2).setCellValue("Line2");
442
	    addressHeaderRow.createCell(3).setCellValue("City");
443
	    addressHeaderRow.createCell(4).setCellValue("State");
444
	    addressHeaderRow.createCell(5).setCellValue("Pincode");
445
	    addressHeaderRow.createCell(6).setCellValue("Phone");
446
 
1514 vikas 447
		List<Address> user_addresses = user.getAddresses();
448
		if (user_addresses != null && !user_addresses.isEmpty()) {
449
			for (Address address : user.getAddresses()) {
450
				if (user.getDefaultAddressId() == address.getId()) {
451
					userContentRow = userSheet.createRow(userSerialNo);
452
					userSheet.addMergedRegion(new CellRangeAddress(
453
							userSerialNo, userSerialNo, 0, 6));
454
					userContentRow.createCell(0)
455
							.setCellValue("Primary Address");
456
 
457
					userSerialNo++;
458
					userContentRow = userSheet.createRow(userSerialNo);
459
					userContentRow.createCell(0)
460
							.setCellValue(address.getName());
461
					userContentRow.createCell(1).setCellValue(
462
							address.getLine1());
463
					userContentRow.createCell(2).setCellValue(
464
							address.getLine2());
465
					userContentRow.createCell(3)
466
							.setCellValue(address.getCity());
467
					userContentRow.createCell(4).setCellValue(
468
							address.getState());
469
					userContentRow.createCell(5).setCellValue(address.getPin());
470
					userContentRow.createCell(6).setCellValue(
471
							address.getPhone());
472
					userSerialNo += 3;
473
				}
1494 vikas 474
			}
1514 vikas 475
 
476
			userContentRow = userSheet.createRow(userSerialNo);
477
			userSheet.addMergedRegion(new CellRangeAddress(userSerialNo,
478
					userSerialNo, 0, 6));
479
			userContentRow.createCell(0).setCellValue("Other Addresses");
480
 
481
			for (Address address : user.getAddresses()) {
482
				if (user.getDefaultAddressId() != address.getId()) {
483
					userSerialNo++;
484
					userContentRow = userSheet.createRow(userSerialNo);
485
					userContentRow.createCell(0)
486
							.setCellValue(address.getName());
487
					userContentRow.createCell(1).setCellValue(
488
							address.getLine1());
489
					userContentRow.createCell(2).setCellValue(
490
							address.getLine2());
491
					userContentRow.createCell(3)
492
							.setCellValue(address.getCity());
493
					userContentRow.createCell(4).setCellValue(
494
							address.getState());
495
					userContentRow.createCell(5).setCellValue(address.getPin());
496
					userContentRow.createCell(6).setCellValue(
497
							address.getPhone());
498
				}
1494 vikas 499
			}
500
 
501
 
1608 vikas 502
			userSerialNo+=2;
503
			userContentRow = userSheet.createRow(userSerialNo);
504
			userSheet.addMergedRegion(new CellRangeAddress(userSerialNo,
505
					userSerialNo, 0, 6));
506
			userContentRow.createCell(0).setCellValue("User Communication");
507
			userSerialNo++;
508
			Row commHeaderRow = userSheet.createRow(userSerialNo);
509
		    commHeaderRow.createCell(0).setCellValue("Order Id");
510
		    commHeaderRow.createCell(1).setCellValue("Communication Type");
511
		    commHeaderRow.createCell(2).setCellValue("AirwayBill No");
512
		    commHeaderRow.createCell(3).setCellValue("TimeStamp");
513
		    commHeaderRow.createCell(4).setCellValue("Product Name");
514
		    commHeaderRow.createCell(5).setCellValue("Reply To");
515
		    commHeaderRow.createCell(6).setCellValue("Subject");
516
		    commHeaderRow.createCell(7).setCellValue("Message");
517
 
518
			for( UserCommunication userComm : userCommunications) {
519
				userSerialNo++;
520
				userContentRow = userSheet.createRow(userSerialNo);
521
				userContentRow.createCell(0).setCellValue(userComm.getOrderId());
522
				if (userComm.getCommunicationType() != null) {
523
					userContentRow.createCell(1).setCellValue(userComm.getCommunicationType().name());
524
				}
525
				userContentRow.createCell(2).setCellValue(userComm.getAirwaybillNo());
526
				userContentRow.createCell(3).setCellValue(DATE_TIME_FORMAT.format(userComm.getCommunication_timestamp()));
527
				userContentRow.createCell(4).setCellValue(userComm.getProductName());
528
				userContentRow.createCell(5).setCellValue(userComm.getReplyTo());
529
				userContentRow.createCell(6).setCellValue(userComm.getSubject());
530
				userContentRow.createCell(7).setCellValue(userComm.getMessage());
1494 vikas 531
			}
1608 vikas 532
		}
1494 vikas 533
	}
1608 vikas 534
 
1494 vikas 535
	public String getErrorMsg() {
536
		return errorMsg;
537
	}
1608 vikas 538
}