From 98f889cf17ac794a6d77a8585193b0686decb9e9 Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Tue, 9 Oct 2018 16:15:02 +0200 Subject: [PATCH] FEAT #8544 Contacts filling color run --- apps/maarch_entreprise/actions/process.php | 15 +++++++-- .../actions/validate_mail.php | 9 ++++++ .../autocomplete_contacts.php | 7 +++++ .../indexing_searching/details.php | 14 ++++++++- apps/maarch_entreprise/js/indexing.js | 5 +-- .../contact/controllers/ContactController.php | 31 +++++++++++++++++++ 6 files changed, 75 insertions(+), 6 deletions(-) diff --git a/apps/maarch_entreprise/actions/process.php b/apps/maarch_entreprise/actions/process.php index 14a1d000514..d31c94b9156 100755 --- a/apps/maarch_entreprise/actions/process.php +++ b/apps/maarch_entreprise/actions/process.php @@ -305,10 +305,19 @@ function get_form_txt($values, $path_manage_action, $id_action, $table, $module, $frm_str .= 'onClick = "previsualiseAdminRead(event, '.$frameContacts.');"'; $frm_str .= '/>'; } else { + $rate = []; + if ($key == 'exp_contact_id') { + if (!empty($data[$key]['address_value'])) { + $contactData = \Contact\models\ContactModel::getOnView(['select' => ['*'], 'where' => ['ca_id = ?'], 'data' => [$data[$key]['address_value']]]); + $rate = \Contact\controllers\ContactController::getFillingRate(['contact' => (array)$contactData[0]]); + } + } $frm_str .= '<textarea name="'.$key.'" id="'.$key.'" rows="3" readonly="readonly" class="readonly" ' - .'title="'.$data[$key]['show_value'].'" style="width: 150px; max-width: 150px; border: none; color: #666666;">' - .$data[$key]['show_value'] - .'</textarea>'; + .'title="'.$data[$key]['show_value'].'" style="width: 150px; max-width: 150px; border: none; color: #666666;'; + if (!empty($rate['color'])) { + $frm_str .= 'background-color:'.$rate['color']; + } + $frm_str .= '">' . $data[$key]['show_value'] .'</textarea>'; } } elseif ($data[$key]['field_type'] == 'radio') { for ($k = 0; $k < count($data[$key]['radio']); ++$k) { diff --git a/apps/maarch_entreprise/actions/validate_mail.php b/apps/maarch_entreprise/actions/validate_mail.php index b7fdc00e342..4839e4c3514 100755 --- a/apps/maarch_entreprise/actions/validate_mail.php +++ b/apps/maarch_entreprise/actions/validate_mail.php @@ -702,10 +702,19 @@ function get_form_txt($values, $path_manage_action, $id_action, $table, $module, $frm_str .= ' <i class="fa fa-users" title="'._MULTI_CONTACT.'" style="cursor:pointer;" id="type_multi_contact_external_icon" onclick="$j(\'#type_multi_contact_external\')[0].click();$j(\'#type_contact_internal_icon\').css(\'color\',\'#666\');$j(\'#type_contact_external_icon\').css(\'color\',\'#666\');$j(\'#type_multi_contact_external_icon\').css(\'color\',\'#135F7F\');"></i>'; + if (!empty($data['addressId'])) { + $contactData = \Contact\models\ContactModel::getOnView(['select' => ['*'], 'where' => ['ca_id = ?'], 'data' => [$data['addressId']]]); + $rate = \Contact\controllers\ContactController::getFillingRate(['contact' => (array)$contactData[0]]); + } + $frm_str .= '<span style="position:relative;"><input type="text" onkeyup="erase_contact_external_id(\'contact\', \'contactid\');erase_contact_external_id(\'contact\', \'addressid\');" name="contact" id="contact" onchange="clear_error(\'frm_error_'.$id_action.'\');display_contact_card(\'visible\');" onblur="display_contact_card(\'visible\');if(document.getElementById(\'type_contact_external\').checked == true){check_date_exp(\''.$path_to_script.'\',\''.$path_check_date_link.'\');}"'; if (isset($data['contact']) && !empty($data['contact'])) { $frm_str .= ' value="'.$data['contact'].'" '; } + if (!empty($rate['color'])) { + $frm_str .= ' style="background-color:'.$rate['color'].'" '; + } + $frm_str .= ' /><div id="show_contacts" class="autocomplete autocompleteIndex" style="width:100%;left:0px;top:17px;"></div><div class="autocomplete autocompleteIndex" id="searching_autocomplete" style="display: none;text-align:left;padding:5px;left:0px;width:100%;top:17px;"><i class="fa fa-spinner fa-spin" aria-hidden="true"></i> chargement ...</div></span></td>'; $frm_str .= '<td><span class="red_asterisk" id="contact_mandatory" style="display:inline;vertical-align:text-top"><i class="fa fa-star"></i></span></td>'; $frm_str .= '</tr>'; diff --git a/apps/maarch_entreprise/indexing_searching/autocomplete_contacts.php b/apps/maarch_entreprise/indexing_searching/autocomplete_contacts.php index 3ffb85b0f13..c88e6d5e443 100755 --- a/apps/maarch_entreprise/indexing_searching/autocomplete_contacts.php +++ b/apps/maarch_entreprise/indexing_searching/autocomplete_contacts.php @@ -193,6 +193,13 @@ if ($_SESSION['is_multi_contact'] == 'OK') { $address ); } + $color = 'LightYellow'; + + $rate = \Contact\controllers\ContactController::getFillingRate(['contact' => (array)$res]); + if (!empty($rate)) { + $color = $rate['color']; + } + $arrContact[] = "<li id='".$res->contact_id.','.$res->ca_id."' style='font-size:12px;background-color:$color;'>".$contact_icon.' ' .'<span style="display:table-cell;vertical-align:middle;">'.$contact_info.'</span>' .'<div style="font-size:9px;font-style:italic;"> - '.$address.'</div>' diff --git a/apps/maarch_entreprise/indexing_searching/details.php b/apps/maarch_entreprise/indexing_searching/details.php index ce220470e57..4bd0c94db2a 100755 --- a/apps/maarch_entreprise/indexing_searching/details.php +++ b/apps/maarch_entreprise/indexing_searching/details.php @@ -697,7 +697,19 @@ if ($stmt->rowCount() == 0) { if (in_array($key, ['exp_contact_id', 'dest_contact_id', 'exp_user_id', 'dest_user_id'])) { unset($_SESSION['adresses']); - echo "<textarea name='contact' id='contact' rows='3' class='{$disabledClass}' {$disabledAttr}/>{$inputValue}</textarea>"; + $rate = []; + if ($key == 'exp_contact_id') { + if (!empty($data[$key]['address_value'])) { + $contactData = \Contact\models\ContactModel::getOnView(['select' => ['*'], 'where' => ['ca_id = ?'], 'data' => [$data[$key]['address_value']]]); + $rate = \Contact\controllers\ContactController::getFillingRate(['contact' => (array)$contactData[0]]); + } + } + + echo "<textarea name='contact' id='contact' rows='3' class='{$disabledClass}' {$disabledAttr}"; + if (!empty($rate['color'])) { + echo ' style="background-color:'.$rate['color'].'" '; + } + echo "/>{$inputValue}</textarea>"; $inputValue = $data[$key]['value']; $inputAddressValue = $data[$key]['address_value']; diff --git a/apps/maarch_entreprise/js/indexing.js b/apps/maarch_entreprise/js/indexing.js index d43e9bca2fb..3a62e11bd0d 100755 --- a/apps/maarch_entreprise/js/indexing.js +++ b/apps/maarch_entreprise/js/indexing.js @@ -1081,7 +1081,8 @@ function launch_autocompleter_contacts_v2(path_script, id_text, id_div, cat_id, parent.$(address_id).value = res[1]; if (path_script2 && res[1]) { getDepartment(path_script2, res[1]); - }; + } + $j("#" + input).css('background-color', li.getStyle('background-color')); } }); } else { @@ -1765,7 +1766,7 @@ function check_date_exp(path_manage_script, path_link){ }, onSuccess: function(answer){ if(answer.responseText == "success"){ - document.getElementById('contact').style.backgroundColor='#ffffff'; + // document.getElementById('contact').style.backgroundColor='#ffffff'; document.getElementById('contact_check').style.display='none'; document.getElementById('contactcheck').value = answer.responseText; } else { diff --git a/src/app/contact/controllers/ContactController.php b/src/app/contact/controllers/ContactController.php index cb3cbbdd8dd..8140738e39e 100644 --- a/src/app/contact/controllers/ContactController.php +++ b/src/app/contact/controllers/ContactController.php @@ -22,6 +22,7 @@ use Respect\Validation\Validator; use Slim\Http\Request; use Slim\Http\Response; use SrcCore\models\TextFormatModel; +use SrcCore\models\ValidatorModel; class ContactController { @@ -217,6 +218,36 @@ class ContactController return $response->withJson(['success' => 'success']); } + public static function getFillingRate(array $aArgs) + { + ValidatorModel::notEmpty($aArgs, ['contact']); + ValidatorModel::arrayType($aArgs, ['contact']); + + $contactsFilling = ContactFillingModel::get(); + $contactsFilling['rating_columns'] = json_decode($contactsFilling['rating_columns']); + + if ($contactsFilling['enable'] && !empty($contactsFilling['rating_columns'])) { + $percent = 0; + foreach ($contactsFilling['rating_columns'] as $ratingColumn) { + if (!empty($aArgs['contact'][$ratingColumn])) { + $percent++; + } + } + $percent = $percent * 100 / count($contactsFilling['rating_columns']); + if ($percent <= $contactsFilling['first_threshold']) { + $color = '#f87474'; + } elseif ($percent <= $contactsFilling['second_threshold']) { + $color = '#f6cd81'; + } else { + $color = '#ccffcc'; + } + + return ['rate' => $percent, 'color' => $color]; + } + + return []; + } + public static function formatContactAddressAfnor(array $aArgs) { $formattedAddress = ''; -- GitLab