public function parseTheLightdataStringFromRequest($datastring) { //Instantiate an empty array for each possible type of missing nodes within the lightdata string. $array_of_missing_nodes = array(); $missing_setup_nodes = array(); $missing_groupings_node = array(); $touchpoints_missing_nodes = array(); $budgetallocation_missing_nodes = array(); $timeallocation_missing_nodes = array(); $the_start_date = null; //Instantiate a variable to check if there were errors on parsing the data to the db (if the string was malformed) $error_on_parsing = false; $contentOfJsonFile = $datastring; $em = $this->getDoctrine()->getManager(); //Create a new Lightdata UUID $lightdata_uuid = Uuid::uuid4()->toString(); $lightdata = new Lightdata(); $lightdata->setInputstring($contentOfJsonFile); //Decode the Json File to an Array. $arrayOfJsonObjects = json_decode($contentOfJsonFile, true); $project_data = $arrayOfJsonObjects; if (isset($arrayOfJsonObjects['Project'])) { $project_data = $arrayOfJsonObjects['Project']; } //INSTANTIATE THE LIGHTDATA OBJECT //////////////////////////////////////////////////////////////// //Assign Project SETUP Data //////////////////////////////////////////////////////////////// //Grab setup array from the whole array. if (isset($project_data['Setup'])) { $setup_data = $project_data['Setup']; $client = new ClientLD(); $target = new TargetLD(); $survey = new SurveyLD(); $setup = new SetupLD(); //Assign The Client Data or add Node to Missing Setup Nodes. if (isset($setup_data['Client'])) { $client->setName($setup_data['Client']['Name']); $client->setDbid($setup_data['Client']['DbID']); $setup->setClient($client); } else { $missing_setup_nodes[] = 'Client'; } //Assign The Target Data or add Node to Missing Setup Nodes. if (isset($setup_data['Target'])) { $target->setName($setup_data['Target']['Name']); $target->setDbid($setup_data['Target']['DbID']); $setup->setTarget($target); } else { $missing_setup_nodes[] = 'Target'; } //Assign The Survey Data or add Node to Missing Setup Nodes. if (isset($setup_data['Survey'])) { $survey->setName($setup_data['Survey']['Name']); $survey->setDbid($setup_data['Survey']['DbID']); $setup->setSurvey($survey); } else { $missing_setup_nodes[] = 'Survey'; } //Assign The ProjectName Data or add Node to Missing Setup Nodes. if (isset($setup_data['ProjectName'])) { $setup->setProjectName($setup_data['ProjectName']); } else { $missing_setup_nodes[] = 'ProjectName'; } //Assign The Start Date or add Node to Missing Setup Nodes. if (isset($setup_data['StartDate'])) { $setup->setStartDate(new \DateTime($setup_data['StartDate'])); $the_start_date = new \DateTime($setup_data['StartDate']); } else { $missing_setup_nodes[] = 'StartDate'; $the_start_date = null; } //Assign The PeriodType Data or add Node to Missing Setup Nodes. if (isset($setup_data['PeriodType'])) { $setup->setPeriodType($setup_data['PeriodType']); } else { $missing_setup_nodes[] = 'PeriodType'; } //Assign The NbPeriods Data or add Node to Missing Setup Nodes. if (isset($setup_data['NbPeriods'])) { $setup->setNbPeriods($setup_data['NbPeriods']); } else { $missing_setup_nodes[] = 'NbPeriods'; } //Assign The Budget Data or add Node to Missing Setup Nodes. if (isset($setup_data['Budget'])) { $setup->setBudget($setup_data['Budget']); } else { $missing_setup_nodes[] = 'Budget'; } //Assign The BudgetCurrency Data or add Node to Missing Setup Nodes. if (isset($setup_data['BudgetCurrency'])) { $setup->setBudgetCurrency($setup_data['BudgetCurrency']); } else { $missing_setup_nodes[] = 'BudgetCurrency'; } $setup->setLightdata($lightdata); $lightdata->setSetup($setup); } else { $error_on_parsing = true; $array_of_missing_nodes[] = "Setup"; } //Assign The CurrentGroupingIndex Data or add Node to Missing Nodes. if (isset($project_data['CurrentGroupingIndex'])) { $lightdata->setCurrentgroupingindex($project_data['CurrentGroupingIndex']); } else { $array_of_missing_nodes[] = 'CurrentGroupingIndex'; } //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //Assign OBJECTIVES Data //////////////////////////////////////////////////////////////// //ONLY ADD IF EXISTS if (isset($project_data['Objectives'])) { $objectives_data = $project_data['Objectives']; foreach ($objectives_data as $objective_data) { $objective = new ObjectiveLD(); $objective->setName($objective_data['Name']); $objective->setHtmlcolor($objective_data['HtmlColor']); $objective->setSelected($objective_data['Selected']); $objective->setScore($objective_data['Score']); $objective->setLightdata($lightdata); $lightdata->addObjective($objective); } } else { $array_of_missing_nodes[] = 'Objectives'; } //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //Assign GROUPINGS Data //////////////////////////////////////////////////////////////// if (isset($project_data['Groupings'])) { $groupings_data = $project_data['Groupings']; foreach ($groupings_data as $grouping_data) { if (isset($grouping_data['Name'])) { $grouping = new GroupingLD(); $grouping->setName($grouping_data['Name']); $grouping->setLightdata($lightdata); if (isset($grouping_data['Categories'])) { foreach ($grouping_data['Categories'] as $groupings_cateogry) { $groupingcategory = new GroupingCategoryLD(); $groupingcategory->setGrouping($grouping); $groupingcategory->setName($groupings_cateogry['Name']); $groupingcategory->setHtmlcolor($groupings_cateogry['HtmlColor']); $grouping->addGroupingcategory($groupingcategory); } } else { $missing_groupings_node[] = "Categories"; } if (isset($grouping_data['TouchpointCategoryMap'])) { foreach ($grouping_data['TouchpointCategoryMap'] as $key => $value) { $groupingstouchpointcategorymap = new GroupingTouchpointCategoryMapLD(); $groupingstouchpointcategorymap->setGrouping($grouping); $groupingstouchpointcategorymap->setName($key); $groupingstouchpointcategorymap->setValue($value); $grouping->addGroupingtouchpointcategorymap($groupingstouchpointcategorymap); } } else { $missing_groupings_node[] = "TouchpointCategoryMap"; } $lightdata->addGrouping($grouping); } else { $missing_groupings_node[] = "Groupings Node Availlable, Data Inside Missing."; } } } else { $array_of_missing_nodes[] = "Groupings"; } //END FOREACH GROUPING //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //ASSIGN THE CURRENT GROUPING INDEX , TO THE LIGHTDATA ENTITI DIRECTLY //ASSIGN THE CURRENT GROUPING INDEX , TO THE LIGHTDATA ENTITI DIRECTLY //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //ASSIGN TOUCHPOINTS , OBJECTIVESCORES AND ATTRIBUTESCORES FOR EACH TOUCHPOINT //ASSIGN TOUCHPOINTS , OBJECTIVESCORES AND ATTRIBUTESCORES FOR EACH TOUCHPOINT if (isset($project_data['Touchpoints'])) { $touchpoints_data = $project_data['Touchpoints']; foreach ($touchpoints_data as $touchpoint_data) { $touchpoint = new TouchpointLD(); $touchpoint->setName($touchpoint_data['Name']); $touchpoint->setLocalname($touchpoint_data['LocalName']); $touchpoint->setHtmlcolor($touchpoint_data['HtmlColor']); $touchpoint->setSelected($touchpoint_data['Selected']); $touchpoint->setAggobjectivescore($touchpoint_data['AggObjectiveScore']); $touchpoint->setLightdata($lightdata); //EVEN IF TOUCHPOINTS NODE IS AVAILLABLE , WE SHOULD CHECK IF THERE ARE ANY TOUCHPOINTS SET. //EVEN IF TOUCHPOINTS NODE IS AVAILLABLE , WE SHOULD CHECK IF THERE ARE ANY TOUCHPOINTS SET. if (isset($touchpoint_data['ObjectiveScores'])) { foreach ($touchpoint_data['ObjectiveScores'] as $touchpoint_objectivescore) { $touchpointObjectiveScore = new TouchpointObjectiveScoreLD(); $touchpointObjectiveScore->setValue($touchpoint_objectivescore); $touchpointObjectiveScore->setTouchpoint($touchpoint); $touchpoint->addTouchpointobjectivescore($touchpointObjectiveScore); } } else { $touchpoints_missing_nodes[] = "ObjectiveScores"; } if (isset($touchpoint_data['AttributeScores'])) { foreach ($touchpoint_data['AttributeScores'] as $touchpoint_attributescore) { $touchpointAttributeScore = new TouchpointAttributeScoreLD(); $touchpointAttributeScore->setValue($touchpoint_attributescore); $touchpointAttributeScore->setTouchpoint($touchpoint); $touchpoint->addTouchpointattributescore($touchpointAttributeScore); } } else { $touchpoints_missing_nodes[] = "AttributeScores"; } $lightdata->addTouchpoint($touchpoint); } } else { $array_of_missing_nodes[] = "Touchpoints"; } //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////// //ASSIGN CPRATTRIBUTES //////////////////////////////////////////////////// if (isset($project_data['CPRAttributes'])) { $cprattributes_data = $project_data['CPRAttributes']; foreach ($cprattributes_data as $cprattribute_data) { $cprattribute = new CPRAttributeLD(); $cprattribute->setName($cprattribute_data['Name']); $cprattribute->setDescription($cprattribute_data['Description']); $cprattribute->setSelected($cprattribute_data['Selected']); $cprattribute->setLightdata($lightdata); $lightdata->addCprattribute($cprattribute); } } else { $array_of_missing_nodes[] = "CPRAttributes"; } /////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////// ////ASSIGN BUDGETALLOCATION /////////////////////////////////////////////////////////////// if (isset($project_data['BudgetAllocation'])) { $budgetallocation_data = $project_data['BudgetAllocation']; $budgetallocation = new BudgetAllocationLD(); $lightdata->setBudgetallocation($budgetallocation); $budgetallocation->setLightdata($lightdata); ///ADD THE BUDGETALLOCATION ALLOCATEDTOUCHPOINTS if (isset($budgetallocation_data['AllocatedTouchpoints'])) { $ba_allocatedtouchpoints = $budgetallocation_data['AllocatedTouchpoints']; foreach ($ba_allocatedtouchpoints as $budgetallocation_allocatedtouchpoint) { $AllocatedTouchpoint = new BAAllocatedTouchpointLD(); $AllocatedTouchpoint->setTouchpointname($budgetallocation_allocatedtouchpoint['TouchpointName']); $AllocatedTouchpoint->setBudgetallocation($budgetallocation); $budgetallocation->addAllocatedtouchpoint($AllocatedTouchpoint); $allocation_data = $budgetallocation_allocatedtouchpoint['Allocation']; $allocation = new BAATAllocationLD(); $allocation->setAllocatedtouchpoint($AllocatedTouchpoint); $allocation->setBudget($allocation_data['Budget']); $allocation->setCostpergrp($allocation_data['CostPerGRP']); $allocation->setGrp($allocation_data['GRP']); $AllocatedTouchpoint->setAllocation($allocation); $result_data = $allocation_data['Result']; $Result = new BAATAResultLD(); $Result->setAllocation($allocation); $Result->setGlobalperformance($result_data['GlobalPerformance']); $Result->setReach($result_data['Reach']); $allocation->setResult($Result); if (isset($result_data['IndividualPerformance'])) { $individual_performances_data = $result_data['IndividualPerformance']; foreach ($individual_performances_data as $individual_performance_data) { $IndividualPerformance = new BAATARIndividualPerformanceLD(); $IndividualPerformance->setResult($Result); $IndividualPerformance->setValue($individual_performance_data); $Result->addIndividualperformance($IndividualPerformance); } } else { //RETURN THAT NODE RESULT INDIVIDUALPERFORMANCE IS MISSING } } } else { //RETURN THAT NODE RESULT ALLOCATEDTOUCHPOINTS IS MISSING } ///ADD THE BUDGETALLOCATION TOTAL if (isset($budgetallocation_data['Total'])) { $ba_total = $budgetallocation_data['Total']; $budgetallocation_total = new BATotalLD(); $budgetallocation_total->setTouchpointname($ba_total['TouchpointName']); $budgetallocation_total->setBudgetallocation($budgetallocation); $budgetallocation->addTotal($budgetallocation_total); $total_data = $ba_total['Allocation']; $allocation = new BATOAllocationLD(); $allocation->setAllocatedtouchpoint($budgetallocation_total); $allocation->setBudget($total_data['Budget']); $allocation->setCostpergrp($total_data['CostPerGRP']); $allocation->setGrp($total_data['GRP']); $budgetallocation_total->setAllocation($allocation); $result_data = $total_data['Result']; $Result = new BATOAResultLD(); $Result->setAllocation($allocation); $Result->setGlobalperformance($result_data['GlobalPerformance']); $Result->setReach($result_data['Reach']); $allocation->setResult($Result); if (isset($result_data['IndividualPerformance'])) { $individual_performances_data = $result_data['IndividualPerformance']; foreach ($individual_performances_data as $individual_performance_data) { $IndividualPerformance = new BATOARIndividualPerformanceLD(); $IndividualPerformance->setResult($Result); $IndividualPerformance->setValue($individual_performance_data); $Result->addIndividualperformance($IndividualPerformance); } } else { //RETURN THAT NODE RESULTDATA INDIVIDUALPERFORMANCE IS MISSING } } else { //RETURN THAT NODE BUDGETALLOCATION_TOTAL IS MISSING } } else { //RETURN THAT WHOLE BUDGETALLOCATION NODE IS MISSING $array_of_missing_nodes[] = "BudgetAllocation"; } ///////////////////////////////////////// // END OF ASSIGNS FOR BUDGETALLOCATION ///////////////////////////////////////// /////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////// ////ASSIGN TIME ALLOCATION /////////////////////////////////////////////////////////////// if (isset($project_data['TimeAllocation'])) { $timeallocation_data = $project_data['TimeAllocation']; $timeallocation = new TimeAllocationLD(); $lightdata->setTimeallocation($timeallocation); $timeallocation->setLightdata($lightdata); ///ADD THE TIMEALLOCATION ALLOCATEDTOUCHPOINTS //$timeallocation_missing_nodes if (isset($timeallocation_data['AllocatedTouchpoints'])) { $timeallocation_allocatedtouchpoints_data = $timeallocation_data['AllocatedTouchpoints']; foreach ($timeallocation_allocatedtouchpoints_data as $ta_allocatedtouchpoint) { $TAAllocatedTouchpoint = new TAAllocatedTouchpointLD(); $TAAllocatedTouchpoint->setTouchpointname($ta_allocatedtouchpoint['TouchpointName']); $TAAllocatedTouchpoint->setReachfrequency($ta_allocatedtouchpoint['ReachFrequency']); $TAAllocatedTouchpoint->setTimeallocation($timeallocation); $timeallocation->addAllocatedtouchpoint($TAAllocatedTouchpoint); $allocations_by_period_data = $ta_allocatedtouchpoint['AllocationByPeriod']; foreach ($allocations_by_period_data as $allocation_by_period) { $AllocationByPeriod = new TAATAllocationByPeriod(); $AllocationByPeriod->setAllocatedtouchpoint($TAAllocatedTouchpoint); $AllocationByPeriod->setBudget($allocation_by_period['Budget']); $AllocationByPeriod->setCostpergrp($allocation_by_period['CostPerGRP']); $AllocationByPeriod->setGrp($allocation_by_period['GRP']); $TAAllocatedTouchpoint->addAllocationbyperiod($AllocationByPeriod); $ABPresult_data = $allocation_by_period['Result']; $ABPResult = new TAATABPResult(); $ABPResult->setAllocationbyperiod($AllocationByPeriod); $ABPResult->setGlobalperformance($ABPresult_data['GlobalPerformance']); $ABPResult->setReach($ABPresult_data['Reach']); $AllocationByPeriod->setResult($ABPResult); $ABPindividual_performances_data = $ABPresult_data['IndividualPerformance']; foreach ($ABPindividual_performances_data as $individual_performance_data) { $ABPIndividualPerformance = new TAATABPRIndividualPerformance(); $ABPIndividualPerformance->setResult($ABPResult); $ABPIndividualPerformance->setValue($individual_performance_data); $ABPResult->addIndividualperformance($ABPIndividualPerformance); } } } } else { $timeallocation_missing_nodes[] = "AllocatedTouchpoints"; } ///ADD THE TIMEALLOCATION TOTAL //ONLYADD TOTAL IF IS SET if (isset($timeallocation_data['Total'])) { $timeallocation_total_data = $timeallocation_data['Total']; $TATotal = new TATotalLD(); $TATotal->setTimeallocation($timeallocation); $TATotal->setTouchpointname($timeallocation_total_data['TouchpointName']); $TATotal->setReachfrequency($timeallocation_total_data['ReachFrequency']); $timeallocation->addTotal($TATotal); if (isset($timeallocation_total_data['AllocationByPeriod'])) { $allocations_by_period_data_total = $timeallocation_total_data['AllocationByPeriod']; foreach ($allocations_by_period_data_total as $allocation_by_period) { $TotalAllocationByPeriod = new TATOAllocationByPeriod(); $TotalAllocationByPeriod->setAllocatedtouchpoint($TATotal); $TotalAllocationByPeriod->setBudget($allocation_by_period['Budget']); $TotalAllocationByPeriod->setCostpergrp($allocation_by_period['CostPerGRP']); $TotalAllocationByPeriod->setGrp($allocation_by_period['GRP']); $TATotal->addAllocationbyperiod($TotalAllocationByPeriod); $TotalABPresult_data = $allocation_by_period['Result']; $TotalABPResult = new TATOABPResult(); $TotalABPResult->setAllocationbyperiod($TotalAllocationByPeriod); $TotalABPResult->setGlobalperformance($TotalABPresult_data['GlobalPerformance']); $TotalABPResult->setReach($TotalABPresult_data['Reach']); $TotalAllocationByPeriod->setResult($TotalABPResult); $TotalABPindividual_performances_data = $TotalABPresult_data['IndividualPerformance']; foreach ($TotalABPindividual_performances_data as $individual_performance_data) { $TOABPIndividualPerformance = new TATOABPRIndividualPerformance(); $TOABPIndividualPerformance->setResult($TotalABPResult); $TOABPIndividualPerformance->setValue($individual_performance_data); $TotalABPResult->addIndividualperformance($TOABPIndividualPerformance); } } } } else { $timeallocation_missing_nodes[] = "Total"; } } else { $array_of_missing_nodes[] = "TimeAllocation"; } ////END ASSIGN TIME ALLOCATION ////ASSIGN THE WHATIFRESULT DATA////ASSIGN THE WHATIFRESULT DATA ////ASSIGN THE WHATIFRESULT DATA////ASSIGN THE WHATIFRESULT DATA ////ASSIGN THE WHATIFRESULT DATA////ASSIGN THE WHATIFRESULT DATA ////ASSIGN THE WHATIFRESULT DATA////ASSIGN THE WHATIFRESULT DATA //ONLY IF THE WHATIFRESULT IS AVAILLABLE INTO THE JSON UPDATED if (isset($project_data['WhatIfResult'])) { $whatifresult_data = $project_data['WhatIfResult']; $WhatIfResult = new WhatIfResult(); //////////////////////////////////////////// $WhatIfResult->setLightdata($lightdata); $lightdata->setWhatifresult($WhatIfResult); //////////////////////////////////////////// $wirconfig_data = $whatifresult_data['Config']; $WIRConfig = new WIRConfig(); //////////////////////////////////////////// $WIRConfig->setWhatifresult($WhatIfResult); $WhatIfResult->setConfig($WIRConfig); //////////////////////////////////////////// $WIRConfig->setFirstperiod($wirconfig_data['FirstPeriod']); $WIRConfig->setLastperiod($wirconfig_data['LastPeriod']); $WIRConfig->setSourcebudget($wirconfig_data['SourceBudget']); $WIRConfig->setBudgetminpercent($wirconfig_data['BudgetMinPercent']); $WIRConfig->setBudgetmaxpercent($wirconfig_data['BudgetMaxPercent']); $WIRConfig->setBudgetsteppercent($wirconfig_data['BudgetStepPercent']); $WIRConfig->setHascurrentmix($wirconfig_data['HasCurrentMix']); $WIRConfig->setHassingletouchpointmix($wirconfig_data['HasSingleTouchpointMix']); $WIRConfig->setHasoptimizedmix($wirconfig_data['HasOptimizedMix']); $wircoptimizedfunction_data = $wirconfig_data['OptimizedFunction']; $WIRCOptimizedFunction = new WIRCOptimizedFunction(); //////////////////////////////////////////// $WIRCOptimizedFunction->setConfig($WIRConfig); $WIRConfig->setOptimizedfunction($WIRCOptimizedFunction); //////////////////////////////////////////// $WIRCOptimizedFunction->setCalculationtype($wircoptimizedfunction_data['CalculationType']); $WIRCOptimizedFunction->setAttributeindex($wircoptimizedfunction_data['AttributeIndex']); $wirpoints_data = $whatifresult_data['Points']; foreach ($wirpoints_data as $wirpoint_data) { $WIRPoint = new WIRPoint(); $WIRPoint->setWhatifresult($WhatIfResult); $WIRPoint->setStepposition($wirpoint_data['StepPosition']); $WIRPoint->setActualpercent($wirpoint_data['ActualPercent']); $WhatIfResult->addPoint($WIRPoint); //ASSIGN THE CURRENT MIX DATA //ASSIGN THE CURRENT MIX DATA $currentmix_data = $wirpoint_data['CurrentMix']; $WIRPCurrentMix = new WIRPCurrentMix(); $WIRPCurrentMix->setPoint($WIRPoint); $WIRPoint->setCurrentmix($WIRPCurrentMix); if (isset($currentmix_data['Details'])) { $wirp_currentmix_details_data = $currentmix_data['Details']; foreach ($wirp_currentmix_details_data as $detail_data) { $WIRPCMDetail = new WIRPCMDetail(); $WIRPCMDetail->setCurrentmix($WIRPCurrentMix); $WIRPCMDetail->setTouchpointname($detail_data['TouchpointName']); $WIRPCMDetail->setBudget($detail_data['Budget']); $WIRPCMDetail->setFunctionvalue($detail_data['FunctionValue']); $WIRPCurrentMix->addDetail($WIRPCMDetail); } $wirp_currentmix_total_data = $currentmix_data['Total']; $WIRPCMTotal = new WIRPCMTotal(); $WIRPCMTotal->setCurrentmix($WIRPCurrentMix); $WIRPCMTotal->setTouchpointname($wirp_currentmix_total_data['TouchpointName']); $WIRPCMTotal->setBudget($wirp_currentmix_total_data['Budget']); $WIRPCMTotal->setFunctionvalue($wirp_currentmix_total_data['FunctionValue']); $WIRPCurrentMix->setTotal($WIRPCMTotal); } //END ASSIGN THE CURRENT MIX DATA //ASSIGN THE OPTIMIZED MIX DATA //ASSIGN THE OPTIMIZED MIX DATA $optimizedmix_data = $wirpoint_data['OptimizedMix']; $WIRPOptimizedMix = new WIRPOptimizedMix(); $WIRPOptimizedMix->setPoint($WIRPoint); $WIRPoint->setOptimizedmix($WIRPOptimizedMix); if (isset($optimizedmix_data['Details'])) { $wirp_optimizedmix_details_data = $optimizedmix_data['Details']; foreach ($wirp_optimizedmix_details_data as $detail_data) { $WIRPOMDetail = new WIRPOMDetail(); $WIRPOMDetail->setOptimizedmix($WIRPOptimizedMix); $WIRPOMDetail->setTouchpointname($detail_data['TouchpointName']); $WIRPOMDetail->setBudget($detail_data['Budget']); $WIRPOMDetail->setFunctionvalue($detail_data['FunctionValue']); $WIRPOptimizedMix->addDetail($WIRPOMDetail); } $wirp_optimizedmix_total_data = $optimizedmix_data['Total']; $WIRPOMTotal = new WIRPOMTotal(); $WIRPOMTotal->setOptimizedmix($WIRPOptimizedMix); $WIRPOMTotal->setTouchpointname($wirp_optimizedmix_total_data['TouchpointName']); $WIRPOMTotal->setBudget($wirp_optimizedmix_total_data['Budget']); $WIRPOMTotal->setFunctionvalue($wirp_optimizedmix_total_data['FunctionValue']); $WIRPOptimizedMix->setTotal($WIRPOMTotal); } //END ASSIGN THE OPTIMIZED MIX DATA //ASSIGN THE SINGLETOUCHPOINT MIX DATA //ASSIGN THE SINGLETOUCHPOINT MIX DATA $singletouchpointmix_data = $wirpoint_data['SingleTouchpointMix']; $WIRPSingleTouchpointMix = new WIRPSingleTouchpointMix(); $WIRPSingleTouchpointMix->setPoint($WIRPoint); $WIRPoint->setSingletouchpointmix($WIRPSingleTouchpointMix); if (isset($singletouchpointmix_data['Details'])) { $wirp_singletouchpointmix_details_data = $singletouchpointmix_data['Details']; foreach ($wirp_singletouchpointmix_details_data as $detail_data) { $WIRPSTMDetail = new WIRPSTMDetail(); $WIRPSTMDetail->setSingletouchpointmix($WIRPSingleTouchpointMix); $WIRPSTMDetail->setTouchpointname($detail_data['TouchpointName']); $WIRPSTMDetail->setBudget($detail_data['Budget']); $WIRPSTMDetail->setFunctionvalue($detail_data['FunctionValue']); $WIRPSingleTouchpointMix->addDetail($WIRPSTMDetail); } $wirp_singletouchpointmix_total_data = $singletouchpointmix_data['Total']; $WIRPSTMTotal = new WIRPSTMTotal(); $WIRPSTMTotal->setSingletouchpointmix($WIRPSingleTouchpointMix); $WIRPSTMTotal->setTouchpointname($wirp_singletouchpointmix_total_data['TouchpointName']); $WIRPSTMTotal->setBudget($wirp_singletouchpointmix_total_data['Budget']); $WIRPSTMTotal->setFunctionvalue($wirp_singletouchpointmix_total_data['FunctionValue']); $WIRPSingleTouchpointMix->setTotal($WIRPSTMTotal); } //END ASSIGN THE SINGLETOUCHPOINT MIX DATA } $em->persist($WhatIfResult); } else { $array_of_missing_nodes[] = "WhatIfResult"; } $em->persist($lightdata); $em->flush(); $response = new Response(); $response->setStatusCode(200); $response->setContent(json_encode(array('success' => true, 'lightdata_id' => $lightdata->getId(), 'start_date' => $the_start_date, 'error_on_parsing' => $error_on_parsing, 'main_missing_nodes' => $array_of_missing_nodes, 'setup_missing_nodes' => $missing_setup_nodes, 'groupings_missing_nodes' => $missing_groupings_node, 'touchpoints_missing_nodes' => $touchpoints_missing_nodes, 'budgetallocation_missing_nodes' => $budgetallocation_missing_nodes, 'timeallocation_missing_nodes' => $timeallocation_missing_nodes))); return $response; }
/** * Remove details * * @param \MissionControl\Bundle\LightdataBundle\Entity\WIRPSTMDetail $details */ public function removeDetail(\MissionControl\Bundle\LightdataBundle\Entity\WIRPSTMDetail $details) { $this->details->removeElement($details); }