//RESULT DASHBOARD Jaykumar patel public function result_get_scorecard_count($module_name, $date_field = "", $dom_field = "", $dom_name = "", $getall, $assigned_user_id, $user_wise_enable, $start_date = "", $end_date = "") { // $GLOBALS['log']->fatal("scorecard>>".$dom_field. " end_date>>".$end_date); global $app_list_strings, $sugar_config, $current_user, $timedate, $beanList, $beanFiles, $mod_strings; $class_name = $beanList[$module_name]; require_once $beanFiles[$class_name]; $seed = new $class_name(); $record_array = array(); $where = array(); $return_date_where = array(); $return_dom_where = array(); $default_where = $this->result_default_where($module_name); if (!empty($default_where)) { $where[] = $default_where; } //for start date /*$start_user_date = new DateTime($start_date." H:i:s"); $start_user_date->setTimezone(new DateTimeZone($current_user->getPreference('timezone'))); $start_actual_user_date = $start_user_date->format('Y-m-d H:i:s');*/ $start_actual_user_date = $this->convert_to_gmt($start_date." 00:00:00"); $end_actual_user_date = $this->convert_to_gmt($end_date." 23:59:59"); //$GLOBALS['log']->fatal($start_date."startdate>>".$start_actual_user_date." end_date>>".$end_actual_user_date); if ($getall == "0" || $module_name == 'SG_Out_Mail' || $module_name == "SG_Out_Mail_Recipient") { if ($assigned_user_id == 'null') { //$where[] = strtolower($module_name) . ".assigned_user_id IS NULL"; $where[] = $seed->table_name . ".assigned_user_id IS NULL"; } else { //$where[] = ($assigned_user_id == "0") ? strtolower($module_name) . ".assigned_user_id = '$current_user->id'" : strtolower($module_name) . ".assigned_user_id = '$assigned_user_id'"; $where[] = ($assigned_user_id == "0") ? $seed->table_name . ".assigned_user_id = '$current_user->id'" : $seed->table_name . ".assigned_user_id = '$assigned_user_id'"; } } if (!empty($start_date) && !empty($end_date)) { //$lmod = strtolower($module_name); // $lmod = $seed->table_name; // $where[] = "(" . $lmod . ".date_entered between '" . $start_actual_user_date . "' AND '" . $end_actual_user_date . "')"; switch ($module_name) { case 'Opportunities': $lmod = $seed->table_name."_cstm"; $query_strings = ($module_name=="Opportunities") ? '.opportunity_close_date_c' : '.date_entered'; $where[] = "(" . $lmod .$query_strings." between '" . $start_actual_user_date . "' AND '" . $end_actual_user_date . "')"; break; case 'Leads': $lmod = $seed->table_name."_cstm"; $query_strings = ($module_name=="Leads") ? '.converted_date_c' : '.date_entered'; $where[] = "(" . $lmod .$query_strings." between '" . $start_actual_user_date . "' AND '" . $end_actual_user_date . "')"; break; case 'Bugs': $lmod = $seed->table_name."_cstm"; $query_strings = ($module_name=="Bugs") ? '.solution_date_c' : '.date_entered'; $where[] = "(" . $lmod .$query_strings." between '" . $start_actual_user_date . "' AND '" . $end_actual_user_date . "')"; break; case 'Cases': $lmod = $seed->table_name."_cstm"; $query_strings = ($module_name=="Cases") ? '.enjay_closed_c' : '.date_entered'; $where[] = "(" . $lmod .$query_strings." between '" . $start_actual_user_date . "' AND '" . $end_actual_user_date . "')"; break; case 'Tasks': $lmod = $seed->table_name."_cstm"; $query_strings = ($module_name=="Tasks") ? '.task_complete_date_c' : '.date_entered'; $where[] = "(" . $lmod .$query_strings." between '" . $start_actual_user_date . "' AND '" . $end_actual_user_date . "')"; break; case 'Calls': $lmod = $seed->table_name; $query_strings = ($module_name=="Calls") ? '.date_start' : '.date_entered'; $where[] = "(" . $lmod .$query_strings." between '" . $start_actual_user_date . "' AND '" . $end_actual_user_date . "')"; break; case 'empty_dates': $date_where[] = "(DATE($temp_date_field) IN('') OR DATE($temp_date_field) IS NULL)"; break; default: $lmod = $seed->table_name; $query_strings = ($module_name=="Calls") ? '.date_start' : '.date_entered'; $where[] = "(" . $lmod .$query_strings." between '" . $start_actual_user_date . "' AND '" . $end_actual_user_date . "')"; break; } } $where[] = "deleted = 0"; // $GLOBALS['log']->fatal("/**********DateWise Field Count Start**********/"); if (!empty($date_field) && $date_field !== "") { //$temp_date_field = ($this->endsWith($date_field, '_c') == 1) ? $date_field : strtolower($module_name) . ".$date_field"; $temp_date_field = ($this->endsWith($date_field, '_c') == 1) ? $date_field : $seed->table_name . ".$date_field"; $user_date = new DateTime($timedate->getNow()); $user_date->setTimezone(new DateTimeZone($current_user->getPreference('timezone'))); $actual_user_date = $user_date->format('Y-m-d'); $date_field_array["over_due"]["label"] = "Over Due"; $date_field_array["over_due"]["color"] = "#ff4c4c"; $date_field_array["today"]["label"] = "Today"; $date_field_array["today"]["color"] = "#4ca64c"; $date_field_array["tomorrow"]["label"] = "Tomorrow"; $date_field_array["tomorrow"]["color"] = "#ffc107"; $date_field_array["upcoming"]["label"] = "Upcoming"; $date_field_array["upcoming"]["color"] = "#607d8d"; $date_field_array["empty_dates"]["label"] = "Empty Dates"; $date_field_array["empty_dates"]["color"] = "#536dfe"; //$date_field_array = array("today" => array("label" => "Today", "color" => "#4ca64c"), "tomorrow" => array("label" => "Tomorrow", "color" => "#ffc107"), "over_due" => array("label" => "Over Due", "color" => "#ff4c4c"), "upcoming" => array("label" => "Upcoming", "color" => "#607d8d"), "empty_dates" => array("label" => "Empty Dates", "color" => "#536dfe")); foreach ($date_field_array as $date_field_key => $date_field_label) { $date_where = array(); switch ($date_field_key) { case 'over_due': $date_where[] = "DATE($temp_date_field) < DATE('$actual_user_date')"; break; case 'today': $date_where[] = "DATE($temp_date_field) = DATE('$actual_user_date')"; break; case 'tomorrow': $date_where[] = "DATE($temp_date_field) = DATE('$actual_user_date') + INTERVAL 1 DAY"; break; case 'upcoming': $date_where[] = "DATE($temp_date_field) > DATE('$actual_user_date') + INTERVAL 1 DAY"; break; case 'empty_dates': $date_where[] = "(DATE($temp_date_field) IN('') OR DATE($temp_date_field) IS NULL)"; break; default: break; } $sql = $this->generate_select($seed, array_merge($where, $date_where)); $sql_final[$date_field_key] = $sql; $return_date_where[$date_field_key] = explode('WHERE ', $sql)[1]; } // $GLOBALS['log']->fatal("DateWise WHERE : " . print_r($sql_final, true)); $output = ' SELECT (' . implode(', (', array_map( function ($v, $k) {return sprintf("%s) AS `%s`", $v, $k);}, $sql_final, array_keys($sql_final) )); $res = $GLOBALS['db']->query($output); $row = $GLOBALS['db']->fetchByAssoc($res); $final_ret_row = array(); foreach ($date_field_array as $date_field_key => $date_field_label) { if ($row[$date_field_key] != 0) { $final_ret_row[] = array("count" => $row[$date_field_key], "key" => $date_field_key, "label" => $date_field_label["label"], "color" => $date_field_label["color"], "query" => $return_date_where[$date_field_key]); } } $record_array['primary_grouping'] = $this->replace_null_to_blank($final_ret_row); // $GLOBALS['log']->fatal("DateWise ROW : " . print_r($row, true)); } // $GLOBALS['log']->fatal("/**********DateWise Field Count End**********/"); $sql_final = array(); // $GLOBALS['log']->fatal("/**********DomWise Field Count Start**********/"); $secondary_grouping_array = array(); $field_array = array(); //MSB $domfield = explode(",", $dom_field); // $GLOBALS['log']->fatal("IF OUT " .print_r($domfield, true)); foreach ($domfield as $key => $value) { $dom_field = $value; $module_bean = BeanFactory::newBean($module_name); $dom_name = $module_bean->field_defs[$dom_field]['options']; $dom_name_value = $module_bean->field_defs[$dom_field]['vname']; // $GLOBALS['log']->fatal("IF OUT " . $dom_name . "<>" . $dom_field . "<> " . print_r($dom_name_value, true)); if (!empty($dom_field) && !empty($dom_name)) { $dom_field_array = $app_list_strings[$dom_name]; $GLOBALS['log']->fatal("DomWise WHERE : " . print_r($dom_field_array, true)); if ($dom_name == 'reminder_time_options') { $dom_field_array['-1'] = '-1'; } if (!empty($dom_field_array)) { $dom_field_array['NULL'] = 'NULL'; } // $GLOBALS['log']->fatal("DOM VALUES"); // $GLOBALS['log']->fatal("--------------------------------"); foreach ($dom_field_array as $dom_key => $dom_value) { //$GLOBALS['log']->fatal("$dom_key : $dom_value"); $dom_stat = ($dom_key == "NULL") ? "$dom_field IS NULL" : "$dom_field = '$dom_key'"; $dom_where = array(); $dom_where[] = ($this->endsWith($dom_field, '_c') == 1) ? $dom_stat : $seed->table_name . ".$dom_stat"; // $GLOBALS['log']->fatal(print_r($where, true) . "<>" . print_r($dom_where, true)); $sql = $this->generate_select($seed, array_merge($where, $dom_where)); $sql_final[$dom_key] = $sql; $return_dom_where[$dom_key] = explode('WHERE ', $sql)[1]; } // $GLOBALS['log']->fatal("--------------------------------" . print_r($sql, true)); // $GLOBALS['log']->fatal("DomWise WHERE : " . print_r($sql_final, true)); $output = ' SELECT (' . implode(', (', array_map( function ($v, $k) {return sprintf("%s) AS `%s`", $v, $k);}, $sql_final, array_keys($sql_final) )); $res12 = $GLOBALS['db']->query($output); $row12 = $GLOBALS['db']->fetchByAssoc($res12); //$GLOBALS['log']->fatal("DomWise ROW : " . print_r($row12, true)); $final_ret_row = array(); foreach ($dom_field_array as $dom_field_key => $dom_field_label) { // $GLOBALS['log']->fatal("MSBdom - " . $dom_field_key); if ($row12[$dom_field_key] != 0) { $final_ret_row[] = array("count" => $row12[$dom_field_key], "key" => $dom_field_key, "label" => $dom_field_label, "query" => $return_dom_where[$dom_field_key]); } } //$field_label[] = array($dom_field => translate($dom_name_value, $module_name)); $field_label = translate($dom_name_value, $module_name); $field_array[] = array("key" => $dom_field, "label" => rtrim($field_label, ":"), "data" => $this->replace_null_to_blank($final_ret_row)); // $record_array['secondary_grouping']['label'] = $field_label; // $record_array['secondary_grouping'][$dom_field] = $this->replace_null_to_blank($final_ret_row); } } // $GLOBALS['log']->fatal("DomWise WHERE : " . print_r($field_array, true)); $record_array['secondary_grouping'] = $field_array; //MSB // $GLOBALS['log']->fatal("/**********DomWise Field Count End**********/"); if ($getall != "0" && $user_wise_enable == "1") { // $GLOBALS['log']->fatal("/**********Assigned UserWise Count Start**********/"); $record_array['user_grouping'] = $this->lat_get_scorecard_assigned_user_count($seed, $where); // $GLOBALS['log']->fatal("/**********Assigned UserWise Count End**********/"); } // $GLOBALS['log']->fatal("DomWise WHERE : " . print_r($record_array, true)); // $GLOBALS['log']->fatal("gel all WHERE : " . print_r($getall, true)); // $GLOBALS['log']->fatal("----------------------------------------------------------------------------"); // $GLOBALS['log']->fatal(print_r($record_array), true); return $record_array; } public function result_get_dashboard_count($module_name, $field_name = "", $getall, $start_date = "", $end_date = "") { // $GLOBALS['log']->fatal("dashboard>>".$start_date. " end_date>>".$field_name); // $GLOBALS['log']->fatal("----------------------------------------------------------------------------"); // $error = new SoapError(); //creating default error object global $app_list_strings, $sugar_config, $current_user, $timedate, $beanList, $beanFiles; $start_actual_user_date = $this->convert_to_gmt($start_date." 00:00:00"); $end_actual_user_date = $this->convert_to_gmt($end_date." 23:59:59"); $class_name = $beanList[$module_name]; require_once $beanFiles[$class_name]; $seed = new $class_name(); $where = array(); $default_where = $this->result_default_where($module_name); if (!empty($default_where)) { $where[] = $default_where; } // $GLOBALS['log']->fatal("return : " . print_r($where, true)); if ($getall == "0" || $module_name == 'SG_Out_Mail' || $module_name == "SG_Out_Mail_Recipient") { //$where[] = strtolower($module_name) . ".assigned_user_id = '$current_user->id'"; $where[] = $seed->table_name . ".assigned_user_id = '$current_user->id'"; } if (!empty($start_actual_user_date) && !empty($end_actual_user_date)) { //$lmod = strtolower($module_name); // $GLOBALS['log']->fatal("return : " . print_r($module_name, true)); switch ($module_name) { case 'Opportunities': $lmod = $seed->table_name."_cstm"; $query_strings = ($module_name=="Opportunities") ? '.opportunity_close_date_c' : '.date_entered'; $where[] = "(" . $lmod .$query_strings." between '" . $start_actual_user_date . "' AND '" . $end_actual_user_date . "')"; $won[] = strtolower($module_name) . ".sales_stage = 'Closed Won'"; $won[] = strtolower($module_name) . ".deleted = '0'"; $where_won = array_merge($won, $where); $return['positive_count'] = $this->lat_query_db($module_name, $seed, $where_won); $positive_value = $this->get_label_from_field("sales_stage",$module_name,"Closed Won"); $return['positive_key'] = $positive_value['key']; $return['positive_label'] = $positive_value['label']; $lost[] = strtolower($module_name) . ".sales_stage = 'Closed Lost'"; $lost[] = strtolower($module_name) . ".deleted = '0'"; $where_lost = array_merge($lost, $where); $return['negative_count'] = $this->lat_query_db($module_name, $seed, $where_lost); $nagitive_value = $this->get_label_from_field("sales_stage",$module_name,"Closed Lost"); $return['negative_key'] = $nagitive_value['key']; $return['negative_label'] = $nagitive_value['label']; break; case 'Leads': $lmod = $seed->table_name."_cstm"; $query_strings = ($module_name=="Leads") ? '.converted_date_c' : '.date_entered'; $where[] = "(" . $lmod .$query_strings." between '" . $start_actual_user_date . "' AND '" . $end_actual_user_date . "')"; $won[] = strtolower($module_name) . ".status = 'Converted'"; $won[] = strtolower($module_name) . ".deleted = '0'"; $where_won = array_merge($won, $where); $return['positive_count'] = $this->lat_query_db($module_name, $seed, $where_won); $positive_value = $this->get_label_from_field("status",$module_name,"Converted"); $return['positive_key'] = $positive_value['key']; $return['positive_label'] = $positive_value['label']; $lost[] = strtolower($module_name) . ".status = 'Dead'"; $lost[] = strtolower($module_name) . ".deleted = '0'"; $where_lost = array_merge($lost, $where); $return['negative_count'] = $this->lat_query_db($module_name, $seed, $where_lost); $nagitive_value = $this->get_label_from_field("status",$module_name,"Dead"); $return['negative_key'] = $nagitive_value['key']; $return['negative_label'] = $nagitive_value['label']; // $return['negative_lable'] = "Dead"; break; case 'Cases': $lmod = $seed->table_name."_cstm"; $query_strings = ($module_name=="Cases") ? '.enjay_closed_c' : '.date_entered'; $where[] = "(" . $lmod .$query_strings." between '" . $start_actual_user_date . "' AND '" . $end_actual_user_date . "')"; $positive_value = $this->get_label_from_field("status",$module_name,"Closed"); // $won[] = strtolower($module_name) . ".status = 'Closed'"; // $where_won = array_merge($won, $where); // $return['positive_count'] = $this->lat_query_db($module_name, $seed, $where_won); // $positive_value = $this->get_label_from_field("status",$module_name,"Closed"); // $return['positive_key'] = $positive_value['key']; // $return['positive_label'] = $positive_value['label']; // $lost[] = strtolower($module_name) . ".status != 'Closed'"; // $where_lost = array_merge($lost, $where); // $return['negative_count'] = $this->lat_query_db($module_name, $seed, $where_lost); // $nagitive_value = $this->get_label_from_field("status",$module_name,"Cases_Open"); // $return['negative_key'] = $nagitive_value['key']; // $return['negative_label'] = $nagitive_value['label']; break; case 'Bugs': $lmod = $seed->table_name."_cstm"; $query_strings = ($module_name=="Bugs") ? '.solution_date_c' : '.date_entered'; $where[] = "(" . $lmod .$query_strings." between '" . $start_actual_user_date . "' AND '" . $end_actual_user_date . "')"; $positive_value = $this->get_label_from_field("status",$module_name,"Closed"); break; case 'Tasks': $lmod = $seed->table_name."_cstm"; $query_strings = ($module_name=="Tasks") ? '.task_complete_date_c' : '.date_entered'; $where[] = "(" . $lmod .$query_strings." between '" . $start_actual_user_date . "' AND '" . $end_actual_user_date . "')"; $positive_value = $this->get_label_from_field("status",$module_name,"Completed"); break; case 'empty_dates': $date_where[] = "(DATE($temp_date_field) IN('') OR DATE($temp_date_field) IS NULL)"; break; default: $lmod = $seed->table_name; $query_strings = ($module_name=="Calls") ? '.date_start' : '.date_entered'; $where[] = "(" . $lmod .$query_strings." between '" . $start_actual_user_date . "' AND '" . $end_actual_user_date . "')"; break; } // $lmod = $seed->table_name; // $query_strings = ($module_name=="Calls") ? '.date_start' : '.date_entered'; // $where[] = "(" . $lmod .$query_strings." between '" . $start_actual_user_date . "' AND '" . $end_actual_user_date . "')"; } $where[] = "deleted = 0"; //die(print_r($where, true)); /*Calls are not shown in today's activity instead the default count for calls shows for today's only*/ // $GLOBALS['log']->fatal("/**********Individual Module Count Start**********/"); $return['default_count'] = $this->lat_query_db($module_name, $seed, $where); // $GLOBALS['log']->fatal("return : " . print_r($return['default_count'], true)); $return['default_count_query'] = (!empty($where)) ? implode(' AND ', $where) : ""; // $GLOBALS['log']->fatal("/**********Individual Module Count End**********/"); // $GLOBALS['log']->fatal("return : " . print_r($return['default_count_query'], true)); /*todays_activity*/ if ($field_name !== "") { // $GLOBALS['log']->fatal("/**********Todays Activity Count Start**********/"); $user_date = new DateTime($timedate->getNow()); $user_date->setTimezone(new DateTimeZone($current_user->getPreference('timezone'))); $actual_user_date = $user_date->format('Y-m-d'); // if ($module_name != "Calls") { //$where[] = ($this->endsWith($field_name, '_c') == 1) ? "DATE($field_name) = DATE('$actual_user_date')" : "DATE(" . strtolower($module_name) . ".$field_name) = DATE('$actual_user_date')"; $where[] = ($this->endsWith($field_name, '_c') == 1) ? "DATE($field_name) = DATE('$actual_user_date')" : "DATE(" . $seed->tab . ".$field_name) = DATE('$actual_user_date')"; //} //MMM // if ($module_name == "Calls") { // $return['default_count'] = $this->lat_query_db($module_name, $seed, $where); // $return['todays_activity'] = "0"; // } else { $return['todays_activity'] = $this->lat_query_db($module_name, $seed, $where); // } // if ($module_name == "Calls") { // $where[] = "(enjay_log_type_c = 'call' OR enjay_log_type_c = 'sms')"; // $return['default_count_query'] = (!empty($where)) ? implode(' AND ', $where) : ""; // $return['todays_activity_query'] = ""; // } else { $return['todays_activity_query'] = (!empty($where)) ? implode(' AND ', $where) : ""; // } // $GLOBALS['log']->fatal("/**********Todays Activity Count End**********/"); } else { $return['todays_activity'] = "0"; $return['todays_activity_query'] = ""; } /*todays_activity*/ //$return['module_label'] = ($module_name == "Calls") ? "Today's " . $app_list_strings['moduleList'][$module_name] : $app_list_strings['moduleList'][$module_name]; $return['module_key'] = $module_name; if($module_name == "Cases") { $status_value = $positive_value['label']; $return['module_label'] = $status_value." ".$app_list_strings['moduleList'][$module_name]; } else if($module_name == "Bugs") { $status_value = $positive_value['label']; $return['module_label'] = $status_value." ".$app_list_strings['moduleList'][$module_name]; } else if($module_name == "Tasks") { $status_value = $positive_value['label']; $return['module_label'] = $status_value." ".$app_list_strings['moduleList'][$module_name]; } else { $return['module_label'] = $app_list_strings['moduleList'][$module_name]; } // $GLOBALS['log']->fatal("return : " . print_r($return, true)); // $GLOBALS['log']->fatal("----------------------------------------------------------------------------"); //return return $this->replace_null_to_blank($return); } public function result_default_where($module_name) { switch ($module_name) { case 'Bugs': // $where = strtolower($module_name) . ".status NOT IN ('Closed', 'Rejected')"; $where = strtolower($module_name) . ".status = 'Closed'"; break; case 'Calls': $where = strtolower($module_name) . ".status IN ('Held', 'Not Held')"; break; case 'Opportunities': $where = "(".strtolower($module_name) . ".sales_stage = 'Closed Won' || ".strtolower($module_name) . ".sales_stage = 'Closed Lost')"; break; case 'Leads': // $where = strtolower($module_name) . ".status NOT IN ('Dead', 'Converted', 'Recycled')"; $where = "(".strtolower($module_name) . ".status = 'Converted' || ".strtolower($module_name) . ".status = 'Dead')"; break; case 'Cases': $where = strtolower($module_name) . ".status = 'Closed'"; break; // case 'Opportunities': // $where = strtolower($module_name) . ".sales_stage NOT IN ('Closed Lost', 'Closed Won')"; // break; case 'Tasks': $where = strtolower($module_name) . ".status= 'Completed'"; break; // case 'Project': // $where = strtolower($module_name) . ".status NOT IN ('Completed')"; // break; default: break; } return $where; } public function get_label_from_field($dom_field,$module_name,$field_value) { global $app_list_strings; $return = array(); if($field_name == 'Cases_Open') { $return['key'] = $field_name; $return['label'] = "Open"; } else { $module_bean = BeanFactory::newBean($module_name); $dom_name = $module_bean->field_defs[$dom_field]['options']; $dom_name_value = $module_bean->field_defs[$dom_field]['vname']; // $GLOBALS['log']->fatal("IF OUT " . $dom_name . "<>" . $dom_field . "<> " . print_r($dom_name_value, true)); if (!empty($dom_field) && !empty($dom_name)) { $dom_field_array = $app_list_strings[$dom_name]; foreach($dom_field_array as $key => $value) { if($key == $field_value) { $return['key'] = $key; $return['label'] = $value; } } } } return $this->replace_null_to_blank($return); } //RESULT DASHBOARD END jaykumar patel