Export Task CSVs

This commit is contained in:
David Bomba 2022-04-29 11:31:19 +10:00
parent 20d1ec5706
commit fbfeb76473

View File

@ -16,6 +16,7 @@ use App\Models\Client;
use App\Models\Company; use App\Models\Company;
use App\Models\DateFormat; use App\Models\DateFormat;
use App\Models\Task; use App\Models\Task;
use App\Models\Timezone;
use App\Transformers\TaskTransformer; use App\Transformers\TaskTransformer;
use App\Utils\Ninja; use App\Utils\Ninja;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
@ -106,7 +107,7 @@ class TaskExport extends BaseExport
$entity = []; $entity = [];
$transformed_entity = $this->entity_transformer->transform($task); $transformed_entity = $this->entity_transformer->transform($task);
if(is_null($task->time_log)){ if(is_null($task->time_log) || (is_array(json_decode($task->time_log,1)) && count(json_decode($task->time_log,1)) == 0)){
foreach(array_values($this->input['report_keys']) as $key){ foreach(array_values($this->input['report_keys']) as $key){
@ -118,76 +119,67 @@ class TaskExport extends BaseExport
$entity = $this->decorateAdvancedFields($task, $entity); $entity = $this->decorateAdvancedFields($task, $entity);
return $this->csv->insertOne($entity); $this->csv->insertOne($entity);
} }
elseif(is_array(json_decode($task->time_log,1)) && count(json_decode($task->time_log,1)) > 0) {
return $entity; foreach(array_values($this->input['report_keys']) as $key){
if(array_key_exists($key, $transformed_entity))
$entity[$key] = $transformed_entity[$key];
else
$entity[$key] = '';
}
$entity = $this->decorateAdvancedFields($task, $entity);
$this->iterateLogs($task, $entity);
}
} }
private function iterateLogs(Task $task, array $entity)
private function iterateItems(Task $task)
{ {
$transformed_task = $this->buildRow($task); $timezone = Timezone::find($task->company->settings->timezone_id);
$timezone_name = 'US/Eastern';
$transformed_items = []; if($timezone)
$timezone_name = $timezone->name;
$transformed_task = $this->decorateAdvancedFields($task, $transformed_items); $logs = json_decode($task->time_log,1);
$entity = [];
if(is_null(json_decode($task->time_log,1))) foreach($logs as $key => $item)
{ {
foreach(array_values($this->input['report_keys']) as $key)
{
if(array_key_exists($key, $transformed_task)) if(in_array("start_date",$this->input['report_keys'])){
$entity[$key] = $transformed_task[$key]; $entity['start_date'] = Carbon::createFromTimeStamp($item[0])->setTimezone($timezone_name);
nlog("start date" . $entity['start_date']);
} }
$this->csv->insertOne($entity); if(in_array("end_date",$this->input['report_keys']) && $item[1] > 0){
$entity['end_date'] = Carbon::createFromTimeStamp($item[1])->setTimezone($timezone_name);
nlog("start date" . $entity['end_date']);
}
else {
foreach(json_decode($task->time_log,1) as $item)
{
foreach(array_values($this->input['report_keys']) as $key)
{
$key = str_replace("item.", "", $key);
if(array_key_exists($key, $transformed_task))
$entity[$key] = $transformed_task[$key];
}
if(array_key_exists("start_date",$this->input['report_keys'])){
$entity['start_date'] = Carbon::createFromTimeStamp($item[0])->format($this->date_format);
// $entity = array_merge($entity, $transformed_task);
}
if(array_key_exists("end_date",$this->input['report_keys']) && $item[1] > 0){
$entity['end_date'] = Carbon::createFromTimeStamp($item[1])->format($this->date_format);
// $entity = array_merge($entity, $transformed_task);
}
elseif(array_key_exists('end_date', $this->input['report_keys'])){
$entity['end_date'] = ctrans('texts.is_running');
// $entity = array_merge($entity, $transformed_task);
}
$this->csv->insertOne($entity);
} }
if(in_array("end_date",$this->input['report_keys']) && $item[1] == 0){
$entity['end_date'] = ctrans('texts.is_running');
nlog("start date" . $entity['end_date']);
}
if(in_array("duration",$this->input['report_keys'])){
$entity['duration'] = $task->calcDuration();
nlog("duration" . $entity['duration']);
}
$this->csv->insertOne($entity);
unset($entity['start_date']);
unset($entity['end_date']);
unset($entity['duration']);
} }
} }
private function decorateAdvancedFields(Task $task, array $entity) :array private function decorateAdvancedFields(Task $task, array $entity) :array
{ {