src/ApplicationBundle/Resources/views/pages/dashboard/index_central_landing.html.twig line 1

Open in your IDE?
  1. {% include '@Application/inc/central_header.html.twig' %}
  2. <meta name="robots" content="noindex, nofollow">
  3. {% set isConsultant= session[UserConstants.IS_CONSULTANT] is defined? session[UserConstants.IS_CONSULTANT]:0 %}
  4. {% set BUDDYBEE_ADMIN_LEVEL= session[UserConstants.BUDDYBEE_ADMIN_LEVEL] is defined? session[UserConstants.BUDDYBEE_ADMIN_LEVEL]:0 %}
  5. <link rel="stylesheet"
  6.       href="{{ absolute_url(path('dashboard')) }}buddybee_assets/css/imgProgress.css?version={{ constant('ApplicationBundle\\Constants\\GeneralConstant::ENTITY_APP_VERSION') }}">
  7. <style>
  8.     /*.swiper-slide {*/
  9.     /*    pointer-events: auto;*/
  10.     /*}*/
  11.     /*.swiper-slide-prev,*/
  12.     /*.swiper-slide-next {*/
  13.     /*    pointer-events: auto; !* optional if you want them clickable *!*/
  14.     /*}*/
  15.     /*.swiper-slide-active {*/
  16.     /*    z-index: 2; !* keep top slide visible *!*/
  17.     /*}*/
  18.     /*.swiper-wrapper {*/
  19.     /*    overflow: visible; !* important: allows slide shadows/clicks outside container *!*/
  20.     /*}*/
  21.     .select-center {
  22.         text-align-last: center;
  23.         text-align: center;
  24.     }
  25.     .send-button:hover,
  26.     .send-button:focus,
  27.     .send-button:active {
  28.         background-color: #2673B8;
  29.         color: white;
  30.         outline: none;
  31.         box-shadow: none;
  32.     }
  33.     .modal div[class*="col-md"], .modal div[class*="col-lg"], .modal div[class*="col-xs"], .modal div[class*="col-sm"] {
  34.         margin-bottom: 0px;
  35.     }
  36.     .d-flex {
  37.         display: flex;
  38.     }
  39.     #selectEntityModal {
  40.         box-shadow: 0px 6px 18px rgb(0 0 0 / 9%);
  41.         */ border-radius: 12px;
  42.     }
  43.     #selectEntityModal .modal-body {
  44.         padding: 0 1rem;
  45.     }
  46.     #selectEntityModal p {
  47.         margin-bottom: .5rem;
  48.     }
  49.     /* Style for selected option in selectize */
  50.     .selectize-input {
  51.         padding: 10px;
  52.         font-size: 1rem;
  53.         color: #333;
  54.         border: none;
  55.     }
  56.     #selectEntityModal .selectize-input.items {
  57.         border: 1px solid #d0d0d0;
  58.         padding: 8px 8px;
  59.         display: inline-block;
  60.         width: 100%;
  61.         overflow: hidden;
  62.         position: relative;
  63.         z-index: 1;
  64.         box-sizing: border-box;
  65.         box-shadow: inset 0 1px 1px rgba(0, 0, 0, .1);
  66.         border-radius: 3px;
  67.     }
  68.     #selectEntityModalForm {
  69.         /*max-width: 500px;*/
  70.         background-color: #ffffff;
  71.         /*margin: 40px auto;*/
  72.         padding: 40px;
  73.         box-shadow: 0px 6px 18px rgb(0 0 0 / 9%);
  74.         /*border-radius: 12px;*/
  75.     }
  76.     #selectEntityModalForm .form-header {
  77.         gap: 5px;
  78.         text-align: center;
  79.         font-size: .9em;
  80.     }
  81.     #selectEntityModalForm .form-header .stepIndicator {
  82.         position: relative;
  83.         flex: 1;
  84.         padding-bottom: 30px;
  85.     }
  86.     #selectEntityModalForm .form-header .stepIndicator.active {
  87.         font-weight: 600;
  88.     }
  89.     #selectEntityModalForm .form-header .stepIndicator.finish {
  90.         font-weight: 600;
  91.         color: #009688;
  92.     }
  93.     #selectEntityModalForm .form-header .stepIndicator::before {
  94.         content: "";
  95.         position: absolute;
  96.         left: 50%;
  97.         bottom: 0;
  98.         transform: translateX(-50%);
  99.         z-index: 9;
  100.         width: 20px;
  101.         height: 20px;
  102.         background-color: #d5efed;
  103.         border-radius: 50%;
  104.         border: 3px solid #ecf5f4;
  105.     }
  106.     #selectEntityModalForm .form-header .stepIndicator.active::before {
  107.         background-color: #a7ede8;
  108.         border: 3px solid #d5f9f6;
  109.     }
  110.     #selectEntityModalForm .form-header .stepIndicator.finish::before {
  111.         background-color: #009688;
  112.         border: 3px solid #b7e1dd;
  113.     }
  114.     #selectEntityModalForm .form-header .stepIndicator::after {
  115.         content: "";
  116.         position: absolute;
  117.         left: 50%;
  118.         bottom: 8px;
  119.         width: 100%;
  120.         height: 3px;
  121.         background-color: #f3f3f3;
  122.     }
  123.     #selectEntityModalForm .form-header .stepIndicator.active::after {
  124.         background-color: #a7ede8;
  125.     }
  126.     #selectEntityModalForm .form-header .stepIndicator.finish::after {
  127.         background-color: #009688;
  128.     }
  129.     #selectEntityModalForm .form-header .stepIndicator:last-child:after {
  130.         display: none;
  131.     }
  132.     #selectEntityModalForm input {
  133.         padding: 15px 20px;
  134.         width: 100%;
  135.         font-size: 1em;
  136.         border: 1px solid #e3e3e3;
  137.         border-radius: 5px;
  138.     }
  139.     #selectEntityModalForm input:focus {
  140.         border: 1px solid #009688;
  141.         outline: 0;
  142.     }
  143.     #selectEntityModalForm input.invalid {
  144.         border: 1px solid #ffaba5;
  145.     }
  146.     #selectEntityModalForm .step {
  147.         display: none;
  148.     }
  149.     #selectEntityModalForm .form-footer {
  150.         overflow: auto;
  151.         gap: 20px;
  152.     }
  153.     #selectEntityModalForm .form-footer button {
  154.         background-color: #1d5b9e;
  155.         border: 1px solid #1d5b9e;
  156.         color: #ffffff;
  157.         border: none;
  158.         padding: 13px 30px;
  159.         font-size: 1em;
  160.         cursor: pointer;
  161.         border-radius: 5px;
  162.         flex: 1;
  163.         margin-top: 5px;
  164.     }
  165.     #selectEntityModalForm .form-footer button:hover {
  166.         opacity: 0.8;
  167.     }
  168.     #selectEntityModalForm .form-footer #promptInfo_prevBtn {
  169.         background-color: #fff;
  170.         color: #009688;
  171.     }
  172.     .box-selector {
  173.         padding: 10px 4px;
  174.         cursor: pointer;
  175.     }
  176.     .box-selector .inside {
  177.         padding: 5px;
  178.         background: white;
  179.         border-radius: 5px;
  180.         -webkit-box-shadow: 10px 10px 48px -24px rgba(14, 26, 87, 1);
  181.         -moz-box-shadow: 10px 10px 48px -24px rgba(14, 26, 87, 1);
  182.         box-shadow: 10px 10px 48px -24px rgba(14, 26, 87, 1);
  183.     }
  184.     .box-selector .inside input {
  185.         cursor: pointer
  186.     }
  187.     .box-selector .inside textarea {
  188.         text-align: center;
  189.         cursor: pointer;
  190.         width: 100%;
  191.         border: none;
  192.         resize: none;
  193.         font-size: 14px;
  194.         color: #1d5b9e;
  195.         font-weight: bold;
  196.     }
  197.     .box-selector.sch_selector_mon .inside,
  198.     .box-selector.sch_selector_day .inside
  199.         /*.box-selector.sch_selector_time .inside*/
  200.     {
  201.         padding: 10px 5px;
  202.     }
  203.     .box-selector.sch_selector_time .inside {
  204.         padding: 4px 5px;
  205.     }
  206.     .step .view_if_has_schedules {
  207.         display: none;
  208.     }
  209.     .box-selector.active:not(.man_sch_selector) .inside {
  210.         border: 2px solid #1d5b9e;
  211.         -webkit-box-shadow: 10px 10px 24px -3px rgba(29, 91, 158, 1);
  212.         -moz-box-shadow: 10px 10px 24px -3px rgba(29, 91, 158, 1);
  213.         box-shadow: 10px 10px 24px -3px rgba(29, 91, 158, 1);
  214.     }
  215.     .box-selector.active.man_sch_selector .inside {
  216.         border: 2px solid #1d5b9e;
  217.         -webkit-box-shadow: none;
  218.         -moz-box-shadow: none;
  219.         box-shadow: none;
  220.     }
  221.     .box-selector.sch_selector_mon.active .inside,
  222.     .box-selector.sch_selector_day.active .inside,
  223.     .box-selector.sch_selector_time.active .inside {
  224.         border: 2px solid #1d5b9e;
  225.         -webkit-box-shadow: 4px 7px 24px -3px rgba(29, 91, 158, 1);
  226.         -moz-box-shadow: 10px 10px 24px -3px rgba(29, 91, 158, 1);
  227.         box-shadow: 4px 7px 24px -3px rgba(29, 91, 158, 1);
  228.     }
  229.     .box-selector .img {
  230.         margin-left: 5px;
  231.     }
  232.     .box-selector .title {
  233.         text-align: center;
  234.         font-size: 13px;
  235.         margin-top: auto;
  236.         margin-bottom: auto;
  237.     }
  238.     .box-selector.paymentMethodSelectorBtn .title {
  239.         text-align: center;
  240.         margin-bottom: 1px;
  241.         font-size: 14px;
  242.     }
  243.     .box-selector .sub-title {
  244.         font-size: 12px;
  245.         color: grey;
  246.     }
  247.     .qr-card {
  248.         position: absolute;
  249.         top: 50%;
  250.         left: 50%;
  251.         transform: translate(-50%, -50%);
  252.         width: min(350px, calc(100vw - 32px));
  253.         margin-top: 10px;
  254.         border-radius: 12px;
  255.         z-index: 1000;
  256.         padding: 10px;
  257.     }
  258.     .qr-card .card {
  259.         border: none;
  260.         background: transparent;
  261.         text-align: center;
  262.     }
  263.     .qr-card img {
  264.         width: 100%;
  265.         margin: 10px auto;
  266.         display: block;
  267.     }
  268.     .hidden {
  269.         display: none;
  270.     }
  271.     /* Flexbox for card container to display them side by side */
  272.     .employee-card-container {
  273.         display: flex;
  274.         justify-content: left; /* Center the cards horizontally */
  275.         gap: 20px; /* Add space between the cards */
  276.         flex-wrap: wrap;
  277.         margin-top: 20px;
  278.     }
  279.     .employee-card {
  280.         padding: 20px;
  281.         box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
  282.         border-radius: 10px;
  283.         max-width: 320px;
  284.         width: 100%;
  285.         text-align: center;
  286.         display: inline-block;
  287.     }
  288.     .form-group {
  289.         margin-bottom: 10px;
  290.     }
  291.     /* Style for the entire form */
  292.     .form-group {
  293.         margin-bottom: 1.5rem;
  294.     }
  295.     /* Style for the labels */
  296.     .form-group label {
  297.         font-size: .8rem;
  298.         font-weight: 300;
  299.         color: #333;
  300.         margin-bottom: 0.1rem;
  301.         display: block;
  302.     }
  303.     /* Style for the input fields */
  304.     .form-control {
  305.         width: 100%;
  306.         max-width: 100%;
  307.         padding: 0px;
  308.         font-size: 1rem;
  309.         border-radius: 5px;
  310.         box-sizing: border-box;
  311.     }
  312.     /* Hover effect for input fields */
  313.     .form-control:hover {
  314.         border-color: #0056b3;
  315.     }
  316.     /* Focus effect for input fields */
  317.     .form-control:focus {
  318.         border-color: #0056b3;
  319.         outline: none;
  320.     }
  321.     /* Dropdown list customization */
  322.     .selectize-dropdown {
  323.         border-radius: 5px;
  324.         box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.1);
  325.         font-size: 1rem;
  326.         max-height: 200px;
  327.     }
  328.     /* Style for selectize items */
  329.     .selectize-dropdown .option {
  330.         padding: 10px;
  331.         font-size: 1rem;
  332.         color: #333;
  333.     }
  334.     /* Hover effect for selectize items */
  335.     .selectize-dropdown .option:hover {
  336.         background-color: #0056b3;
  337.         color: white;
  338.     }
  339.     /* Style for the "Add Employee" and "Close" buttons */
  340.     .btn-primary, .btn-secondary {
  341.         padding: 10px 20px;
  342.         font-size: 1rem;
  343.         border: none;
  344.         border-radius: 5px;
  345.         cursor: pointer;
  346.     }
  347.     /* Style for the primary button */
  348.     .btn-primary {
  349.         color: white;
  350.     }
  351.     /* Hover effect for primary button */
  352.     .btn-primary:hover {
  353.         background-color: #0056b3;
  354.     }
  355.     /* Style for the secondary button */
  356.     .btn-secondary {
  357.         background-color: #6c757d;
  358.         color: white;
  359.     }
  360.     /* Hover effect for secondary button */
  361.     .btn-secondary:hover {
  362.         background-color: #5a6268;
  363.     }
  364.     #selectEntityModal .routineTable {
  365.         text-align: left;
  366.         vertical-align: middle;
  367.     }
  368.     #selectEntityModal .routineTable .icon-delete {
  369.         color: darkred;
  370.         font-weight: bold;
  371.     }
  372.     #selectEntityModal .routineTable .icon-delete .fa {
  373.         padding: 10px;
  374.         border-radius: 39px;
  375.         border: 1px solid #eddcdc;
  376.         width: 34px;
  377.         height: 34px;
  378.         text-align: center;
  379.     }
  380.     #selectEntityModal .routineTable .icon-check {
  381.         color: green;
  382.         font-weight: bold;
  383.     }
  384.     #selectEntityModal .routineTable .icon-check .fa {
  385.         opacity: 0.1;
  386.     }
  387.     #selectEntityModal .routineTable .icon-check.isChecked .fa {
  388.         opacity: 1;
  389.     }
  390.     #selectEntityModal .routineTable .icon-check .fa {
  391.         padding: 10px;
  392.         border-radius: 39px;
  393.         border: 1px solid #eddcdc;
  394.         width: 34px;
  395.         height: 34px;
  396.         text-align: center;
  397.     }
  398.     #selectEntityModal .routineTable {
  399.         text-align: left;
  400.         vertical-align: middle;
  401.     }
  402.     #selectEntityModal .routineTable .icon-delete {
  403.         color: darkred;
  404.         font-weight: bold;
  405.     }
  406.     #selectEntityModal .routineTable .icon-delete .fa {
  407.         padding: 10px;
  408.         border-radius: 39px;
  409.         border: 1px solid #eddcdc;
  410.         width: 34px;
  411.         height: 34px;
  412.         text-align: center;
  413.     }
  414.     #selectEntityModal .routineTable .icon-check {
  415.         color: green;
  416.         font-weight: bold;
  417.     }
  418.     #selectEntityModal .routineTable .icon-check .fa {
  419.         opacity: 0.1;
  420.     }
  421.     #selectEntityModal .routineTable .icon-check.isChecked .fa {
  422.         opacity: 1;
  423.     }
  424.     #selectEntityModal .routineTable .icon-check .fa {
  425.         padding: 10px;
  426.         border-radius: 39px;
  427.         border: 1px solid #eddcdc;
  428.         width: 34px;
  429.         height: 34px;
  430.         text-align: center;
  431.     }
  432.     @media (min-width: 1400px) {
  433.         .dashboard-main .container {
  434.             max-width: 1400px;
  435.         }
  436.     }
  437.     .upcoming_session_image_view {
  438.         height: 60px;
  439.         width: 60px;
  440.         border-radius: 50%;
  441.         background-size: cover !important;
  442.         background-position: center !important;
  443.     }
  444.     .badge.transaction_completed {
  445.         color: #7AE677;
  446.         background-color: #D9FFD8;
  447.         padding: .7rem;
  448.     }
  449.     .badge.transaction_canceled {
  450.         color: #ED4C5C;
  451.         background-color: #FFE3E2;
  452.         padding: .7rem;
  453.     }
  454.     .badge.transaction_pending {
  455.         color: #373A37;
  456.         background-color: #F2F2F2;
  457.         padding: .7rem;
  458.     }
  459.     .small_info .progress {
  460.         height: 1rem;
  461.         border-radius: 0.5rem;
  462.     }
  463.     .small_info .row {
  464.         margin-top: 19px;
  465.         margin-bottom: 20px;
  466.     }
  467.     .small_info .progress_holder {
  468.         margin-top: auto;
  469.         margin-bottom: auto;
  470.         padding: 0px;
  471.     }
  472.     .small_info .value_type {
  473.         margin-bottom: 0px;
  474.         font-size: 18px;
  475.         color: #373A37;
  476.         font-weight: normal;
  477.     }
  478.     .small_info .percent_value {
  479.         text-align: right;
  480.         margin-bottom: 0px;
  481.         font-size: 18px;
  482.         color: #373A37;
  483.         font-weight: normal;
  484.     }
  485.     .small_info .percent_holder {
  486.         margin-top: auto;
  487.         margin-bottom: auto;
  488.         padding-left: 0px;
  489.     }
  490.     .small_info .value_type_holder {
  491.         margin-top: auto;
  492.         margin-bottom: auto;
  493.     }
  494.     .small_info .progress .progress-bar {
  495.         background: #92E3A9;
  496.     }
  497.     .dashboard-main .card {
  498.         margin-bottom: 13px;
  499.     }
  500.     .accordion-button:focus {
  501.         z-index: 3;
  502.         /* border-color: #86b7fe; */
  503.         outline: 0;
  504.         box-shadow: none;
  505.     }
  506.     .accordion-button:not(.collapsed) {
  507.         /*color: #0c63e4;*/
  508.         background-color: white;
  509.         /*box-shadow: inset 0 -1px 0 rgb(0 0 0 / 13%);*/
  510.     }
  511.     .dial {
  512.         border: 0px;
  513.         width: 0px;
  514.         font-size: 36px !important;
  515.         color: white;
  516.     }
  517.     .rounded_border_card {
  518.         border-radius: 1rem;;
  519.     }
  520.     .status_card {
  521.         border-radius: 1rem;;
  522.     }
  523.     .status_card .card-body {
  524.         padding-bottom: 0;
  525.     }
  526.     .status_card .card-title {
  527.         color: #4B4B4B;
  528.         font-size: 20px;
  529.         font-weight: 400;
  530.         font-family: 'Poppins';
  531.     }
  532.     .status_card .status_value {
  533.         color: #4B4B4B;
  534.         font-size: 60px;
  535.         font-weight: normal;
  536.         font-family: 'Poppins';
  537.     }
  538.     .status_card .col-md-7, .status_card .col-md-5, .status_card .col-md-6 {
  539.         margin-top: auto;
  540.         margin-bottom: auto;
  541.         /*padding: 0;*/
  542.     }
  543.     .status_card .col-md-5 {
  544.         padding-left: 0px;
  545.     }
  546.     .status_card .status_value_trend {
  547.         float: right;
  548.         font-size: 14px;
  549.         font-weight: 400;
  550.         padding: 8px;
  551.         border-radius: 1em;
  552.     }
  553.     .status_value_trend.negative {
  554.         background-color: #FFE4E4;
  555.         color: #F07777;
  556.     }
  557.     .status_value_trend.positive {
  558.         background-color: #C6F1F7;
  559.         color: #137DC3;
  560.     }
  561.     .student_list_card {
  562.         /*border-radius: 1rem;;*/
  563.     }
  564.     .student_list_card .card {
  565.         /*border-radius: 1rem;;*/
  566.         border: none;;
  567.     }
  568.     .student_list_card .card-body {
  569.         padding: 8px;
  570.         border-radius: 13px;
  571.     }
  572.     .student_list_card .card-title {
  573.         color: #4B4B4B;
  574.         font-size: 20px;
  575.         font-weight: 400;
  576.         font-family: 'Poppins';
  577.     }
  578.     .student_list_card .time {
  579.         color: #818181;
  580.         font-size: 16px;
  581.         font-weight: bold;
  582.         font-family: 'Roboto', sans-serif;
  583.         padding-left: 4px;
  584.     }
  585.     .student_list_card .col-md-7,
  586.     .student_list_card .col-md-5,
  587.     .student_list_card .col-md-6,
  588.     .student_list_card .col-md-9,
  589.     .student_list_card .col-md-1,
  590.     .student_list_card .col-md-2,
  591.     .student_list_card .col-md-3 {
  592.         margin-top: auto;
  593.         margin-bottom: auto;
  594.         /*padding: 0;*/
  595.     }
  596.     .student_list_card .col-md-5,
  597.     .student_list_card .col-md-1 {
  598.         padding-left: 0px;
  599.     }
  600.     .student_list_card img {
  601.         width: 100%;
  602.         border-radius: 50%;
  603.     }
  604.     .student_list_card .student_name {
  605.         font-size: 18px;
  606.         font-weight: bold;
  607.         color: #4B4B4B;
  608.         font-family: 'Poppins';
  609.         margin-bottom: 0px;
  610.     }
  611.     .student_list_card .student_interest {
  612.         font-size: 16px;
  613.         font-weight: 400;
  614.         color: #BCC7D8;
  615.         margin-bottom: 0px;;
  616.     }
  617.     .student_list_card .more {
  618.         font-size: 16px;
  619.         font-weight: 400;
  620.         color: #333333;
  621.         margin-bottom: 0px;;
  622.         padding-right: 8px;
  623.     }
  624.     .table > :not(caption) > * > * {
  625.         padding: 1rem 1rem;
  626.     }
  627.     .more {
  628.         font-size: 16px;
  629.         font-weight: 400;
  630.         color: #333333;
  631.         margin-bottom: 0px;;
  632.         padding-right: 8px;
  633.     }
  634.     .custom-icon-btn {
  635.         background-color: #3498db;
  636.         color: white;
  637.         border: none;
  638.         border-radius: 15px;
  639.         text-align: center;
  640.         font-size: 16px;
  641.         font-weight: 500;
  642.     }
  643. </style>
  644. <style>
  645.     /* ── Nordic My Companies ─────────────────────────────────────────────────── */
  646.     :root {
  647.         --n-cream: #F7F5F0;
  648.         --n-dark:  #1A1D2E;
  649.         --n-amber: #C07D2A;
  650.         --n-muted: #6B7280;
  651.         /* Override global blue palette so style.css rules inherit Nordic tokens */
  652.         --global-background-color: #ffffff;
  653.         --primary-color: #1A1D2E;
  654.         --swiper-theme-color: #C07D2A;
  655.     }
  656.     body { background: var(--n-cream) !important; }
  657.     .role-company-page.section { background: var(--n-cream); padding: 48px 0 80px; }
  658.     /* Page heading */
  659.     .section-head-area { text-align: center; margin-bottom: 32px; }
  660.     .section-title,
  661.     .role-company-page .section-title,
  662.     .role-company-page h1.section-title {
  663.         font-family: 'Montserrat', sans-serif !important;
  664.         font-size: clamp(1.6rem,3vw,2.2rem) !important;
  665.         font-weight: 700 !important;
  666.         color: var(--n-dark) !important;
  667.         background: none !important;
  668.         -webkit-background-clip: unset !important;
  669.         -webkit-text-fill-color: var(--n-dark) !important;
  670.         background-clip: unset !important;
  671.         margin: 0;
  672.     }
  673.     /* Tabs */
  674.     .tab-box { display: flex !important; align-items: center; gap: 4px; border-bottom: 2px solid rgba(26,29,46,.1); margin-bottom: 32px; padding-bottom: 0; overflow-x: auto; scrollbar-width: none; }
  675.     .tab-box::-webkit-scrollbar { display: none; }
  676.     .tab-btn.tab-btn-style { background: transparent !important; border: none !important; border-bottom: 3px solid transparent !important; margin-bottom: -2px; padding: 10px 18px; font-family: 'DM Sans', sans-serif; font-size: .875rem; font-weight: 600; color: var(--n-muted) !important; border-radius: 0 !important; cursor: pointer; transition: color .2s, border-color .2s; white-space: nowrap; box-shadow: none !important; }
  677.     .tab-btn.tab-btn-style.active, .tab-btn.tab-btn-style:hover { color: var(--n-dark) !important; border-bottom-color: var(--n-amber) !important; }
  678.     .tab-box .line { display: none; }
  679.     /* Company Swiper cards — !important needed: style.css hardcodes rgba(230,248,250,1) blue */
  680.     .role-company-page .tab-container .content-box .content .card {
  681.         background: #fff !important;
  682.         border: 1.5px solid rgba(26,29,46,.08) !important;
  683.         border-radius: 14px !important;
  684.         box-shadow: 0 4px 24px rgba(26,29,46,.08) !important;
  685.         padding: 20px !important;
  686.         text-align: center;
  687.         transition: box-shadow .2s, transform .2s;
  688.     }
  689.     .role-company-page .tab-container .content-box .content .card:hover {
  690.         box-shadow: 0 8px 32px rgba(26,29,46,.14) !important;
  691.         transform: translateY(-2px);
  692.     }
  693.     /* Active slide: amber border instead of blue */
  694.     .swiper-slide.swiper-slide-active .card {
  695.         border: 2px solid var(--n-amber) !important;
  696.         background-image: none !important; /* remove the old overlay.svg */
  697.     }
  698.     .swiper-slide .card img { width: 64px; height: 64px; border-radius: 10px; object-fit: contain; margin: 0 auto 12px; display: block; }
  699.     .swiper-slide .card h2 { font-family: 'Montserrat', sans-serif; font-size: 1rem; font-weight: 700; color: var(--n-dark) !important; margin: 0 0 8px; }
  700.     .swiper-slide .card .role { display: inline-block; font-size: .72rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--n-amber); background: rgba(192,125,42,.1); padding: 3px 10px; border-radius: 20px; }
  701.     /* Action buttons — !important: style.css has high-specificity blue rules for these */
  702.     .buttons { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-top: 28px; }
  703.     .app-btn.button {
  704.         display: inline-flex !important; align-items: center !important; gap: 8px;
  705.         padding: 11px 24px !important; border-radius: 8px !important;
  706.         background: transparent !important;
  707.         color: var(--n-dark) !important;
  708.         border: 1.5px solid rgba(26,29,46,.25) !important;
  709.         font-family: 'DM Sans',sans-serif !important; font-size: .9rem; font-weight: 600;
  710.         cursor: pointer; transition: border-color .2s, color .2s; text-decoration: none;
  711.     }
  712.     .app-btn.button:hover { border-color: var(--n-amber) !important; color: var(--n-amber) !important; }
  713.     .app-btn.button i { color: var(--n-dark) !important; }
  714.     .app-btn.button:hover i { color: var(--n-amber) !important; }
  715.     .create-btn.button {
  716.         display: inline-flex !important; align-items: center !important; gap: 8px;
  717.         padding: 11px 24px !important; border-radius: 8px !important;
  718.         background: var(--n-dark) !important; color: #fff !important;
  719.         border: 1.5px solid transparent !important;
  720.         font-family: 'DM Sans',sans-serif !important; font-size: .9rem; font-weight: 600 !important;
  721.         cursor: pointer; transition: background .2s, transform .15s; text-decoration: none !important;
  722.     }
  723.     .create-btn.button:hover { background: var(--n-amber) !important; color: #fff !important; transform: translateY(-1px); text-decoration: none !important; }
  724.     /* Swiper nav */
  725.     .swiper-button-prev::after, .swiper-button-next::after { color: var(--n-amber) !important; }
  726.     .swiper-pagination-bullet-active { background: var(--n-amber) !important; }
  727.     /* Action links bar (Join / Link / Delete) — override old absolute+blue style */
  728.     .role-company-page .tab-container .content-box .content .links {
  729.         position: relative !important;
  730.         top: auto !important;
  731.         display: flex !important;
  732.         justify-content: center !important;
  733.         align-items: stretch !important;
  734.         max-width: 560px !important;
  735.         width: 100% !important;
  736.         margin: 24px auto 0 !important;
  737.         border: 1.5px solid rgba(26,29,46,.12) !important;
  738.         border-radius: 10px !important;
  739.         background: #fff !important;
  740.         overflow: hidden;
  741.         flex-wrap: nowrap !important;
  742.     }
  743.     .role-company-page .tab-container .content-box .content .links .link {
  744.         display: flex !important;
  745.         align-items: center !important;
  746.         justify-content: center !important;
  747.         gap: 7px;
  748.         flex: 1 1 0;
  749.         padding: 11px 14px !important;
  750.         font-family: 'DM Sans', sans-serif;
  751.         font-size: .82rem;
  752.         font-weight: 600;
  753.         color: var(--n-muted) !important;
  754.         cursor: pointer;
  755.         border-right: 1px solid rgba(26,29,46,.08) !important;
  756.         transition: color .15s, background .15s;
  757.         white-space: nowrap;
  758.     }
  759.     .role-company-page .tab-container .content-box .content .links .link:last-child { border-right: none !important; }
  760.     .role-company-page .tab-container .content-box .content .links .link:hover { color: var(--n-amber) !important; background: rgba(192,125,42,.05); }
  761.     .role-company-page .tab-container .content-box .content .links .link.active { color: var(--n-dark) !important; }
  762.     .role-company-page .tab-container .content-box .content .links .link i { font-size: 14px !important; color: var(--n-amber); padding: 0 !important; }
  763.     /* Onboarding employee cards */
  764.     .employee-card { background: #fff; border-radius: 14px; box-shadow: 0 4px 24px rgba(26,29,46,.08); border: 1px solid rgba(26,29,46,.06); padding: 28px; }
  765.     .employee-card h5 { font-family: 'Montserrat', sans-serif; font-weight: 700; color: var(--n-dark); }
  766.     .employee-card .form-group label { font-size: .78rem; font-weight: 600; color: var(--n-muted); text-transform: uppercase; letter-spacing: .08em; }
  767.     .employee-card .form-control, .employee-card select.form-control { border: 1.5px solid rgba(26,29,46,.12); border-radius: 8px; padding: 10px 14px; font-family: 'DM Sans', sans-serif; color: var(--n-dark); }
  768.     .employee-card .form-control:focus { border-color: var(--n-amber); box-shadow: 0 0 0 3px rgba(192,125,42,.1); outline: none; }
  769.     /* Buttons inside page */
  770.     .global-button, .send-button { background: var(--n-dark) !important; color: #fff !important; border: none !important; border-radius: 8px !important; padding: 10px 24px !important; font-family: 'DM Sans', sans-serif !important; font-weight: 600 !important; cursor: pointer; transition: background .2s; }
  771.     .global-button:hover, .send-button:hover, .global-button:focus, .send-button:focus { background: var(--n-amber) !important; color: #fff !important; box-shadow: none !important; }
  772.     .global-outline-button.extra-btn { background: transparent !important; color: var(--n-dark) !important; border: 2px solid rgba(26,29,46,.25) !important; border-radius: 8px !important; padding: 9px 20px !important; font-family: 'DM Sans', sans-serif; font-weight: 600; cursor: pointer; }
  773.     .global-outline-button.extra-btn:hover { border-color: var(--n-amber) !important; color: var(--n-amber) !important; }
  774.     /* QR card */
  775.     .qr-card .card { background: #fff; border-radius: 14px; box-shadow: 0 8px 32px rgba(26,29,46,.12); border: 1px solid rgba(26,29,46,.06); }
  776.     /* ── Responsive ──────────────────────────────────────────────────────────── */
  777.     @media (max-width: 768px) {
  778.         .role-company-page.section { padding: 32px 0 60px; }
  779.         .employee-card-container { justify-content: center; }
  780.         .employee-card { max-width: 100%; width: 100%; }
  781.     }
  782.     @media (max-width: 480px) {
  783.         .tab-box { gap: 0; }
  784.         .tab-btn.tab-btn-style { padding: 8px 12px; font-size: .8rem; }
  785.         .employee-card-container { flex-direction: column; align-items: stretch; gap: 16px; }
  786.         .buttons { flex-direction: column; }
  787.         .app-btn.button, .create-btn.button { width: 100%; justify-content: center; }
  788.     }
  789. </style>
  790. <section class="role-company-page section">
  791.     <div class="container">
  792.         <div class="row">
  793.             <div class="col-md-12 d-flex justify-content-center align-items-center">
  794.                 <div class="section-head-area">
  795.                     <h1 class="section-title">Your Role & Company List</h1>
  796.                 </div>
  797.             </div>
  798.         </div>
  799.         <div class="row d-flex justify-content-center align-items-center">
  800.             <div class="tab-container">
  801.                 <div class="tab-box overflow-x-auto">
  802.                     <button class="tab-btn tab-btn-style active " id="role-tab-1">Your Company</button>
  803.                     <button class="tab-btn tab-btn-style " id="role-tab-2">Your Role</button>
  804.                     <button class="tab-btn tab-btn-style " id="role-tab-3">Your Dashboard</button>
  805.                     <button class="tab-btn tab-btn-style " id="add-employee-btn">Onboarding</button>
  806.                     <button class="tab-btn tab-btn-style " id="role-tab-4">Shared Company</button>
  807.                     <button class="tab-btn tab-btn-style " id="role-tab-5">Applied Company</button>
  808.                     <div class="line"></div>
  809.                 </div>
  810.                 <div class="content-box">
  811.                     {# 1st div: your company #}
  812.                     <div class="content active" style="cursor:pointer;">
  813.                         <div class="swiper-container">
  814.                             <div class="swiper-wrapper"></div>
  815.                             {# <div id="selected-counter" class="selected-counter">0 out of 5 Selected</div> #}
  816.                             {# three buttons #}
  817.                             <div class="links">
  818.                                 <div class="link">
  819.                                     <i class='fa fa-user-plus'></i><span>Join this Account</span>
  820.                                 </div>
  821.                                 <div class="link active">
  822.                                     <i class='fa fa-link'></i><span>Link Accounts</span>
  823.                                 </div>
  824.                                 <div class="link active">
  825.                                     <i class='fa fa-trash'></i><span>Delete Account</span>
  826.                                 </div>
  827.                             </div>
  828.                             <div class="swiper-pagination"></div>
  829.                             <div class="buttons">
  830.                                 <button class="app-btn button"><i class="fa-regular fa-user"></i>Apply for Employment
  831.                                 </button>
  832.                                 <a class="create-btn button" href="{{ url('create_company') }}">
  833.                                     <i class="fa-regular fa-building"></i> Create a Company
  834.                                 </a>
  835.                             </div>
  836.                             <div class="swiper-button-prev"></div>
  837.                             <div class="swiper-button-next"></div>
  838.                         </div>
  839.                         {# <div id="selected-counter" class="selected-counter">0 out of 5 Selected</div> #}
  840.                     </div>
  841.                     {# 2nd div: your role #}
  842.                     <div class="content">
  843.                         {# role #}
  844.                     </div>
  845.                     {# 3rd div: your dashboard #}
  846.                     <div class="content">
  847.                         {# dashboard #}
  848.                     </div>
  849.                     {# 4th div: add employee #}
  850.                     <div class="content">
  851.                         <div class="employee-card-container hidden" id="employee-card-container">
  852.                             {# employee card form #}
  853.                             <div class="employee-card fade show" id="employee-form-wrapper">
  854.                                 <div class="" id="employee-card">
  855.                                     <h5 class='text-center mb-3'>By Generating QR/Link</h5>
  856.                                     <form id="employee-form ">
  857.                                         {# user type #}
  858.                                         <div class="form-group">
  859.                                             <select id="employee-type" name="qrEmpType"
  860.                                                     class="form-control p-2 select-center">
  861.                                                 <option value="">Select User Type</option>
  862.                                                 <option value="1">Admin</option>
  863.                                                 <option value="2">User</option>
  864.                                                 <option value="3">Manager</option>
  865.                                             </select>
  866.                                         </div>
  867.                                         {# select company #}
  868.                                         <div class="form-group">
  869.                                             <select id="company-name-qr" class="form-control">
  870.                                                 <option value="">Select Company</option>
  871.                                             </select>
  872.                                         </div>
  873.                                         {# select employee email #}
  874.                                         <div class="form-group mt-3">
  875.                                             <select name="sys_user" class="form-control entityEmp " id="email">
  876.                                                 <option value="">Select Employee</option>
  877.                                             </select>
  878.                                         </div>
  879.                                         <button type="button" class="global-button fs-6" id="qr-code-button">Generate
  880.                                         </button>
  881.                                     </form>
  882.                                 </div>
  883.                             </div>
  884.                             {# end employee card form #}
  885.                             <div class="employee-card fade show " id="self-qr-form-wrapper">
  886.                                 <div id="self-qr-card">
  887.                                     <h5 class='text-center mb-3'>Generate QR for Yourself</h5>
  888.                                     <form id="self-qr-form">
  889.                                         <div class="form-group ">
  890.                                             <label>Your Email</label>
  891.                                             <input style='' type="email" id="self-email-input"
  892.                                                    class="form-control email-input" placeholder="Enter your email">
  893.                                         </div>
  894.                                         <button type="button" class="global-button fs-6 mt-3" id="generate-self-qr-btn">
  895.                                             Generate QR
  896.                                         </button>
  897.                                     </form>
  898.                                 </div>
  899.                             </div>
  900.                             {# qr card #}
  901.                             <div class="qr-card" id="qr-code-container" style="display: none; margin-top: 100px">
  902.                                 <div class="card" style=''>
  903.                                     <button type="button"
  904.                                             class="position-absolute top-0 end-0 m-2 p-0 border-0 bg-transparent"
  905.                                             aria-label="Close">
  906.                                         <i class="fa-solid fa-circle-xmark fs-4" id="cl-qr-card"></i>
  907.                                     </button>
  908.                                     <div class="card-body mt-4">
  909.                                         <h3 class="text-capitalize" id="qr-company-name"></h3>
  910.                                         <img id="qr-image" src="" alt="QR Code" class="img-fluid ">
  911.                                         <p id="message" class="mt-2 text-success fs-5 text-center d-none"></p>
  912.                                         <button type="button" class=" send-button mt-2 mx-2 fs-6" id="send-qr-button">
  913.                                             Send Qr
  914.                                         </button>
  915.                                         {# working #}
  916.                                         <button type="button" class="global-outline-button extra-btn mt-2"
  917.                                                 id="copy-link-button">
  918.                                             <i class="fas fa-copy" id="close-qr-card"></i></button>
  919.                                         <!-- Send QR Loader -->
  920.                                         <div id="send-loader" class="mt-3 d-none text-center">
  921.                                             <div class="spinner-border text-primary" role="status">
  922.                                                 <span class="visually-hidden">Loading...</span>
  923.                                             </div>
  924.                                         </div>
  925.                                     </div>
  926.                                 </div>
  927.                             </div>
  928.                             {# qr card end #}
  929.                         </div>
  930.                     </div>
  931.                     {# 5th div: shared company #}
  932.                     <div class="content">
  933.                         {# shared company #}
  934.                     </div>
  935.                     {# 6th div: applied company #}
  936.                     <div class="content">
  937.                         {# applied company #}
  938.                     </div>
  939.                 </div>
  940.             </div>
  941.         </div>
  942.     </div>
  943. </section>
  944. <script>
  945.     document.addEventListener("DOMContentLoaded", function () {
  946.         const accessList = {{ app.session.get('userAccessList', [])|json_encode|raw() }};
  947.         console.log(accessList);
  948.         let qruserAccessList = [];
  949.         function populateCompanyDropdown(selectId) {
  950.             const selectElement = document.getElementById(selectId);
  951.             qruserAccessList = accessList.map(company => ({
  952.                 companyName: company.companyName,
  953.                 appId: company.appId,
  954.                 companyId: company.companyId,
  955.                 userType: company.userType
  956.             }));
  957.             selectElement.innerHTML = '<option value="">Select Company</option>';
  958.             accessList.forEach(function (company) {
  959.                 const option = document.createElement("option");
  960.                 option.value = company.companyName;
  961.                 option.textContent = company.companyName;
  962.                 selectElement.appendChild(option);
  963.             });
  964.             if ($(selectElement)[0].selectize) {
  965.                 $(selectElement)[0].selectize.destroy();
  966.             }
  967.             $(selectElement).selectize({
  968.                 create: false,
  969.                 sortField: 'text'
  970.             });
  971.         }
  972.         populateCompanyDropdown("company-name-qr");
  973.         // generate qr code
  974.         document.getElementById("qr-code-button").addEventListener("click", function () {
  975.             var selectedCompany = document.getElementById("company-name-qr").value;
  976.             var qrCompanyName = document.getElementById("qr-company-name");
  977.             var userEmail = document.getElementById("email")
  978.             var qrImage = document.getElementById("qr-image");
  979.             var qrCodeContainer = document.getElementById("qr-code-container");
  980.             var selectedCompanyData = qruserAccessList.find(company => company.companyName === selectedCompany);
  981.             var appId = selectedCompanyData.appId;
  982.             var companyId = selectedCompanyData.companyId;
  983.             var userType = selectedCompanyData.userType;
  984.             var baseUrl = "{{ url('employee_add_by_qr') }}";
  985.             var connector = baseUrl.includes("?") ? "&" : "?";
  986.             var finalUrl = baseUrl + connector + "company=" + encodeURIComponent(selectedCompany) + "&appid=" + encodeURIComponent(appId) + "&companyId=" + encodeURIComponent(companyId) + "&userType=" + encodeURIComponent(userType) + "&CompanyQr=1";
  987.             if (selectedCompany) {
  988.                 qrCompanyName.textContent = selectedCompany;
  989.                 $.get("{{ path('generate_qr_div') }}?url=" + encodeURIComponent(finalUrl), function (data) {
  990.                     $('#qr-image').attr('src', data.html);
  991.                     $('#qr-code-container').show();
  992.                 }, "json");
  993.             } else {
  994.                 alert("Please select a company to generate the QR code.");
  995.             }
  996.         });
  997.         document.getElementById("cl-qr-card").addEventListener("click", function (event) {
  998.             event.stopPropagation();
  999.             document.getElementById("qr-code-container").style.display = "none";
  1000.         });
  1001.         document.getElementById("copy-link-button").addEventListener("click", function (event) {
  1002.             event.stopPropagation();
  1003.             var selectedCompany = document.getElementById("company-name-qr").value;
  1004.             var selectedCompanyData = qruserAccessList.find(company => company.companyName === selectedCompany);
  1005.             var appId = selectedCompanyData.appId;
  1006.             var companyId = selectedCompanyData.companyId;
  1007.             var userType = selectedCompanyData.userType;
  1008.             var baseUrl = "{{ url('employee_add_by_qr') }}";
  1009.             var connector = baseUrl.includes("?") ? "&" : "?";
  1010.             var finalUrl = baseUrl + connector + "company=" + encodeURIComponent(selectedCompany) +
  1011.                 "&appid=" + encodeURIComponent(appId) +
  1012.                 "&companyId=" + encodeURIComponent(companyId) +
  1013.                 "&userType=" + encodeURIComponent(userType);
  1014.             navigator.clipboard.writeText(finalUrl).then(() => {
  1015.                 var qrContainer = document.getElementById("qr-code-container");
  1016.                 var copyMessage = document.getElementById("copy-message");
  1017.                 const qrImage = document.getElementById("qr-image");
  1018.                 if (!copyMessage) {
  1019.                     copyMessage = document.createElement("p");
  1020.                     copyMessage.id = "copy-message";
  1021.                     copyMessage.style.color = "green";
  1022.                     copyMessage.style.marginTop = "0px";
  1023.                     copyMessage.style.fontWeight = "bold";
  1024.                     copyMessage.style.fontSize = "16px";
  1025.                     copyMessage.style.textAlign = "center";
  1026.                     qrImage.insertAdjacentElement("afterend", copyMessage);
  1027.                     //qrContainer.appendChild(copyMessage);
  1028.                 }
  1029.                 copyMessage.textContent = "Link copied to clipboard!";
  1030.                 // remove 'Link copied to clipboard!' after 5 seconds
  1031.                 setTimeout(() => {
  1032.                     copyMessage.remove();
  1033.                     copyMessage = null;
  1034.                 }, 5000);
  1035.             }).catch(err => {
  1036.                 console.error("Failed to copy: ", err);
  1037.             });
  1038.         });
  1039.         document.getElementById("send-qr-button").addEventListener("click", function () {
  1040.             var selectedEmployee = document.getElementById("email").value;
  1041.             var selectedCompany = document.getElementById("company-name-qr").value;
  1042.             var selectedCompanyData = qruserAccessList.find(company => company.companyName === selectedCompany);
  1043.             var appId = selectedCompanyData.appId;
  1044.             var qrImage = document.getElementById("qr-image");
  1045.             var loader = document.getElementById("send-loader"); // loader variable
  1046.             if (!selectedEmployee || !selectedCompany) {
  1047.                 alert("Please select both an employee and a company.");
  1048.                 return;
  1049.             }
  1050.             // Show loader
  1051.             loader.classList.remove("d-none");
  1052.             var formData = new FormData();
  1053.             formData.append('company', selectedCompany);
  1054.             formData.append('email', selectedEmployee);
  1055.             formData.append('qr_image', dataURItoBlob(qrImage.src));
  1056.             formData.append('appid', appId);
  1057.             fetch("{{ path('employee_add_by_qr') }}", {
  1058.                 method: "POST",
  1059.                 body: formData
  1060.             }).then(response => response.json())
  1061.                 .then(data => {
  1062.                     // Hide loader
  1063.                     loader.classList.add("d-none");
  1064.                     if (data.status === 'success') {
  1065.                         window.location.href = "{{ path('central_landing') }}";
  1066.                         alert('QR Code for employee uploaded successfully!');
  1067.                     } else {
  1068.                         alert('Error: ' + data.message);
  1069.                     }
  1070.                 }).catch(error => {
  1071.                 console.error("Error uploading QR Code:", error);
  1072.             });
  1073.         });
  1074.         function dataURItoBlob(dataURI) {
  1075.             var byteString = atob(dataURI.split(',')[1]);
  1076.             var arrayBuffer = new ArrayBuffer(byteString.length);
  1077.             var uintArray = new Uint8Array(arrayBuffer);
  1078.             for (var i = 0; i < byteString.length; i++) {
  1079.                 uintArray[i] = byteString.charCodeAt(i);
  1080.             }
  1081.             return new Blob([uintArray], {type: 'image/png'});
  1082.         }
  1083.         document.getElementById("generate-self-qr-btn").addEventListener("click", function () {
  1084.             const emailInput = document.getElementById("self-email-input").value.trim();
  1085.             const qrCompanyName = document.getElementById("qr-company-name");
  1086.             const qrImage = document.getElementById("qr-image");
  1087.             const qrCodeContainer = document.getElementById("qr-code-container");
  1088.             if (!emailInput) {
  1089.                 alert("Please enter your email to generate the QR code.");
  1090.                 return;
  1091.             }
  1092.             $.get("{{ path('employee_onboard_by_qr_api') }}", {email: emailInput}, function (response) {
  1093.                 if (response.status === 'success') {
  1094.                     const userData = response.data;
  1095.                     const payloadUrl = "{{ url('employee_onboard_by_qr_api') }}?email=" + encodeURIComponent(userData.email) +
  1096.                         "&applicantId=" + encodeURIComponent(userData.id);
  1097.                     $.get("{{ path('generate_qr_div') }}", {url: payloadUrl}, function (qrRes) {
  1098.                         $('#qr-company-name').text(userData.email);
  1099.                         $('#qr-image').attr('src', qrRes.html);
  1100.                         $('#qr-code-container').show();
  1101.                     }, 'json');
  1102.                 } else {
  1103.                     alert(response.message || "User not found.");
  1104.                 }
  1105.             }, "json");
  1106.         });
  1107.         $('.entityEmp').selectize({
  1108.             placeholder: 'Enter Email',
  1109.             multiple: false,
  1110.             valueField: 'value',
  1111.             labelField: 'text',
  1112.             searchField: ['text'],
  1113.             preload: 'focus',
  1114.             load: function (query, callback) {
  1115.                 $.ajax({
  1116.                     url: "https://ourhoneybee.eu/select_data_ajax_public",
  1117.                     type: 'POST',
  1118.                     dataType: 'json',
  1119.                     data: {
  1120.                         query: query,
  1121.                         entity_group: 1,
  1122.                         tableName: "entity_applicant_details",
  1123.                         valueField: "email",
  1124.                         textField: "rendered_text",
  1125.                         renderTextFormat: "__email__",
  1126.                         andOrConditions: [
  1127.                             {type: "like", field: "email", value: query},
  1128.                             {type: "like", field: "firstname", value: query},
  1129.                         ],
  1130.                     },
  1131.                     success: function (res) {
  1132.                         if (res && res.data && Array.isArray(res.data)) {
  1133.                             callback(res.data);
  1134.                         } else {
  1135.                             callback([]);
  1136.                         }
  1137.                     },
  1138.                     error: function () {
  1139.                         callback([]);
  1140.                     }
  1141.                 });
  1142.             },
  1143.         });
  1144.         $("#send-qr-button").click(function () {
  1145.             var selectedEmployee = $(".entityEmp").val();
  1146.             var selectedCompany = $("#company-name-qr").val();
  1147.             if (!selectedEmployee || !selectedCompany) {
  1148.                 alert("Please select both an employee and a company.");
  1149.                 return;
  1150.             }
  1151.             $.ajax({
  1152.                 url: '/central_landing',
  1153.                 type: "POST",
  1154.                 data: {
  1155.                     employee_id: selectedEmployee,
  1156.                     company_name: selectedCompany
  1157.                 },
  1158.                 success: function (response) {
  1159.                     if (response.status === 'success') {
  1160.                         const messageBox = document.getElementById('message');
  1161.                         messageBox.textContent = 'Sent email successfully';
  1162.                         messageBox.classList.remove('d-none'); // Show message
  1163.                         // Hide after 5 seconds
  1164.                         setTimeout(() => {
  1165.                             messageBox.classList.add('d-none');
  1166.                         }, 5000);
  1167.                         window.location.href = "{{ path('central_landing') }}";
  1168.                         alert(response.company_name);
  1169.                     } else {
  1170.                         alert("Unexpected response from server.");
  1171.                     }
  1172.                 },
  1173.                 error: function (error) {
  1174.                     alert("Error sending data!");
  1175.                 }
  1176.             });
  1177.         });
  1178.     });
  1179. </script>
  1180. {# {% include '@Application/footer/central_footer_backup.html.twig' %} #}
  1181. {% include '@HoneybeeWeb/footer/central_footer.html.twig' %}
  1182. <link rel="stylesheet" type="text/css"
  1183.       href="{{ absolute_url(path('dashboard')) }}buddybee_assets/DataTables/datatables.min.css"/>
  1184. <script type="text/javascript"
  1185.         src="{{ absolute_url(path('dashboard')) }}condensed_assets/pagination/pagination.js?version={{ constant('ApplicationBundle\\Constants\\GeneralConstant::ENTITY_APP_VERSION') }}"></script>
  1186. <script type="text/javascript"
  1187.         src="{{ absolute_url(path('dashboard')) }}buddybee_assets/DataTables/datatables.min.js?version={{ constant('ApplicationBundle\\Constants\\GeneralConstant::ENTITY_APP_VERSION') }}"></script>
  1188. <script type="text/javascript" src="{{ absolute_url(path('dashboard')) }}buddybee_assets/js/jquery.countTo.js"></script>
  1189. <script type="text/javascript"
  1190.         src="{{ absolute_url(path('dashboard')) }}buddybee_assets/js/jquery.knob.min.js"></script>
  1191. <script>
  1192.     // open and close qr code
  1193.     document.getElementById('qr-code-button').addEventListener('click', function () {
  1194.         // showing qr card
  1195.         document.getElementById('qr-code-container').style.display = 'block';
  1196.         // hide form
  1197.         document.getElementById('employee-form-wrapper').style.display = 'none';
  1198.     })
  1199.     document.getElementById('cl-qr-card').addEventListener('click', function () {
  1200.         // hide qr card
  1201.         document.getElementById('qr-code-container').style.display = 'none';
  1202.         // showing the form again
  1203.         document.getElementById('employee-form-wrapper').style.display = 'block';
  1204.     })
  1205.     var selectEntityModal = {};
  1206.     var currentTabSelectEntityModal = 0;
  1207.     var accessList = [];
  1208.     {% if app.session.get('userAccessList','') !='' %}
  1209.     accessList ={{ app.session.get('userAccessList','')|json_encode|raw() }}
  1210.             {% endif %}
  1211.         function getUserCompanyList(userGetType) {
  1212.             userGetType = userGetType || '_LOCAL_';
  1213.             var pika_ind_id = "_NA_";
  1214.             $('#selectEntityModal .cg_holder').empty();
  1215.             var userTypeTextObject = {
  1216.                 1: 'Admin',
  1217.                 2: 'User',
  1218.                 3: 'Vendor',
  1219.                 4: 'Customer',
  1220.                 5: 'Management User',
  1221.                 6: 'Group Owner',
  1222.                 7: 'GLobal User',
  1223.                 8: 'Applicant',
  1224.                 9: 'Collaborator',
  1225.             }
  1226.             var placeholderCount=6;
  1227.             if (userGetType === '_LOCAL_') {
  1228.                 $.ajax({
  1229.                     url: BaseURL + "get_users_by_query?queryStr=" + $('#tempUsername').val(),
  1230.                     type: 'POST',
  1231.                     dataType: 'json',
  1232.                     data: {},
  1233.                     error: function () {
  1234.                         // callback();
  1235.                     },
  1236.                     success: function (res) {
  1237.                         if (res.success === true) {
  1238.                             if (res.data.length === 1) {
  1239.                                 var dt = res.data[0];
  1240.                                 $('#gocId').val(dt['gocId']);
  1241.                                 $('#username').val(dt['loginUserName']);
  1242.                                 $('#loginform').submit();
  1243.                             } else {
  1244.                                 for (var jj = 0; jj < res.data.length; jj++) {
  1245.                                     var dt = res.data[jj];
  1246.                                     var ggStr = ' <div class="box-selector cg_selector cg_' + dt['appId'] + '" style="cursor:pointer;"' + ' col-md-12 col-sm-12"' +
  1247.                                         ' data-id="' + dt['gocId'] + '"' +
  1248.                                         ' data-goc-id="' + dt['gocId'] + '"' +
  1249.                                         ' data-user-name="' + dt['loginUserName'] + '"' +
  1250.                                         ' data-gen-class="cg_selector">' +
  1251.                                         '<div class="inside" style="display: flex;">' +
  1252.                                         '<div class="img" style="' +
  1253.                                         "background:url('" + dt['companyLogoUrl'] + "');" +
  1254.                                         'height: 50px;width: 40%;background-position: left;background-size: contain;background-repeat: no-repeat;display: inline-block;">' +
  1255.                                         '</div>' +
  1256.                                         '<h6 class="title" style="height: 2rem; width: 60%;text-align: left;">' + dt['companyName'] +
  1257.                                         ' <p class="sub-title">' + userTypeTextObject[dt['userType']] + '</p></h6>' +
  1258.                                         '</div>' +
  1259.                                         '</div>';
  1260.                                     $('#selectEntityModal .cg_holder').append(ggStr);
  1261.                                 }
  1262.                                 $('#selectEntityModal').modal('show');
  1263.                             }
  1264.                         }
  1265.                     }
  1266.                 });
  1267.             }
  1268.             if (userGetType == '_CENTRAL_') {
  1269.                 {
  1270.                     for (var jj = 0; jj < accessList.length; jj++) {
  1271.                         var dt = accessList[jj];
  1272.                         var ggStr = ' <div class="swiper-slide cg_selector cg_' + dt['appId'] + '" style="cursor:pointer;"' +
  1273.                             ' data-id="' + dt['appId'] + '"' +
  1274.                             ' data-app-id="' + dt['appId'] + '"' +
  1275.                             ' data-goc-id="0"' +
  1276.                             // ' data-user-name="' + dt['loginUserName'] + '" ' +
  1277.                             ' data-gen-class="cg_selector" ' +
  1278.                             ' data-auth-str="' + dt['authenticationStr'] + '" ' +
  1279.                             ' data-server-url="' + dt['serverUrl'] + '" ' +
  1280.                             ' data-cs-token="{{ app.session.get('csToken','') }}" ' +
  1281.                             '>' +
  1282.                             ' <div class="card">' +
  1283.                             // round circle
  1284.                             //'<input type="checkbox" id="check">' +
  1285.                             '<img src="{{ constant('ApplicationBundle\\Constants\\GeneralConstant::HONEYBEE_CENTRAL_SERVER') }}' + dt['companyLogoUrl'] + '" alt=" Logo">' +
  1286.                             '<h2>' + dt['companyName'] + '</h2>' +
  1287.                             ' <div class="role">' + userTypeTextObject[dt['userType']] + '</div>' +
  1288.                             // '<p>Lorem ipsum dolor sit amet ect tur. Blandit donec tortor et et quisq. Lorem ipsum dolor sit amet ect tur. Blandit donec tortor et et quisq. Lorem ipsum ...</p> ' +
  1289.                             // '<a href="#"><i class='bx bx-user-plus'></i>Add Employee</a> ' +
  1290.                             '</div> ' +
  1291.                             '</div>'
  1292.                         $('.swiper-wrapper').append(ggStr);
  1293.                         placeholderCount--;
  1294.                     }
  1295.                 }
  1296.                 for (var jj = 0; jj < placeholderCount; jj++) {
  1297.                     var dt = accessList[jj];
  1298.                     var ggStr = ' <div class="swiper-slide  cg_skip cg_0" style="cursor:pointer;"' +
  1299.                         ' data-id="0' +
  1300.                         ' data-app-id="0"' +
  1301.                         ' data-goc-id="0"' +
  1302.                         // ' data-user-name="' + dt['loginUserName'] + '" ' +
  1303.                         ' data-gen-class="cg_selector" ' +
  1304.                         ' data-auth-str="" ' +
  1305.                         ' data-server-url="" ' +
  1306.                         ' data-cs-token="" ' +
  1307.                         '>' +
  1308.                         ' <div class="card">' +
  1309.                         // round circle
  1310.                         //'<input type="checkbox" id="check">' +
  1311.                         '<img src="{{ constant('ApplicationBundle\\Constants\\GeneralConstant::HONEYBEE_CENTRAL_SERVER') }}/images/company_2.png" alt=" Logo">' +
  1312.                         '<h2><i class="fa fa-plus"></i>Add a Company</h2>' +
  1313.                         ' <div class="role">Add or join a company</div>' +
  1314.                         '</div> ' +
  1315.                         '</div>'
  1316.                     $('.swiper-wrapper').append(ggStr);
  1317.                 }
  1318.                 // swipper issue solved for company clicking issue
  1319.                 // var mySwiper = new Swiper('.swiper-container', {
  1320.                 //     loop: true,
  1321.                 //     speed: 400,
  1322.                 //     effect: "coverflow",
  1323.                 //     centeredSlides: true,
  1324.                 //     slidesPerView: 3,
  1325.                 //     mousewheel: true,
  1326.                 //     allowTouchMove: false, // drag/swipe disabled
  1327.                 //     coverflowEffect: {
  1328.                 //         rotate: 0,
  1329.                 //         stretch: 20,
  1330.                 //         depth: 200,
  1331.                 //         modifier: 2,
  1332.                 //         slideShadows: false,
  1333.                 //     },
  1334.                 //     pagination: {
  1335.                 //         el: ".swiper-pagination",
  1336.                 //         clickable: true,
  1337.                 //     },
  1338.                 //     navigation: {
  1339.                 //         nextEl: ".swiper-button-next",
  1340.                 //         prevEl: ".swiper-button-prev",
  1341.                 //     },
  1342.                 // });
  1343.                 var role_company_page = new Swiper(".role-company-page .content .swiper-container",
  1344.                     {
  1345.                         loop: true,
  1346.                         speed: 400,
  1347.                         effect: "coverflow",
  1348.                         centeredSlides: true,
  1349.                         slidesPerView: 1,
  1350.                         mousewheel: true,
  1351.                         grabCursor: true,
  1352.                         coverflowEffect: {
  1353.                             rotate: 0,
  1354.                             stretch: 20,
  1355.                             depth: 200,
  1356.                             modifier: 2,
  1357.                             slideShadows: false,
  1358.                         },
  1359.                         breakpoints: {
  1360.                             640:  { slidesPerView: 2 },
  1361.                             1024: { slidesPerView: 3 },
  1362.                         },
  1363.                         pagination: {
  1364.                             el: ".swiper-pagination",
  1365.                             clickable: true,
  1366.                         },
  1367.                         navigation: {
  1368.                             nextEl: ".swiper-button-next",
  1369.                             prevEl: ".swiper-button-prev",
  1370.                         },
  1371.                     }
  1372.                 );
  1373.                 // var role_company_page = new Swiper(".role-company-page .content .swiper-container",
  1374.                 //     {
  1375.                 //         loop: true,
  1376.                 //         speed: 400,
  1377.                 //         effect: "coverflow",
  1378.                 //         centeredSlides: true,
  1379.                 //         slidesPerView: 3,
  1380.                 //         mousewheel: true,
  1381.                 //         grabCursor: true,
  1382.                 //         coverflowEffect: {
  1383.                 //             rotate: 0,
  1384.                 //             stretch: 20,
  1385.                 //             depth: 200,
  1386.                 //             modifier: 2,
  1387.                 //             slideShadows: false,
  1388.                 //         },
  1389.                 //
  1390.                 //         pagination: {
  1391.                 //             el: ".swiper-pagination",
  1392.                 //             clickable: true,
  1393.                 //
  1394.                 //         },
  1395.                 //         navigation: {
  1396.                 //             nextEl: ".swiper-button-next",
  1397.                 //             prevEl: ".swiper-button-prev",
  1398.                 //         },
  1399.                 //
  1400.                 //     }
  1401.                 // );
  1402.                 // var mySwiper=role_company_page;
  1403.                 // Stable click for center slide
  1404.                 // document.querySelector('.swiper-container').addEventListener('click', function () {
  1405.                 //     var activeSlide = mySwiper.slides[mySwiper.activeIndex];
  1406.                 //     var serverUrl = activeSlide.getAttribute('data-server-url');
  1407.                 //     var authStr = activeSlide.getAttribute('data-auth-str');
  1408.                 //     var appId = activeSlide.getAttribute('data-app-id');
  1409.                 //     var csToken = activeSlide.getAttribute('data-cs-token');
  1410.                 //
  1411.                 //     if (serverUrl) {
  1412.                 //         window.location.href =
  1413.                 //             serverUrl +
  1414.                 //             '?authStr=' + authStr +
  1415.                 //             '&appId=' + appId +
  1416.                 //             '&csToken=' + csToken;
  1417.                 //     }
  1418.                 // });
  1419.             }
  1420.         }
  1421.     jQuery(document).ready(function () {
  1422.         getUserCompanyList('_CENTRAL_')
  1423.         $(document).on('click', '.box-selector', function () {
  1424.             $('.' + $(this).data('genClass')).removeClass('active')
  1425.             $(this).addClass('active')
  1426.         });
  1427.         $(document).on('click', '.cg_selector', function () {
  1428.             if (typeof $(this).data('authStr') !== 'undefined') {
  1429.                 let serverUrl = $(this).data('serverUrl').replace(/\/$/, ''); // avoid trailing slash
  1430.                 window.location.href = serverUrl + '/switch_app?spd=' + $(this).data('authStr') + '&csToken=' + $(this).data('csToken');
  1431.                 //previous line  window.location.href = $(this).data('serverUrl') + '/switch_app?spd=' + $(this).data('authStr') + '&csToken=' + $(this).data('csToken');
  1432.             } else {
  1433.                 $('#gocId').val($(this).data('gocId'));
  1434.                 $('#username').val($(this).data('userName'));
  1435.                 $('#loginform').submit();
  1436.             }
  1437.         });
  1438.         $(document).on('click', '.cg_skip', function () {
  1439.             window.location.href = '{{ url('create_company') }}';
  1440.             //previous line  window.location.href = $(this).data('serverUrl') + '/switch_app?spd=' + $(this).data('authStr') + '&csToken=' + $(this).data('csToken');
  1441.         });
  1442.         // $(document).on('click', '.applicant_action_selector', function () {
  1443.         //     window.location.href = $(this).data('url')
  1444.         // });
  1445.     });
  1446. </script>