167db9a5 by Manish Mihsra

Added downloading report in excel format

1 parent 5523f66a
...@@ -20,7 +20,7 @@ use App\Models\UserLog; ...@@ -20,7 +20,7 @@ use App\Models\UserLog;
20 use DB; 20 use DB;
21 use Log; 21 use Log;
22 use Session; 22 use Session;
23 use App\lib\phpexcel\PHPExcel; 23 use App\lib\PHP_XLSXWriter_master\XLSXWriter;
24 24
25 class ReportController extends Controller 25 class ReportController extends Controller
26 { 26 {
...@@ -183,14 +183,21 @@ class ReportController extends Controller ...@@ -183,14 +183,21 @@ class ReportController extends Controller
183 if($id=="campaignwise") 183 if($id=="campaignwise")
184 { 184 {
185 $filename = $id; 185 $filename = $id;
186 $dllogxls = Input::get('dllogxls');
186 187
187 $reporthead = ["Campaign", "Dials", "Connects", "Contacts", "Callbacks", "Sales", "No Answer", "Busy", "Sit Tones", "Abandoned", "Connect %", "No Answer %", "Busy %", "Sit Tones %", "Abandoned %"]; 188 $reporthead = ["Campaign", "Dials", "Connects", "Contacts", "Callbacks", "Sales", "No Answer", "Busy", "Sit Tones", "Abandoned", "Connect %", "No Answer %", "Busy %", "Sit Tones %", "Abandoned %"];
188 189
189 $reportArr = $this->getCampaignWisePredictiveDetails($data); 190 $reportArr = $this->getCampaignWisePredictiveDetails($data);
190 191
191 if(Input::has("dllogxls"))$this->downloadReportInExcel($filename, $reporthead, $reportArr); 192 $data["dllogxls"] = $dllogxls;
193 $data["filename"] = $filename;
194 $data["reporthead"] = $reporthead;
192 195
193 $data["reportArr"] = $reportArr["reportArr"]; 196 $newReportArr = array_map(function($val,$key){
197 return ['campaign' => $key] + $val;
198 }, $reportArr['reportArr'],array_keys($reportArr['reportArr']));
199
200 $data["reportArr"] = $newReportArr;
194 201
195 return view("layout.module.reports.campaignwise", $data); 202 return view("layout.module.reports.campaignwise", $data);
196 } 203 }
...@@ -213,20 +220,31 @@ class ReportController extends Controller ...@@ -213,20 +220,31 @@ class ReportController extends Controller
213 $reportArr[$crmcallObj->client]['dials']++; 220 $reportArr[$crmcallObj->client]['dials']++;
214 221
215 if($crmcallObj->user_id != 0) $reportArr[$crmcallObj->client]['connects']++; 222 if($crmcallObj->user_id != 0) $reportArr[$crmcallObj->client]['connects']++;
216 if(strstr($crmcallObj->status, "NOANSWER"))$reportArr[$crmcallObj->client]['noanswer']++; 223
224 if(strstr($crmcallObj->status, "NOANSWER"))$reportArr[$crmcallObj->client]['no_answer']++;
217 if(stristr($crmcallObj->status, "busy"))$reportArr[$crmcallObj->client]['busy']++; 225 if(stristr($crmcallObj->status, "busy"))$reportArr[$crmcallObj->client]['busy']++;
218 if($crmcallObj->status == "ANSWER" && $crmcallObj->user_id == 0)$reportArr[$crmcallObj->client]['abandoned']++; 226 if($crmcallObj->status == "ANSWER" && $crmcallObj->user_id == 0)$reportArr[$crmcallObj->client]['abandoned']++;
219 if($crmcallObj->status != "ANSWER" && $crmcallObj->status != "NOANSWER" && stristr($crmcallObj->status, "busy") == "")$reportArr[$crmcallObj->client]['sittone']++; 227 if($crmcallObj->status != "ANSWER" && $crmcallObj->status != "NOANSWER" && stristr($crmcallObj->status, "busy") == "")$reportArr[$crmcallObj->client]['sit_tones']++;
220 } 228 }
221 229
222 foreach ($reportArr as $key => $report) { 230 foreach ($reportArr as $key => $report) {
223 $finalArr[$key] = $report; 231 $finalArr[$key] = $report;
224 232
225 $finalArr[$key]['connect_per'] = round(($report['connects'] / $report['dials']) * 100, 2); 233 if(!isset($finalArr[$key]['dials'])) $finalArr[$key]['dials']=0;
226 $finalArr[$key]['noanswer_per'] = round(($report['noanswer'] / $report['dials']) * 100, 2); 234 if(!isset($finalArr[$key]['connects'])) $finalArr[$key]['connects']=0;
235 if(!isset($finalArr[$key]['contacts'])) $finalArr[$key]['contacts']=0;
236 if(!isset($finalArr[$key]['callbacks'])) $finalArr[$key]['callbacks']=0;
237 if(!isset($finalArr[$key]['sales'])) $finalArr[$key]['sales']=0;
238 if(!isset($finalArr[$key]['no_answer'])) $finalArr[$key]['no_answer']=0;
239 if(!isset($finalArr[$key]['busy'])) $finalArr[$key]['busy']=0;
240 if(!isset($finalArr[$key]['sit_tones'])) $finalArr[$key]['sit_tones']=0;
241 if(!isset($finalArr[$key]['abandoned'])) $finalArr[$key]['abandoned']=0;
242
243 $finalArr[$key]['connects_per'] = round(($report['connects'] / $report['dials']) * 100, 2);
244 $finalArr[$key]['no_answer_per'] = round(($report['no_answer'] / $report['dials']) * 100, 2);
227 $finalArr[$key]['busy_per'] = round(($report['busy'] / $report['dials']) * 100, 2); 245 $finalArr[$key]['busy_per'] = round(($report['busy'] / $report['dials']) * 100, 2);
228 $finalArr[$key]['abandoned_per'] = round(($report['abandoned'] / $report['dials']) * 100, 2); 246 $finalArr[$key]['abandoned_per'] = round(($report['abandoned'] / $report['dials']) * 100, 2);
229 $finalArr[$key]['sittone_per'] = round(($report['sittone'] / $report['dials']) * 100, 2); 247 $finalArr[$key]['sit_tones_per'] = round(($report['sit_tones'] / $report['dials']) * 100, 2);
230 } 248 }
231 249
232 $data["reportArr"] = $finalArr; 250 $data["reportArr"] = $finalArr;
...@@ -234,36 +252,42 @@ class ReportController extends Controller ...@@ -234,36 +252,42 @@ class ReportController extends Controller
234 return $data; 252 return $data;
235 } 253 }
236 254
237 public function downloadReportInExcel($filename, $reporthead, $reportarray) 255 //TODO: Need To make common Download Function
256 public function downloadReportInExcel($data)
238 { 257 {
239 $inputFileType = "Excel5"; 258 $headerexcel = [];
240 $objReader = PHPExcel_IOFactory::createReader($inputFileType); 259 $filename = $data["filename"];
241 $objPHPExcel = $objReader->load("assets/extras/blank.xls"); 260 $filename = $filename.".xlsx";
242 $baseRow = 2;
243 261
262 $reporthead = $data["reporthead"];
263 $reportArr = $data["reportArr"];
244 264
245 $highestColumn = sizeof($reporthead); 265 foreach($reporthead as $cachekey)
246 for ($head = 0; $head < $highestColumn; $head++){
247 $colstr=PHPExcel_Cell::stringFromColumnIndex($head);
248 $objPHPExcel->getActiveSheet()->setCellValue($colstr."1", $reporthead[$head]);
249 }
250 foreach($reportarray as $uid=>$uarr)
251 { 266 {
252 $row = $baseRow++; 267 if($cachekey!='')
253 $col = 0; 268 {
254 269 $headerexcel[$cachekey] = 'string';
255 for ($head = 0; $head < $highestColumn; $head++){ 270 }
256 $colstr=PHPExcel_Cell::stringFromColumnIndex($head);
257 $objPHPExcel->getActiveSheet()->setCellValue($colstr.$row, $uarr[$reporthead[$head]]);
258 }
259 $row++;
260 } 271 }
261 272
262 header('Content-Type: application/vnd.ms-excel'); 273 header('Content-disposition: attachment; filename="'.XLSXWriter::sanitize_filename($filename).'"');
263 header("Content-Disposition: attachment;filename=\"$filename.xls\""); 274 header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
264 header('Cache-Control: max-age=0'); 275 header('Content-Transfer-Encoding: binary');
265 276 header('Cache-Control: must-revalidate');
266 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, $inputFileType); 277 header('Pragma: public');
267 $objWriter->save('php://output'); 278
279 $writer = new XLSXWriter();
280 $styles1 = array( 'font'=>'Arial','font-size'=>10,'font-style'=>'bold', 'fill'=>'#eee', 'halign'=>'center', 'border'=>'left,right,top,bottom');
281 $writer->writeSheetHeader('Sheet1', $headerexcel,$styles1,['freeze_rows'=>1, 'freeze_columns'=>1]);
282
283 if($reportArr){
284
285 foreach($reportArr as $row)
286 {
287 $writer->writeSheetRow('Sheet1', $row, $row_options = ['height'=>15]);
288 }
289 }
290 //dd($writer);
291 $writer->writeToStdOut();
268 } 292 }
269 } 293 }
......
1 <style>#logTableData.td{vertical-align:top;padding:20px;}#logTableData.tr{height:28px;overflow-y:hidden;} 1 @php
2 /*#logtable.table thead tr{ 2
3 display:block; 3 if($dllogxls)
4 {
5 include_once(app_path().'/lib/PHP_XLSXWriter_master/xlsxwriter.class.php');
6
7 $headerexcel = [];
8 $filename = $filename.".xlsx";
9
10 foreach($reporthead as $cachekey)
11 {
12 if($cachekey!='')
13 {
14 $headerexcel[$cachekey] = 'string';
15 }
16 }
17
18 header('Content-disposition: attachment; filename="'.XLSXWriter::sanitize_filename($filename).'"');
19 header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
20 header('Content-Transfer-Encoding: binary');
21 header('Cache-Control: must-revalidate');
22 header('Pragma: public');
23
24 $writer = new XLSXWriter();
25 $styles1 = array( 'font'=>'Arial','font-size'=>10,'font-style'=>'bold', 'fill'=>'#eee', 'halign'=>'center', 'border'=>'left,right,top,bottom');
26 $writer->writeSheetHeader('Sheet1', $headerexcel,$styles1,['freeze_rows'=>1, 'freeze_columns'=>1]);
27
28 if($reportArr){
29
30 foreach($reportArr as $row)
31 {
32 $newRow = [];
33
34 $newRow['campaign'] = $row['campaign'];
35 $newRow['dials'] = $row['dials'];
36 $newRow['connects'] = $row['connects'];
37 $newRow['contacts'] = $row['contacts'];
38 $newRow['callbacks'] = $row['callbacks'];
39 $newRow['sales'] = $row['sales'];
40 $newRow['no_answer'] = $row['no_answer'];
41 $newRow['busy'] = $row['busy'];
42 $newRow['sit_tones'] = $row['sit_tones'];
43 $newRow['abandoned'] = $row['abandoned'];
44 $newRow['connects_per'] = $row['connects_per'];
45 $newRow['no_answer_per'] = $row['no_answer_per'];
46 $newRow['busy_per'] = $row['busy_per'];
47 $newRow['sit_tones_per'] = $row['sit_tones_per'];
48 $newRow['abandoned_per'] = $row['abandoned_per'];
49
50 $writer->writeSheetRow('Sheet1', $newRow, $newRow_options = ['height'=>15]);
51 }
52 }
53
54 $writer->writeToStdOut();
55
56 return;
4 } 57 }
5 58
6 #logtable.table tbody{ 59 @endphp
7 display:block; 60
8 height:500px; 61
9 overflow:auto;//set tbody to auto 62 <style>
10 }*/ 63 #logTableData.td{vertical-align:top;padding:20px;}
64 #logTableData.tr{height:28px;overflow-y:hidden;}
11 </style> 65 </style>
12 66
13 <div class=innerAll> 67 <div class=innerAll>
...@@ -65,23 +119,23 @@ ...@@ -65,23 +119,23 @@
65 </thead> 119 </thead>
66 120
67 <tbody> 121 <tbody>
68 @foreach($reportArr as $client=>$value) 122 @foreach($reportArr as $value)
69 <tr> 123 <tr>
70 <td>{{$client}}</td> 124 <td>{{$value['campaign']}}</td>
71 <td>{{$value['dials']}}</td> 125 <td>{{$value['dials']}}</td>
72 <td>{{$value['connects']}}</td> 126 <td>{{$value['connects']}}</td>
73 <td></td> 127 <td>{{$value['contacts']}}</td>
74 <td></td> 128 <td>{{$value['callbacks']}}</td>
75 <td></td> 129 <td>{{$value['sales']}}</td>
76 <td>{{$value['noanswer']}}</td> 130 <td>{{$value['no_answer']}}</td>
77 <td>{{$value['busy']}}</td> 131 <td>{{$value['busy']}}</td>
78 <td>{{$value['sittone']}}</td> 132 <td>{{$value['sit_tones']}}</td>
79 <td>{{$value['abandoned']}}</td> 133 <td>{{$value['abandoned']}}</td>
80 <td>{{$value['connect_per']}}</td> 134 <td>{{$value['connects_per']}}<span>%</span></td>
81 <td>{{$value['noanswer_per']}}</td> 135 <td>{{$value['no_answer_per']}}<span>%</span></td>
82 <td>{{$value['busy_per']}}</td> 136 <td>{{$value['busy_per']}}<span>%</span></td>
83 <td>{{$value['sittone_per']}}</td> 137 <td>{{$value['sit_tones_per']}}<span>%</span></td>
84 <td>{{$value['abandoned_per']}}</td> 138 <td>{{$value['abandoned_per']}}<span>%</span></td>
85 </tr> 139 </tr>
86 @endforeach 140 @endforeach
87 </tbody> 141 </tbody>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!