<?php

namespace App\Http\Controllers;

use App\UsersDb;
use App\Annexure_One;
use App\Annexure_Two;
use App\Annexure_Three;
use App\Annexure_Four;
use App\Annexure_Five;
use App\Annexure_Six;
use App\Annexure_Seven;
use App\Annexure_Eight;
use App\Annexure_Nine;
use App\Annexure_Ten;
use App\Annexure_Eleven;
use App\Annexure_Twelve;
use App\Annexure_Thirteen;
use App\Annexure_Fourteen;
use App\Annexure_Fifteen;
use App\Annexure_Sixteen;
use App\ConflictOfInterest;
use App\Annexure_Status;
use App\CoeForm;
use App\CoiUsers;
use App\OldData;
use Mail;
use App\Jobs\COICompletionJob;
use App\Jobs\AdminCOICompletionJob;
use Illuminate\Support\Facades\Validator;
use GuzzleHttp\Client as GuzzleClient;

use App\Mail\CoiConflictMail;
use App\Mail\MtnCoiCompletionMail;
use Illuminate\Support\Facades\Session;
use Illuminate\Http\Request;
use Carbon\Carbon;
use Illuminate\Support\Facades\Log;

class AnnexureOneController extends Controller
{

    public function sendmail($subj, $mailto, $msg)
    {
        $curl = curl_init();
        $mailurl = env('MAIL_URL');
        $mailauth = env('MAIL_AUTH');
        curl_setopt_array($curl, array(
            CURLOPT_URL => $mailurl,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => '{
      "subject":"' . $subj . '",
      "recipient":"' . $mailto . '",
      "msg":"' . $msg . '"
    }',
            CURLOPT_HTTPHEADER => array(
                $mailauth,
                'Content-Type: application/json'
            ),
        ));

        $response = curl_exec($curl);

        curl_close($curl);
        Log::channel('coi')->info('curl executed and closed.');
        // echo $response;
        Log::channel('coi')->info('curl response: ' . $response);
    }




    public function validateFields()
    {
        return
            [
                'a1_declarable_interest' => 'required_if:savemetype,==,finalsubmit',

                'a1_directorship_name_of_business.*' => 'bail|required_if:a1_declarable_interest,==,Yes',
                'a1_directorship_nature_of_business.*' => 'bail|required_if:a1_declarable_interest,==,Yes',

                'a1_dominant_name_of_business.*' => 'bail|required_if:a1_declarable_interest,==,Yes',
                'a1_dominant_nature_of_business.*' => 'bail|required_if:a1_declarable_interest,==,Yes',

                'a1_trusteeship_name_of_business.*' => 'bail|required_if:a1_declarable_interest,==,Yes',
                'a1_trusteeship_nature_of_business.*' => 'bail|required_if:a1_declarable_interest,==,Yes',


                'a1_participation' => 'bail|required_if:a1_declarable_interest,==,Yes',
                'a1_other_business' => 'bail|required_if:a1_declarable_interest,==,Yes',
                'a1_any_other_interest' => 'bail|required_if:a1_declarable_interest,==,Yes',
                'a1_name_of_entity' => 'bail|required_if:a1_declarable_interest,==,Yes',
                'a1_additional_information' => 'bail|required_if:a1_declarable_interest,==,Yes',

                'a2_declarable_interest' => 'required_if:savemetype,==,finalsubmit',
                'a2_nature_of_personal_business_interest' => 'bail|required_if:a2_declarable_interest,==,Yes',
                'a2_corporate_or_business_name' => 'bail|required_if:a2_declarable_interest,==,Yes',
                'a2_decisions' => 'bail|required_if:a2_declarable_interest,==,Yes',
                'a2_independence_and_objectivity' => 'bail|required_if:a2_declarable_interest,==,Yes',
                'a2_additional_information_2' => 'bail|required_if:a2_declarable_interest,==,Yes',

                'a3_declarable_interest' => 'required_if:savemetype,==,finalsubmit',
                'a3_personal_financial_interests' => 'bail|required_if:a3_declarable_interest,==,Yes',
                'a3_value_personal_financial_interests' => 'bail|required_if:a3_declarable_interest,==,Yes',
                'a3_professional_duties' => 'bail|required_if:a3_declarable_interest,==,Yes',
                'a3_mtn_business_activities' => 'bail|required_if:a3_declarable_interest,==,Yes',
                'a3_personal_financial_interests_conflict' => 'bail|required_if:a3_declarable_interest,==,Yes',
                'a3_additional_information_3' => 'bail|required_if:a3_declarable_interest,==,Yes',

                'a4_declarable_interest' => 'required_if:savemetype,==,finalsubmit',
                'a4_nature_of_contracts' => 'bail|required_if:a4_declarable_interest,==,Yes',
                'a4_personal_gain_received' => 'bail|required_if:a4_declarable_interest,==,Yes',
                'a4_parties_involved' => 'bail|required_if:a4_declarable_interest,==,Yes',
                'a4_additional_information_4' => 'bail|required_if:a4_declarable_interest,==,Yes',

                'a5_declarable_interest' => 'required_if:savemetype,==,finalsubmit',
                'a5_nature_of_the_influence' => 'bail|required_if:a5_declarable_interest,==,Yes',
                'a5_position_or_authority' => 'bail|required_if:a5_declarable_interest,==,Yes',
                'a5_close_associate' => 'bail|required_if:a5_declarable_interest,==,Yes',
                'a5_name_person_or_entity' => 'bail|required_if:a5_declarable_interest,==,Yes',
                'a5_authority_to_influence' => 'bail|required_if:a5_declarable_interest,==,Yes',
                'a5_additional_information_5' => 'bail|required_if:a5_declarable_interest,==,Yes',

                'a6_declarable_interest' => 'required_if:savemetype,==,finalsubmit',
                'a6_solicited_investment' => 'bail|required_if:a6_declarable_interest,==,Yes',
                'a6_business_solicited_investment' => 'bail|required_if:a6_declarable_interest,==,Yes',
                'a6_nature_of_soliciting_business' => 'bail|required_if:a6_declarable_interest,==,Yes',
                'a6_additional_information_6' => 'bail|required_if:a6_declarable_interest,==,Yes',

                'a7_declarable_interest' => 'required_if:savemetype,==,finalsubmit',
                'a7_proper_authorisation' => 'bail|required_if:a7_declarable_interest,==,Yes',
                'a7_value_or_nature_of_personal_gain' => 'bail|required_if:a7_declarable_interest,==,Yes',
                'a7_information_was_used' => 'bail|required_if:a7_declarable_interest,==,Yes',
                'a7_additional_information_7' => 'bail|required_if:a7_declarable_interest,==,Yes',


                'a8_declarable_interest' => 'required_if:savemetype,==,finalsubmit',
                'a8_commercial_activities' => 'bail|required_if:a8_declarable_interest,==,Yes',
                'a8_sourced_or_promoted' => 'bail|required_if:a8_declarable_interest,==,Yes',
                'a8_third_parties_involved' => 'bail|required_if:a8_declarable_interest,==,Yes',
                'a8_commercial_activities_gain' => 'bail|required_if:a8_declarable_interest,==,Yes',
                'a8_additional_information_8' => 'bail|required_if:a8_declarable_interest,==,Yes',

                'a9_declarable_interest' => 'required_if:savemetype,==,finalsubmit',
                'a9_whom_you_solicited' => 'bail|required_if:a9_declarable_interest,==,Yes',
                'a9_competition_with_MTN' => 'bail|required_if:a9_declarable_interest,==,Yes',
                'a9_additional_information_9' => 'bail|required_if:a9_declarable_interest,==,Yes',

                'a10_declarable_interest' => 'required_if:savemetype,==,finalsubmit',
                'a10_coi_conduct' => 'bail|required_if:a10_declarable_interest,==,Yes',
                'a10_conflict_motivation' => 'bail|required_if:a10_declarable_interest,==,Yes',
                'a10_additional_information_10' => 'bail|required_if:a10_declarable_interest,==,Yes',


                'a11_declarable_interest' => 'required_if:savemetype,==,finalsubmit',
                'a11_nature_of_declarable_interest' => 'bail|required_if:a11_declarable_interest,==,Yes',
                'a11_influence_your_judgement' => 'bail|required_if:a11_declarable_interest,==,Yes',
                'a11_additional_information_11' => 'bail|required_if:a11_declarable_interest,==,Yes',

                'a12_declarable_interest' => 'required_if:savemetype,==,finalsubmit',
                'a12_decision_making_process' => 'bail|required_if:a12_declarable_interest,==,Yes',
                'a12_recuse' => 'bail|required_if:a12_declarable_interest,==,Yes',
                'a12_successful_in_securing_employment' => 'bail|required_if:a12_declarable_interest,==,Yes',
                'a12_additional_information_12' => 'bail|required_if:a12_declarable_interest,==,Yes',

                'a13_declarable_interest' => 'required_if:savemetype,==,finalsubmit',
                'a13_business_relationship' => 'bail|required_if:a13_declarable_interest,==,Yes',
                'a13_enter_such_business_relationships' => 'bail|required_if:a13_declarable_interest,==,Yes',
                'a13_additional_information_13' => 'bail|required_if:a13_declarable_interest,==,Yes',

                'a14_declarable_interest' => 'required_if:savemetype,==,finalsubmit',
                'a14_details_of_the_situation' => 'bail|required_if:a14_declarable_interest,==,Yes',
                'a14_additional_information_14' => 'bail|required_if:a14_declarable_interest,==,Yes',

                'a15_declarable_interest' => 'required_if:savemetype,==,finalsubmit',
                'a15_employees_involved' => 'bail|required_if:a15_declarable_interest,==,Yes',
                'a15_relevant_details' => 'bail|required_if:a15_declarable_interest,==,Yes',
                'a15_additional_information_15' => 'bail|required_if:a15_declarable_interest,==,Yes',

                'a16_declarable_interest' => 'required_if:savemetype,==,finalsubmit',
                'a16_date_of_establishment_of_legacy_business' => 'bail|required_if:a16_declarable_interest,==,Yes',

                'a16_momo_operate' => 'bail|required_if:a16_declarable_interest,==,Yes',
                'a16_momo_family' => 'bail|required_if:a16_declarable_interest,==,Yes',
                'a16_confidential_corporate_information' => 'bail|required_if:a16_declarable_interest,==,Yes',
                'a16_financial_benefit_family' => 'bail|required_if:a16_declarable_interest,==,Yes',
                'a16_additional_information_16' => 'bail|required_if:a16_declarable_interest,==,Yes',


                'a18_declarable_interest_18' => 'required_if:savemetype,==,finalsubmit',
                'a18_details' => 'bail|required_if:a18_declarable_interest_18,==,Yes',
                'a18_b_nature_of_interest' => 'bail|required_if:a18_declarable_interest_18,==,Yes',
                'a18_b_particulars' => 'bail|required_if:a18_declarable_interest_18,==,Yes',

            ];
    }
    public function messages()
    {
        return [
            'a1_declarable_interest.required_if' => 'The Annexure 1 declarable interest field is required when savemetype is "finalsubmit".',

            'a1_directorship_name_of_business.*.required_if' => 'The Annexure 1 directorship name of business is required when declarable interest is "Yes".',
            'a1_directorship_nature_of_business.*.required_if' => 'The Annexure 1 directorship nature of business is required when declarable interest is "Yes".',

            'a1_dominant_name_of_business.*.required_if' => 'The Annexure 1 dominant name of business is required when declarable interest is "Yes".',
            'a1_dominant_nature_of_business.*.required_if' => 'The Annexure 1 dominant nature of business is required when declarable interest is "Yes".',

            'a1_trusteeship_name_of_business.*.required_if' => 'The Annexure 1 trusteeship name of business is required when declarable interest is "Yes".',
            'a1_trusteeship_nature_of_business.*.required_if' => 'The Annexure 1 trusteeship nature of business is required when declarable interest is "Yes".',

            'a1_participation.required_if' => 'The Annexure 1 participation field is required when declarable interest is "Yes".',
            'a1_other_business.required_if' => 'The Annexure 1 other business field is required when declarable interest is "Yes".',
            'a1_any_other_interest.required_if' => 'The Annexure 1 any other interest field is required when declarable interest is "Yes".',
            'a1_name_of_entity.required_if' => 'The Annexure 1 name of entity field is required when declarable interest is "Yes".',
            'a1_additional_information.required_if' => 'The Annexure 1 additional information field is required when declarable interest is "Yes".',

            'a2_declarable_interest.required_if' => 'The Annexure 2 declarable interest field is required when savemetype is "finalsubmit".',
            'a2_nature_of_personal_business_interest.required_if' => 'The Annexure 2 nature of personal business interest field is required when declarable interest is "Yes".',
            'a2_corporate_or_business_name.required_if' => 'The Annexure 2 corporate or business name field is required when declarable interest is "Yes".',
            'a2_decisions.required_if' => 'The Annexure 2 decisions field is required when declarable interest is "Yes".',
            'a2_independence_and_objectivity.required_if' => 'The Annexure 2 independence and objectivity field is required when declarable interest is "Yes".',
            'a2_additional_information_2.required_if' => 'The Annexure 2 additional information 2 field is required when declarable interest is "Yes".',

            'a3_declarable_interest.required_if' => 'The Annexure 3 declarable interest field is required when savemetype is "finalsubmit".',
            'a3_personal_financial_interests.required_if' => 'The Annexure 3 personal financial interests field is required when declarable interest is "Yes".',
            'a3_value_personal_financial_interests.required_if' => 'The Annexure 3 value of personal financial interests field is required when declarable interest is "Yes".',
            'a3_professional_duties.required_if' => 'The Annexure 3 professional duties field is required when declarable interest is "Yes".',
            'a3_mtn_business_activities.required_if' => 'The Annexure 3 MTN business activities field is required when declarable interest is "Yes".',
            'a3_personal_gifts.required_if' => 'The Annexure 3 personal gifts field is required when declarable interest is "Yes".',
            'a3_relationship.required_if' => 'The Annexure 3 relationship field is required when declarable interest is "Yes".',
            'a3_additional_information_3.required_if' => 'The Annexure 3 additional information 3 field is required when declarable interest is "Yes".',


            'a4_declarable_interest.required_if' => 'The Annexure 4 declarable interest field is required when savemetype is "finalsubmit".',
            'a4_nature_of_contracts.required_if' => 'The Annexure 4 nature of contracts field is required when declarable interest is "Yes".',
            'a4_personal_gain_received.required_if' => 'The Annexure 4 personal gain received field is required when declarable interest is "Yes".',
            'a4_parties_involved.required_if' => 'The Annexure 4 parties involved field is required when declarable interest is "Yes".',
            'a4_additional_information_4.required_if' => 'The Annexure 4 additional information 4 field is required when declarable interest is "Yes".',

            'a5_declarable_interest.required_if' => 'The Annexure 5 declarable interest field is required when savemetype is "finalsubmit".',
            'a5_nature_of_the_influence.required_if' => 'The Annexure 5 nature of the influence field is required when declarable interest is "Yes".',
            'a5_position_or_authority.required_if' => 'The Annexure 5 position or authority field is required when declarable interest is "Yes".',
            'a5_close_associate.required_if' => 'The Annexure 5 close associate field is required when declarable interest is "Yes".',
            'a5_name_person_or_entity.required_if' => 'The Annexure 5 name of person or entity field is required when declarable interest is "Yes".',
            'a5_authority_to_influence.required_if' => 'The Annexure 5 authority to influence field is required when declarable interest is "Yes".',
            'a5_additional_information_5.required_if' => 'The Annexure 5 additional information 5 field is required when declarable interest is "Yes".',

            'a6_declarable_interest.required_if' => 'The Annexure 6 declarable interest field is required when savemetype is "finalsubmit".',
            'a6_solicited_investment.required_if' => 'The Annexure 6 solicited investment field is required when declarable interest is "Yes".',
            'a6_business_solicited_investment.required_if' => 'The Annexure 6 business solicited investment field is required when declarable interest is "Yes".',
            'a6_nature_of_soliciting_business.required_if' => 'The Annexure 6 nature of soliciting business field is required when declarable interest is "Yes".',
            'a6_additional_information_6.required_if' => 'The Annexure 6 additional information 6 field is required when declarable interest is "Yes".',

            'a7_declarable_interest.required_if' => 'The Annexure 7 declarable interest field is required when savemetype is "finalsubmit".',
            'a7_proper_authorisation.required_if' => 'The Annexure 7 proper authorisation field is required when declarable interest is "Yes".',
            'a7_value_or_nature_of_personal_gain.required_if' => 'The Annexure 7 value or nature of personal gain field is required when declarable interest is "Yes".',
            'a7_information_was_used.required_if' => 'The Annexure 7 information was used field is required when declarable interest is "Yes".',
            'a7_additional_information_7.required_if' => 'The Annexure 7 additional information 7 field is required when declarable interest is "Yes".',

            'a8_declarable_interest.required_if' => 'The Annexure 8 declarable interest field is required when savemetype is "finalsubmit".',
            'a8_commercial_activities.required_if' => 'The Annexure 8 commercial activities field is required when declarable interest is "Yes".',
            'a8_sourced_or_promoted.required_if' => 'The Annexure 8 sourced or promoted field is required when declarable interest is "Yes".',
            'a8_third_parties_involved.required_if' => 'The Annexure 8 third parties involved field is required when declarable interest is "Yes".',
            'a8_commercial_activities_gain.required_if' => 'The Annexure 8 commercial activities gain field is required when declarable interest is "Yes".',
            'a8_additional_information_8.required_if' => 'The Annexure 8 additional information 8 field is required when declarable interest is "Yes".',

            'a9_declarable_interest.required_if' => 'The Annexure 9 declarable interest field is required when savemetype is "finalsubmit".',
            'a9_whom_you_solicited.required_if' => 'The Annexure 9 whom you solicited field is required when declarable interest is "Yes".',
            'a9_competition_with_MTN.required_if' => 'The Annexure 9 competition with MTN field is required when declarable interest is "Yes".',
            'a9_additional_information_9.required_if' => 'The Annexure 9 additional information 9 field is required when declarable interest is "Yes".',

            'a10_declarable_interest.required_if' => 'The Annexure 10 declarable interest field is required when savemetype is "finalsubmit".',
            'a10_coi_conduct.required_if' => 'The Annexure 10 COI conduct field is required when declarable interest is "Yes".',
            'a10_conflict_motivation.required_if' => 'The Annexure 10 conflict motivation field is required when declarable interest is "Yes".',
            'a10_additional_information_10.required_if' => 'The Annexure 10 additional information 10 field is required when declarable interest is "Yes".',


            'a11_declarable_interest.required_if' => 'The Annexure 11 declarable interest field is required when savemetype is "finalsubmit".',
            'a11_nature_of_declarable_interest.required_if' => 'The Annexure 11 nature of declarable interest field is required when declarable interest is "Yes".',
            'a11_influence_your_judgement.required_if' => 'The Annexure 11 influence your judgement field is required when declarable interest is "Yes".',
            'a11_additional_information_11.required_if' => 'The Annexure 11 additional information 11 field is required when declarable interest is "Yes".',

            'a12_declarable_interest.required_if' => 'The Annexure 12 declarable interest field is required when savemetype is "finalsubmit".',
            'a12_decision_making_process.required_if' => 'The Annexure 12 decision-making process field is required when declarable interest is "Yes".',
            'a12_recuse.required_if' => 'The Annexure 12 recuse field is required when declarable interest is "Yes".',
            'a12_successful_in_securing_employment.required_if' => 'The Annexure 12 successful in securing employment field is required when declarable interest is "Yes".',
            'a12_additional_information_12.required_if' => 'The Annexure 12 additional information 12 field is required when declarable interest is "Yes".',

            'a13_declarable_interest.required_if' => 'The Annexure 13 declarable interest field is required when savemetype is "finalsubmit".',
            'a13_business_relationship.required_if' => 'The Annexure 13 business relationship field is required when declarable interest is "Yes".',
            'a13_enter_such_business_relationships.required_if' => 'The Annexure 13 enter such business relationships field is required when declarable interest is "Yes".',
            'a13_additional_information_13.required_if' => 'The Annexure 13 additional information 13 field is required when declarable interest is "Yes".',

            'a14_declarable_interest.required_if' => 'The Annexure 14 declarable interest field is required when savemetype is "finalsubmit".',
            'a14_details_of_the_situation.required_if' => 'The Annexure 14 details of the situation field is required when declarable interest is "Yes".',
            'a14_additional_information_14.required_if' => 'The Annexure 14 additional information 14 field is required when declarable interest is "Yes".',

            'a15_declarable_interest.required_if' => 'The Annexure 15 declarable interest field is required when savemetype is "finalsubmit".',
            'a15_employees_involved.required_if' => 'The Annexure 15 employees involved field is required when declarable interest is "Yes".',
            'a15_relevant_details.required_if' => 'The Annexure 15 relevant details field is required when declarable interest is "Yes".',
            'a15_additional_information_15.required_if' => 'The Annexure 15 additional information 15 field is required when declarable interest is "Yes".',

            'a16_declarable_interest.required_if' => 'The Annexure 16 declarable interest field is required when savemetype is "finalsubmit".',
            'a16_date_of_establishment_of_legacy_business.required_if' => 'The Annexure 16 date of establishment of legacy business field is required when declarable interest is "Yes".',
            'a16_momo_operate.required_if' => 'The Annexure 16 MoMo operate field is required when declarable interest is "Yes".',
            'a16_momo_family.required_if' => 'The Annexure 16 MoMo family field is required when declarable interest is "Yes".',
            'a16_confidential_corporate_information.required_if' => 'The Annexure 16 confidential corporate information field is required when declarable interest is "Yes".',
            'a16_financial_benefit_family.required_if' => 'The Annexure 16 financial benefit family field is required when declarable interest is "Yes".',
            'a16_additional_information_16.required_if' => 'The Annexure 16 additional information 16 field is required when declarable interest is "Yes".',

            'a18_declarable_interest_18.required_if' => 'The Annexure 18 declarable interest 18 field is required when savemetype is "finalsubmit".',
            'a18_details.required_if' => 'The Annexure 18 details field is required when declarable interest 18 is "Yes".',
            'a18_b_nature_of_interest.required_if' => 'The Annexure 18 nature of interest field is required when declarable interest 18 is "Yes".',
            'a18_b_particulars.required_if' => 'The Annexure 18 particulars field is required when declarable interest 18 is "Yes".',


        ];
    }



    public function validateFieldsfordirector()
    {
        return [

            'a17_declarable_interest_17' => 'required_if:savemetype,==,finalsubmit',
            'a17_dealer_or_dealer' => 'bail|required_if:a17_declarable_interest_17,==,Yes',
            'a17_appointed_director' => 'bail|required_if:a17_declarable_interest_17,==,Yes',

            'a17_a_declarable_interest_17_a' => 'required_if:a17_declarable_interest_17,==,Yes',
            'a17_a_nature_of_trading' => 'bail|required_if:a17_a_declarable_interest_17_a,==,Yes',
            'a17_a_number_of_shares' => 'bail|required_if:a17_a_declarable_interest_17_a,==,Yes',
            'a17_a_buyer_or_seller' => 'bail|required_if:a17_a_declarable_interest_17_a,==,Yes',
            'a17_a_date_trading' => 'bail|required_if:a17_a_declarable_interest_17_a,==,Yes',


            'a17_b_declarable_interest_17' => 'required_if:a17_declarable_interest_17,==,Yes',
            'a17_b_subs_shareholder' => 'bail|required_if:a17_b_declarable_interest_17,==,Yes',
            'a17_b_the_nature_of_relationship' => 'bail|required_if:a17_b_declarable_interest_17,==,Yes',

            'a18_declarable_interest_18' => 'required_if:savemetype,==,finalsubmit',
            'a18_details' => 'bail|required_if:a18_declarable_interest_18,==,Yes',
            'a18_b_nature_of_interest' => 'bail|required_if:a18_declarable_interest_18,==,Yes',
            'a18_b_particulars' => 'bail|required_if:a18_declarable_interest_18,==,Yes',
        ];
    }

    public function messagesForDirector()
    {
        return [
            'a17_declarable_interest_17.required_if' => 'The Annexure 17 is a mandatory field for Directors .',
            'a17_dealer_or_dealer.required_if' => 'The Annexure 17 dealer or dealer field is required when Annexure 17 declarable interest is "Yes".',
            'a17_appointed_director.required_if' => 'The Annexure 17 appointed director field is required when Annexure 17 declarable interest is "Yes".',

            'a17_a_declarable_interest_17_a.required_if' => 'The Annexure 17 declarable interest field is required when Annexure 17 declarable interest is "Yes".',
            'a17_a_nature_of_trading.required_if' => 'The Annexure 17 nature of trading field is required when Annexure 17a declarable interest is "Yes".',
            'a17_a_number_of_shares.required_if' => 'The Annexure 17 number of shares field is required when Annexure 17a declarable interest is "Yes".',
            'a17_a_buyer_or_seller.required_if' => 'The Annexure 17 buyer or seller field is required when Annexure 17a declarable interest is "Yes".',
            'a17_a_date_trading.required_if' => 'The Annexure 17 date of trading field is required when Annexure 17a declarable interest is "Yes".',

            'a17_b_declarable_interest_17.required_if' => 'The Annexure 17b declarable interest field is required when Annexure 17 declarable interest is "Yes".',
            'a17_b_subs_shareholder.required_if' => 'The Annexure 17b subs shareholder field is required when Annexure 17b declarable interest is "Yes".',
            'a17_b_the_nature_of_relationship.required_if' => 'The Annexure 17b nature of relationship field is required when Annexure 17b declarable interest is "Yes".',

            'a18_declarable_interest_18.required_if' => 'The Annexure 18 declarable interest field is required when Annexure 18 name is "finalsubmit".',
            'a18_details.required_if' => 'The Annexure 18 details field is required when Annexure 18 declarable interest is "Yes".',
            'a18_b_nature_of_interest.required_if' => 'The Annexure 18 nature of interest field is required when Annexure 18 declarable interest is "Yes".',
            'a18_b_particulars.required_if' => 'The Annexure 18 particulars field is required when Annexure 18 declarable interest is "Yes".',

            // Add custom messages for other fields here
        ];
    }


    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        // dd($request->all());

        $sessionData = session()->get('user');
        $userid = $sessionData['userid'];
        // return $request;
        // Annexure one
        // try {

        // check if is director and if 17 is filled and submitted
        $checknewuer = CoiUsers::where('id', $userid)->first();

        if ($checknewuer->is_director == 1) {
            // dd($checknewuer->is_director);
            $validateDirector = Validator::make($request->all(), $this->validateFieldsfordirector(), $this->messagesForDirector());
            // dd($validate);

            if ($validateDirector->fails()) {
                // dd('test');

                return back()->with('error', $validateDirector->errors()->first())->withInput();
            }
        }


        // dd($request->exists('a1_declarable_interest'));

        $validate = Validator::make($request->all(), $this->validateFields(), $this->messages());

        if ($validate->fails()) {
            return back()->with('error', $validate->errors()->first())->withInput();
        }

        $checkyes = false;




        $a1_declarable_interest = $request->a1_declarable_interest;

        // Handling directorship fields
        $directorships = [];
        if (
            $request->has('a1_directorship_name_of_business') &&
            $request->has('a1_directorship_nature_of_business')
        ) {
            $directorshipCount = count($request->input('a1_directorship_name_of_business'));
            for ($i = 0; $i < $directorshipCount; $i++) {
                $directorships[] = [
                    'name_of_business' => $request->input('a1_directorship_name_of_business')[$i],
                    'nature_of_business' => $request->input('a1_directorship_nature_of_business')[$i],
                ];
            }
        }

        // Handling dominant fields
        $dominants = [];
        if (
            $request->has('a1_dominant_name_of_business') &&
            $request->has('a1_dominant_nature_of_business')
        ) {
            $dominantCount = count($request->input('a1_dominant_name_of_business'));
            for ($i = 0; $i < $dominantCount; $i++) {
                $dominants[] = [
                    'name_of_business' => $request->input('a1_dominant_name_of_business')[$i],
                    'nature_of_business' => $request->input('a1_dominant_nature_of_business')[$i],
                ];
            }
        }

        // Handling trusteeship fields
        $trusteeships = [];
        if (
            $request->has('a1_trusteeship_name_of_business') &&
            $request->has('a1_trusteeship_nature_of_business')
        ) {
            $trusteeshipCount = count($request->input('a1_trusteeship_name_of_business'));
            for ($i = 0; $i < $trusteeshipCount; $i++) {
                $trusteeships[] = [
                    'name_of_business' => $request->input('a1_trusteeship_name_of_business')[$i],
                    'nature_of_business' => $request->input('a1_trusteeship_nature_of_business')[$i],
                ];
            }
        }
        $a1_participation = $request->a1_participation;
        $a1_other_business = $request->a1_other_business;
        $a1_any_other_business = $request->a1_any_other_business;
        $a1_any_other_interest = $request->a1_any_other_interest;
        $a1_name_of_entity = $request->a1_name_of_entity;
        $a1_additional_information = $request->a1_additional_information;

        $a2_declarable_interest = $request->a2_declarable_interest;
        $a2_nature_of_personal_business_interest = $request->a2_nature_of_personal_business_interest;
        $a2_corporate_or_business_name = $request->a2_corporate_or_business_name;
        $a2_decisions = $request->a2_decisions;
        $a2_independence_and_objectivity = $request->a2_independence_and_objectivity;
        $a2_additional_information_2 = $request->a2_additional_information_2;

        $a3_declarable_interest = $request->a3_declarable_interest;
        $a3_personal_financial_interests = $request->a3_personal_financial_interests;
        $a3_value_personal_financial_interests = $request->a3_value_personal_financial_interests;
        $a3_professional_duties = $request->a3_professional_duties;
        $a3_mtn_business_activities = $request->a3_mtn_business_activities;
        $a3_personal_financial_interests_conflict = $request->a3_personal_financial_interests_conflict;
        $a3_additional_information_3 = $request->a3_additional_information_3;


        $a4_declarable_interest = $request->a4_declarable_interest;
        $a4_nature_of_contracts = $request->a4_nature_of_contracts;
        $a4_personal_gain_received = $request->a4_personal_gain_received;
        $a4_parties_involved = $request->a4_parties_involved;
        $a4_additional_information_4 = $request->a4_additional_information_4;

        $a5_declarable_interest = $request->a5_declarable_interest;
        $a5_nature_of_the_influence = $request->a5_nature_of_the_influence;
        $a5_position_or_authority = $request->a5_position_or_authority;
        $a5_close_associate = $request->a5_close_associate;
        $a5_name_person_or_entity = $request->a5_name_person_or_entity;
        $a5_authority_to_influence = $request->a5_authority_to_influence;
        $a5_additional_information_5 = $request->a5_additional_information_5;

        $a6_declarable_interest = $request->a6_declarable_interest;
        $a6_solicited_investment = $request->a6_solicited_investment;
        $a6_business_solicited_investment = $request->a6_business_solicited_investment;
        $a6_nature_of_soliciting_business = $request->a6_nature_of_soliciting_business;
        $a6_additional_information_6 = $request->a6_additional_information_6;

        $a7_declarable_interest = $request->a7_declarable_interest;
        $a7_proper_authorisation = $request->a7_proper_authorisation;
        $a7_value_or_nature_of_personal_gain = $request->a7_value_or_nature_of_personal_gain;
        $a7_information_was_used = $request->a7_information_was_used;
        $a7_additional_information_7 = $request->a7_additional_information_7;


        $a8_declarable_interest = $request->a8_declarable_interest;
        $a8_commercial_activities = $request->a8_commercial_activities;
        $a8_sourced_or_promoted = $request->a8_sourced_or_promoted;
        $a8_third_parties_involved = $request->a8_third_parties_involved;
        $a8_commercial_activities_gain = $request->a8_commercial_activities_gain;
        $a8_additional_information_8 = $request->a8_additional_information_8;

        $a9_declarable_interest = $request->a9_declarable_interest;
        $a9_whom_you_solicited = $request->a9_whom_you_solicited;
        $a9_competition_with_MTN = $request->a9_competition_with_MTN;
        $a9_additional_information_9 = $request->a9_additional_information_9;


        $a10_declarable_interest = $request->a10_declarable_interest;
        $a10_coi_conduct = $request->a10_coi_conduct;
        $a10_conflict_motivation = $request->a10_conflict_motivation;
        $a10_additional_information_10 = $request->a10_additional_information_10;

        $a11_declarable_interest = $request->a11_declarable_interest;
        $a11_nature_of_declarable_interest = $request->a11_nature_of_declarable_interest;
        $a11_influence_your_judgement = $request->a11_influence_your_judgement;
        $a11_additional_information_11 = $request->a11_additional_information_11;

        $a12_declarable_interest = $request->a12_declarable_interest;
        $a12_decision_making_process = $request->a12_decision_making_process;
        $a12_recuse = $request->a12_recuse;
        $a12_successful_in_securing_employment = $request->a12_successful_in_securing_employment;
        $a12_additional_information_12 = $request->a12_additional_information_12;

        $a13_declarable_interest = $request->a13_declarable_interest;
        $a13_business_relationship = $request->a13_business_relationship;
        $a13_enter_such_business_relationships = $request->a13_enter_such_business_relationships;
        $a13_additional_information_13 = $request->a13_additional_information_13;

        $a14_declarable_interest = $request->a14_declarable_interest;
        $a14_details_of_the_situation = $request->a14_details_of_the_situation;
        $a14_additional_information_14 = $request->a14_additional_information_14;

        $a15_declarable_interest = $request->a15_declarable_interest;
        $a15_employees_involved = $request->a15_employees_involved;
        $a15_relevant_details = $request->a15_relevant_details;
        $a15_additional_information_15 = $request->a15_additional_information_15;

        $a16_declarable_interest = $request->a16_declarable_interest;

        $a16_date_of_establishment_of_legacy_business = $request->a16_date_of_establishment_of_legacy_business;

        $a16_momo_operate = $request->a16_momo_operate;
        $a16_momo_family = $request->a16_momo_family;
        $a16_confidential_corporate_information = $request->a16_confidential_corporate_information;
        $a16_financial_benefit_family = $request->a16_financial_benefit_family;
        $a16_additional_information_16 = $request->a16_additional_information_16;

        $a17_declarable_interest_17 = $request->a17_declarable_interest_17;
        $a17_dealer_or_dealer = $request->a17_dealer_or_dealer;
        $a17_appointed_director = $request->a17_appointed_director;

        $a18_declarable_interest_18 = $request->a17_a_declarable_interest_17_a;

        $a18_nature_of_trading = $request->a17_a_nature_of_trading;
        $a18_number_of_shares = $request->a17_a_number_of_shares;
        $a18_buyer_or_seller = $request->a17_a_buyer_or_seller;
        $a18_date_trading = $request->a17_a_date_trading;

        $a19_declarable_interest_19 = $request->a17_b_declarable_interest_17;
        $a19_subs_shareholder = $request->a17_b_subs_shareholder;
        $a19_the_nature_of_relationship = $request->a17_b_the_nature_of_relationship;

        $a20_declarable_interest_20 = $request->a18_declarable_interest_18;
        $a20_details = $request->a18_details;
        $a20_nature_of_interest = $request->a18_b_nature_of_interest;
        $a20_particulars = $request->a18_b_particulars;


        // return $request->a17_a_declarable_interest_a17_a;

        if (
            $a1_declarable_interest == 'Yes' || $a2_declarable_interest == 'Yes' || $a3_declarable_interest == 'Yes' || $a4_declarable_interest == 'Yes' || $a5_declarable_interest == 'Yes' || $a6_declarable_interest == 'Yes' || $a7_declarable_interest == 'Yes' || $a8_declarable_interest == 'Yes' ||
            $a9_declarable_interest == 'Yes' || $a10_declarable_interest == 'Yes' || $a11_declarable_interest == 'Yes' || $a12_declarable_interest == 'Yes' ||
            $a13_declarable_interest == 'Yes' || $a14_declarable_interest == 'Yes' || $a15_declarable_interest == 'Yes' ||
            $a18_declarable_interest_18 == 'Yes' || $a19_declarable_interest_19 == 'Yes' || $a20_declarable_interest_20 == 'Yes'
        ) {
            $checkyes = true;
        }

        $checkmomo = false;

        if ($a16_declarable_interest == 'Yes') {
            $checkmomo = true;
        }


        // assuming here on that validation passed thus we going ahead to insert

        $my_user = CoiUsers::find($userid);

        $mydata['a1_declarable_interest'] = $a1_declarable_interest ?? null;

        $mydata['a1_directorship'] = json_encode($directorships);
        $mydata['a1_dominant'] = json_encode($dominants);
        $mydata['a1_trusteeship'] = json_encode($trusteeships);

        $mydata['a1_participation'] = $a1_participation ?? null;
        $mydata['a1_other_business'] = $a1_other_business ?? null;
        $mydata['a1_any_other_business'] = $a1_any_other_business ?? null;
        $mydata['a1_any_other_interest'] = $a1_any_other_interest ?? null;
        $mydata['a1_name_of_entity'] = $a1_name_of_entity ?? null;
        $mydata['a1_additional_information'] = $a1_additional_information ?? null;
        $mydata['a2_declarable_interest'] = $a2_declarable_interest ?? null;
        $mydata['a2_nature_of_personal_business_interest'] = $a2_nature_of_personal_business_interest ?? null;
        $mydata['a2_corporate_or_business_name'] = $a2_corporate_or_business_name ?? null;
        $mydata['a2_decisions'] = $a2_decisions ?? null;
        $mydata['a2_independence_and_objectivity'] = $a2_independence_and_objectivity ?? null;
        $mydata['a2_additional_information_2'] = $a2_additional_information_2 ?? null;
        $mydata['a3_declarable_interest'] = $a3_declarable_interest ?? null;
        $mydata['a3_personal_financial_interests'] = $a3_personal_financial_interests ?? null;
        $mydata['a3_value_personal_financial_interests'] = $a3_value_personal_financial_interests ?? null;
        $mydata['a3_professional_duties'] = $a3_professional_duties ?? null;
        $mydata['a3_mtn_business_activities'] = $a3_mtn_business_activities ?? null;
        $mydata['a3_personal_financial_interests_conflict'] = $a3_personal_financial_interests_conflict ?? null;
        $mydata['a3_additional_information_3'] = $a3_additional_information_3 ?? null;
        $mydata['a4_declarable_interest'] = $a4_declarable_interest ?? null;
        $mydata['a4_nature_of_contracts'] = $a4_nature_of_contracts ?? null;
        $mydata['a4_personal_gain_received'] = $a4_personal_gain_received ?? null;
        $mydata['a4_parties_involved'] = $a4_parties_involved ?? null;
        $mydata['a4_additional_information_4'] = $a4_additional_information_4 ?? null;
        $mydata['a5_declarable_interest'] = $a5_declarable_interest ?? null;
        $mydata['a5_nature_of_the_influence'] = $a5_nature_of_the_influence ?? null;
        $mydata['a5_position_or_authority'] = $a5_position_or_authority ?? null;
        $mydata['a5_close_associate'] = $a5_close_associate ?? null;
        $mydata['a5_name_person_or_entity'] = $a5_name_person_or_entity ?? null;
        $mydata['a5_authority_to_influence'] = $a5_authority_to_influence ?? null;
        $mydata['a5_additional_information_5'] = $a5_additional_information_5 ?? null;
        $mydata['a6_declarable_interest'] = $a6_declarable_interest ?? null;
        $mydata['a6_solicited_investment'] = $a6_solicited_investment ?? null;
        $mydata['a6_business_solicited_investment'] = $a6_business_solicited_investment ?? null;
        $mydata['a6_nature_of_soliciting_business'] = $a6_nature_of_soliciting_business ?? null;
        $mydata['a6_additional_information_6'] = $a6_additional_information_6 ?? null;


        $mydata['a7_declarable_interest'] = $a7_declarable_interest ?? null;
        $mydata['a7_proper_authorisation'] = $a7_proper_authorisation ?? null;
        $mydata['a7_value_or_nature_of_personal_gain'] = $a7_value_or_nature_of_personal_gain ?? null;
        $mydata['a7_information_was_used'] = $a7_information_was_used ?? null;
        $mydata['a7_additional_information_7'] = $a7_additional_information_7 ?? null;
        $mydata['a8_declarable_interest'] = $a8_declarable_interest ?? null;
        $mydata['a8_commercial_activities'] = $a8_commercial_activities ?? null;
        $mydata['a8_sourced_or_promoted'] = $a8_sourced_or_promoted ?? null;
        $mydata['a8_third_parties_involved'] = $a8_third_parties_involved ?? null;
        $mydata['a8_commercial_activities_gain'] = $a8_commercial_activities_gain ?? null;
        $mydata['a8_additional_information_8'] = $a8_additional_information_8 ?? null;




        $mydata['a9_declarable_interest'] = $a9_declarable_interest ?? null;
        $mydata['a9_whom_you_solicited'] = $a9_whom_you_solicited ?? null;
        $mydata['a9_competition_with_MTN'] = $a9_competition_with_MTN ?? null;
        $mydata['a9_additional_information_9'] = $a9_additional_information_9 ?? null;
        $mydata['a10_declarable_interest'] = $a10_declarable_interest ?? null;
        $mydata['a10_coi_conduct'] = $a10_coi_conduct ?? null;
        $mydata['a10_conflict_motivation'] = $a10_conflict_motivation ?? null;
        $mydata['a10_additional_information_10'] = $a10_additional_information_10 ?? null;
        $mydata['a11_declarable_interest'] = $a11_declarable_interest ?? null;
        $mydata['a11_nature_of_declarable_interest'] = $a11_nature_of_declarable_interest ?? null;
        $mydata['a11_influence_your_judgement'] = $a11_influence_your_judgement ?? null;
        $mydata['a11_additional_information_11'] = $a11_additional_information_11 ?? null;
        $mydata['a12_declarable_interest'] = $a12_declarable_interest ?? null;
        $mydata['a12_decision_making_process'] = $a12_decision_making_process ?? null;
        $mydata['a12_recuse'] = $a12_recuse ?? null;
        $mydata['a12_successful_in_securing_employment'] = $a12_successful_in_securing_employment ?? null;
        $mydata['a12_additional_information_12'] = $a12_additional_information_12 ?? null;
        $mydata['a13_declarable_interest'] = $a13_declarable_interest ?? null;
        $mydata['a13_business_relationship'] = $a13_business_relationship ?? null;
        $mydata['a13_enter_such_business_relationships'] = $a13_enter_such_business_relationships ?? null;
        $mydata['a13_additional_information_13'] = $a13_additional_information_13 ?? null;
        $mydata['a14_declarable_interest'] = $a14_declarable_interest ?? null;
        $mydata['a14_details_of_the_situation'] = $a14_details_of_the_situation ?? null;
        $mydata['a14_enter_such_business_relationships'] = $a14_enter_such_business_relationships ?? null;
        $mydata['a14_additional_information_14'] = $a14_additional_information_14 ?? null;
        $mydata['a15_declarable_interest'] = $a15_declarable_interest ?? null;
        $mydata['a15_employees_involved'] = $a15_employees_involved ?? null;
        $mydata['a15_relevant_details'] = $a15_relevant_details ?? null;
        $mydata['a15_additional_information_15'] = $a15_additional_information_15 ?? null;
        $mydata['a16_declarable_interest'] = $a16_declarable_interest ?? null;

        $mydata['a16_date_of_establishment_of_legacy_business'] = $a16_date_of_establishment_of_legacy_business ?? null;

        $mydata['a16_purpose_of_the_annexure'] = $a16_purpose_of_the_annexure ?? null;
        $mydata['a16_mobile_money_merchant_business'] = $a16_mobile_money_merchant_business ?? null;
        $mydata['a16_momo_operate'] = $a16_momo_operate ?? null;
        $mydata['a16_momo_family'] = $a16_momo_family ?? null;
        $mydata['a16_confidential_corporate_information'] = $a16_confidential_corporate_information ?? null;
        $mydata['a16_financial_benefit_family'] = $a16_financial_benefit_family ?? null;
        $mydata['a16_additional_information_16'] = $a16_additional_information_16 ?? null;
        $mydata['a17_declarable_interest_17'] = $a17_declarable_interest_17 ?? null;
        $mydata['a17_dealer_or_dealer'] = $a17_dealer_or_dealer ?? null;
        $mydata['a17_appointed_director'] = $a17_appointed_director ?? null;
        $mydata['a18_declarable_interest_18'] = $a18_declarable_interest_18 ?? null;
        $mydata['a18_nature_of_trading'] = $a18_nature_of_trading ?? null;
        $mydata['a18_number_of_shares'] = $a18_number_of_shares ?? null;
        $mydata['a18_buyer_or_seller'] = $a18_buyer_or_seller ?? null;
        $mydata['a18_date_trading'] = $a18_date_trading ?? null;
        $mydata['a19_declarable_interest_19'] = $a19_declarable_interest_19 ?? null;
        $mydata['a19_subs_shareholder'] = $a19_subs_shareholder ?? null;
        $mydata['a19_the_nature_of_relationship'] = $a19_the_nature_of_relationship ?? null;
        $mydata['a20_nature_of_interest'] = $a20_nature_of_interest ?? null;
        $mydata['a20_particulars'] = $a20_particulars ?? null;
        $mydata['a20_declarable_interest_20'] = $a20_declarable_interest_20 ?? null;
        $mydata['a20_details'] = $a20_details ?? null;
        $mydata['momoconflict'] = $checkmomo;
        // ]);
        // dd($request->all());

        if ($request->specialSave && $request->specialSave == 'create_new_record') {
            $mydata['name'] = $my_user->name;
            $mydata['email'] = $my_user->email;
            $mydata['phone'] = $my_user->phone;
            $mydata['coi_status'] = 'Agree';
            $mydata['status'] = 'Pending';
            $sessionUser = session()->get('user');
            $clause = $sessionUser['type'] == 'phone' ? [['phone', 'like', '%' . substr($sessionUser['phone'], -9) . '%']] : ['email' => $sessionUser['email']];
            $curr_record = CoiUsers::where('id', $userid)->whereYear('created_at', date('Y'))->first();
            if ($curr_record) {
                $curr_record->update($mydata);
            } else {
                CoiUsers::create($mydata);
            }
        } else {
            // $mydata['coi_status'] = $my_user->coi_status;
            $my_user->update($mydata);
        }

        // dd($request->all());
        // dd($insert);
        $user = CoiUsers::where('id', $userid)->first();
        // dd($user->coeForm);


        if ($request->input('savemetype') === 'saveforlater') {

            // $last_record = CoiUsers::where('phone', $my_user->phone)->orderBy('id', 'desc')
            // ->latest()->first();
            $sessionUser = session()->get('user');
            $clause = $sessionUser['type'] == 'phone' ? [['phone', 'like', '%' . substr($sessionUser['phone'], -9) . '%']] : ['email' => $sessionUser['email']];

            $last_record = CoiUsers::where('id', $userid)->orderBy('id', 'desc')->update(['status' => 'Pending']);

            // $last_record->update(['status' => 'Pending']);

            $user->log('Saved COI For Later');

            Log::channel('coi')->info($user->name . " saved the following request for later : " . json_encode($request->all()));
            return redirect()->route('saveforlater')->with('success', 'Form Successfully Saved For Later');
        } elseif ($request->input('savemetype') === 'finalsubmit' && $a1_declarable_interest && $a2_declarable_interest && $a3_declarable_interest && $a4_declarable_interest && $a5_declarable_interest && $a6_declarable_interest && $a7_declarable_interest && $a8_declarable_interest && $a9_declarable_interest && $a10_declarable_interest && $a11_declarable_interest && $a12_declarable_interest && $a13_declarable_interest && $a14_declarable_interest && $a15_declarable_interest && $a16_declarable_interest && $a20_declarable_interest_20 !== null) {

            $sessionUser = session()->get('user');
            // $clause = $sessionUser['type'] == 'phone' ? [['phone', 'like', '%' . substr($sessionUser['phone'], -9) . '%']] : ['email' => $sessionUser['email']];
            $getuser = CoiUsers::query()->where('id', $userid)->update([
                'status' => 'Completed',
            ]);



            if ($checkyes == false) {
                // if no yes in entire form
                $user->log('Completed COI ');
                Log::channel('coi')->info($user->name . " Completed the coi & annexures without conflicts  by submitting the following request : " . json_encode($request->all()));


                $sessionUser = session()->get('user');
                $clause = $sessionUser['type'] == 'phone' ? [['phone', 'like', '%' . substr($sessionUser['phone'], -9) . '%']] : ['email' => $sessionUser['email']];
                $getuser = CoiUsers::query()->where('id', $userid)->update([
                    'conflict' => '0',
                ]);

                $data = [
                    'name' => $user->name,
                    'conflict' => 'no',
                    'email' => $user->email,
                    'dept' => $user->dept,
                    'division' => $user->division,
                    'created' => date('d M, Y g:i a', strtotime($user->updated_at))
                ];

                    if ($user->phone !== null) {
                        $number = $user->phone;
                        $source = 'MTN CoI-CoE';
                        $message = "Hello " . $user->name . ',' . urlencode('\r\nThank you for signing off on the Code of Ethics and submitting your Conflict of Interest Declarations for this year.\r\nThank You.');
                        //
                        $smsname = env('SMS_NAME');
                        $smspass = env('SMS_PASSWORD');

                        $url = "https://test.mtnmessenger.com/api/sms?username=" . $smsname . "&password=" . $smspass . "&source=$source&destination=" . $number . "&message=" . $message;

                        $client = new GuzzleClient();

                        $request = $client->request('GET', $url, [
                            'http_errors' => false,
                        ]);
                        $response = json_decode($request->getBody()->getContents(), true);
                        Log::channel('coi')->info('sending conflict sms to ' . $user->phone . ' response from sms is ' . $response['message']);
                    }

                    $this->sendmail('SCANCOM PLC (MTN Ghana) Conflict of Interest Policy & Code of Ethics', $user->email, "Hello " . $user->name . ",\\n Thank you for signing off on the Code of Ethics and submitting your Conflict of Interest Declarations for this year.\\n\\n Thanks,\\nMTN CoI-CoE 2023");
                $buttonClicked = request()->input('proceedbtn');
                // dd($buttonClicked);
                if ($buttonClicked === 'proceed') {
                    return redirect()->route('coe.page', $userid);
                } else {
                    return redirect()->route('completed-coi')->with('success', 'Thanks for successfully submitting your COI Form.');
                }
            } elseif ($checkyes == true) {
                // if yes in form
                $user->log('Completed COI ');
                Log::channel('coi')->info($user->name . " Completed the coi & annexures with conflict by submitting the following request : " . json_encode($request->all()));
                    if ($user->email !== null) {
                        $data = [
                            'name' => $user->name,
                            'conflict' => 'yes',
                            'email' => $user->email,
                            'dept' => $user->dept,
                            'division' => $user->division,
                            'created' => date('d M, Y g:i a', strtotime($user->updated_at))
                        ];

                        $this->sendmail('SCANCOM PLC (MTN Ghana) Conflict of Interest Policy & Code of Ethics', $user->email, "Hello " . $user->name . ",\\nThank you for signing off on the Code of Ethics and submitting your Conflict of Interest Declarations for this year.\\n\\n Thanks,\\nMTN CoI-CoE 2023");
                    }
                    //////////////////////////
                    if ($user->phone !== null) {
                        $number = $user->phone;
                        $source = 'MTN CoI-CoE';
                        $message = "Hello " . $user->name . ',' . urlencode('\r\nThank you for signing off on the Code of Ethics and submitting your Conflict of Interest Declarations for this year.');
                        //
                        $smsname = env('SMS_NAME');
                        $smspass = env('SMS_PASSWORD');

                        $url = "https://test.mtnmessenger.com/api/sms?username=" . $smsname . "&password=" . $smspass . "&source=$source&destination=" . $number . "&message=" . $message;

                        $client = new GuzzleClient();

                        $request = $client->request('GET', $url, [
                            'http_errors' => false,
                        ]);
                        $response = json_decode($request->getBody()->getContents(), true);
                        Log::channel('coi')->info('sending conflict sms to ' . $user->phone . ' response from sms is ' . $response['message']);
                    }
                //////////////////////////
                CoiUsers::where('id', $userid)->update([
                    'conflict' => '1',
                ]);
                $buttonClicked = request()->input('proceedbtn');
                // dd($buttonClicked);
                if ($buttonClicked === 'proceed') {
                    return redirect()->route('coe.page', $userid);
                } else {
                    return redirect()->route('completed-coi')->with('success', 'Thanks for successfully submitting your COI Form.');
                }
            }
        } elseif ($request->input('savemetype') === 'updateform') {
            // return $user;
            $movetoold = OldData::create($user->toArray());
            // dd($insert);


            $sessionUser = session()->get('user');
            $clause = $sessionUser['type'] == 'phone' ? [['phone', 'like', '%' . substr($sessionUser['phone'], -9) . '%']] : ['email' => $sessionUser['email']];
            $getuser = CoiUsers::query()->where('id', $userid)->latest()->first()->update([
                'status' => 'Updated',
            ]);


            if ($checkyes == false) {
                $sessionUser = session()->get('user');
                $clause = $sessionUser['type'] == 'phone' ? [['phone', 'like', '%' . substr($sessionUser['phone'], -9) . '%']] : ['email' => $sessionUser['email']];
                $getuser = CoiUsers::query()->where('id', $userid)->update([
                    'conflict' => '0',
                ]);
                // if no yes in entire form
                $user->log('Updated COI Form');
                Log::channel('coi')->info($user->name . " Updated the  annexures without conflict by submitting the following request : " . json_encode($request->all()));
                $data = [
                    'name' => $user->name,
                    'conflict' => 'no',
                    'email' => $user->email,
                    'dept' => $user->dept,
                    'division' => $user->division,
                    'created' => date('d M, Y g:i a', strtotime($user->updated_at))
                ];

                // $adminmail = env('AdminEmail');
                // $this->sendmail('SCANCOM PLC (MTN Ghana) Conflict of Interest Policy & Code of Ethics',$adminmail,"Hello Admin,\\n ".$user->name."from ".$user->dept."department and ".$user->division." division has Updated and submitted his/her COI form at ".date('d M, Y g:i a',strtotime($user->updated_at))." for review.\\n Kindly visit the Admin portal of the MTN COI to assess this form.\\n\\n Thanks,\\n MTN COI 2023");

                    $this->sendmail('SCANCOM PLC (MTN Ghana) Conflict of Interest Policy & Code of Ethics', $user->email, "Hello " . $user->name . ",\\n  Thank you for signing off on the Code of Ethics and submitting your Conflict of Interest Declarations for this year \\n\\n Thanks,\\nMTN CoI-CoE 2023");

                    if ($user->phone !== null) {
                        $number = $user->phone;
                        $source = 'MTN CoI-CoE';
                        $message = "Hello " . $user->name . ',' . urlencode('\r\n Thank you for signing off on the Code of Ethics and submitting your Conflict of Interest Declarations for this year.\r\nThank You.');
                        //
                        $smsname = env('SMS_NAME');
                        $smspass = env('SMS_PASSWORD');

                        $url = "https://test.mtnmessenger.com/api/sms?username=" . $smsname . "&password=" . $smspass . "&source=$source&destination=" . $number . "&message=" . $message;

                        $client = new GuzzleClient();

                        $request = $client->request('GET', $url, [
                            'http_errors' => false,
                        ]);
                        $response = json_decode($request->getBody()->getContents(), true);
                        Log::channel('coi')->info('sending conflict sms to ' . $user->phone . ' response from sms is ' . $response['message']);
                    }
                $buttonClicked = request()->input('proceedbtn');
                // dd($buttonClicked);
                if ($buttonClicked === 'proceed') {
                    return redirect()->route('coe.page', $userid);
                } else {
                    return redirect()->route('completed-coi')->with('success', 'Thanks for successfully submitting your COI Form.');
                }
            } elseif ($checkyes == true) {
                // if yes in form
                $user->log('Updated COI Form');
                Log::channel('coi')->info($user->name . " Updated the  annexures with conflict by submitting the following request : " . json_encode($request->all()));

                    if ($user->email !== null) {
                        $data = [
                            'name' => $user->name,
                            'conflict' => 'yes',
                            'email' => $user->email,
                            'dept' => $user->dept,
                            'division' => $user->division,
                            'created' => date('d M, Y g:i a', strtotime($user->updated_at))
                        ];
                        // $adminmail = env('AdminEmail');
                        //           $this->sendmail('SCANCOM PLC (MTN Ghana) Conflict of Interest Policy & Code of Ethics',$adminmail,"Hello Admin,\\n ".$user->name."from ".$user->dept."department and ".$user->division." division has Updated and submitted his/her COI form at ".date('d M, Y g:i a',strtotime($user->updated_at))." for review.\\n Kindly visit the Admin portal of the MTN COI to assess this form.\\n\\n Thanks,\\n MTN COI 2023");

                        $this->sendmail('SCANCOM PLC (MTN Ghana) Conflict of Interest Policy & Code of Ethics', $user->email, "Hello " . $user->name . ",\\n  Thank you for signing off on the Code of Ethics and submitting your Conflict of Interest Declarations for this year.\\n\\n Thanks,\\nMTN CoI-CoE 2023");
                        // COICompletionJob::dispatch($data);
                        // AdminCOICompletionJob::dispatch($data);

                    }
                    ////////////////////////////
                    if ($user->phone !== null) {
                        $number = $user->phone;
                        $source = 'MTN CoI-CoE';
                        $message = "Hello " . $user->name . ',' . urlencode('\r\n Thank you for signing off on the Code of Ethics and submitting your Conflict of Interest Declarations for this year.\r\nThank You.');
                        //
                        $smsname = env('SMS_NAME');
                        $smspass = env('SMS_PASSWORD');

                        $url = "https://test.mtnmessenger.com/api/sms?username=" . $smsname . "&password=" . $smspass . "&source=$source&destination=" . $number . "&message=" . $message;

                        $client = new GuzzleClient();

                        $request = $client->request('GET', $url, [
                            'http_errors' => false,
                        ]);
                        $response = json_decode($request->getBody()->getContents(), true);
                        Log::channel('coi')->info('sending conflict sms to ' . $user->phone . ' response from sms is ' . $response['message']);
                    }
                /////////////////////////
                CoiUsers::where('id', $userid)->update([
                    'conflict' => '1',
                ]);
                $buttonClicked = request()->input('proceedbtn');
                // dd($buttonClicked);
                if ($buttonClicked === 'proceed') {
                    return redirect()->route('coe.page', $userid);
                } else {
                    return redirect()->route('completed-coi')->with('success', 'Thanks for successfully submitting your CoI Form.');
                }
            }
        } elseif ($request->input('savemetype') === 'updatefromlastyear') {
            // return $user;
            $movetoold = OldData::create($user->toArray());
            // dd($insert);


            $sessionUser = session()->get('user');
            $clause = $sessionUser['type'] == 'phone' ? [['phone', 'like', '%' . substr($sessionUser['phone'], -9) . '%']] : ['email' => $sessionUser['email']];
            $getuser = CoiUsers::query()->where('id', $userid)->update([
                'status' => 'UpdatedFromLastYear',
                'coi_status' => 'agree',

            ]);


            if ($checkyes == false) {
                $sessionUser = session()->get('user');
                $clause = $sessionUser['type'] == 'phone' ? [['phone', 'like', '%' . substr($sessionUser['phone'], -9) . '%']] : ['email' => $sessionUser['email']];
                $getuser = CoiUsers::query()->where('id', $userid)->update([
                    'conflict' => '0',
                ]);
                // if no yes in entire form
                $user->log('Updated COI Form');
                Log::channel('coi')->info($user->name . " Updated the  annexures without conflict by submitting the following request : " . json_encode($request->all()));
                $data = [
                    'name' => $user->name,
                    'conflict' => 'no',
                    'email' => $user->email,
                    'dept' => $user->dept,
                    'division' => $user->division,
                    'created' => date('d M, Y g:i a', strtotime($user->updated_at))
                ];

                // $adminmail = env('AdminEmail');
                // $this->sendmail('SCANCOM PLC (MTN Ghana) Conflict of Interest Policy & Code of Ethics',$adminmail,"Hello Admin,\\n ".$user->name."from ".$user->dept."department and ".$user->division." division has Updated and submitted his/her COI form at ".date('d M, Y g:i a',strtotime($user->updated_at))." for review.\\n Kindly visit the Admin portal of the MTN COI to assess this form.\\n\\n Thanks,\\n MTN COI 2023");

                if ($user->email !== null) {
                    $data = [
                        'name' => $user->name,
                        'conflict' => 'yes',
                        'email' => $user->email,
                        'dept' => $user->dept,
                        'division' => $user->division,
                        'created' => date('d M, Y g:i a', strtotime($user->updated_at))
                    ];
                    // $adminmail = env('AdminEmail');
                    //           $this->sendmail('SCANCOM PLC (MTN Ghana) Conflict of Interest Policy & Code of Ethics',$adminmail,"Hello Admin,\\n ".$user->name."from ".$user->dept."department and ".$user->division." division has Updated and submitted his/her COI form at ".date('d M, Y g:i a',strtotime($user->updated_at))." for review.\\n Kindly visit the Admin portal of the MTN COI to assess this form.\\n\\n Thanks,\\n MTN COI 2023");

                    $this->sendmail('SCANCOM PLC (MTN Ghana) Conflict of Interest Policy & Code of Ethics', $user->email, "Hello " . $user->name . ",\\n  Thank you for signing off on the Code of Ethics and submitting your Conflict of Interest Declarations for this year.\\n\\n Thanks,\\nMTN CoI-CoE 2023");
                    // COICompletionJob::dispatch($data);
                    // AdminCOICompletionJob::dispatch($data);

                }
                ////////////////////////////
                if ($user->phone !== null) {
                    $number = $user->phone;
                    $source = 'MTN CoI-CoE';
                    $message = "Hello " . $user->name . ',' . urlencode('\r\n Thank you for signing off on the Code of Ethics and submitting your Conflict of Interest Declarations for this year.\r\nThank You.');
                    //
                    $smsname = env('SMS_NAME');
                    $smspass = env('SMS_PASSWORD');

                    $url = "https://test.mtnmessenger.com/api/sms?username=" . $smsname . "&password=" . $smspass . "&source=$source&destination=" . $number . "&message=" . $message;

                    $client = new GuzzleClient();

                    $request = $client->request('GET', $url, [
                        'http_errors' => false,
                    ]);
                    $response = json_decode($request->getBody()->getContents(), true);
                    Log::channel('coi')->info('sending conflict sms to ' . $user->phone . ' response from sms is ' . $response['message']);
                }
                $buttonClicked = request()->input('proceedbtn');
                // dd($buttonClicked);
                if ($buttonClicked === 'proceed') {
                    return redirect()->route('coe.page');
                } else {
                    return redirect()->route('completed-coi')->with('success', 'Thanks for successfully submitting your COI Form.');
                }
            } elseif ($checkyes == true) {
                // if yes in form
                $user->log('Updated COI Form');
                Log::channel('coi')->info($user->name . " Updated the  annexures with conflict by submitting the following request : " . json_encode($request->all()));
                if ($user->coeForm) {

                    if ($user->email !== null) {
                        $data = [
                            'name' => $user->name,
                            'conflict' => 'yes',
                            'email' => $user->email,
                            'dept' => $user->dept,
                            'division' => $user->division,
                            'created' => date('d M, Y g:i a', strtotime($user->updated_at))
                        ];
                        // $adminmail = env('AdminEmail');
                        //           $this->sendmail('SCANCOM PLC (MTN Ghana) Conflict of Interest Policy & Code of Ethics',$adminmail,"Hello Admin,\\n ".$user->name."from ".$user->dept."department and ".$user->division." division has Updated and submitted his/her COI form at ".date('d M, Y g:i a',strtotime($user->updated_at))." for review.\\n Kindly visit the Admin portal of the MTN COI to assess this form.\\n\\n Thanks,\\n MTN COI 2023");

                        $this->sendmail('SCANCOM PLC (MTN Ghana) Conflict of Interest Policy & Code of Ethics', $user->email, "Hello " . $user->name . ",\\n  Thank you for signing off on the Code of Ethics and submitting your Conflict of Interest Declarations for this year.\\n\\n Thanks,\\nMTN CoI-CoE 2023");
                        // COICompletionJob::dispatch($data);
                        // AdminCOICompletionJob::dispatch($data);

                    }
                    ////////////////////////////
                    if ($user->phone !== null) {
                        $number = $user->phone;
                        $source = 'MTN CoI-CoE';
                        $message = "Hello " . $user->name . ',' . urlencode('\r\n Thank you for signing off on the Code of Ethics and submitting your Conflict of Interest Declarations for this year.\r\nThank You.');
                        //
                        $smsname = env('SMS_NAME');
                        $smspass = env('SMS_PASSWORD');

                        $url = "https://test.mtnmessenger.com/api/sms?username=" . $smsname . "&password=" . $smspass . "&source=$source&destination=" . $number . "&message=" . $message;

                        $client = new GuzzleClient();

                        $request = $client->request('GET', $url, [
                            'http_errors' => false,
                        ]);
                        $response = json_decode($request->getBody()->getContents(), true);
                        Log::channel('coi')->info('sending conflict sms to ' . $user->phone . ' response from sms is ' . $response['message']);
                    }
                }
                /////////////////////////
                $sessionUser = session()->get('user');
                $clause = $sessionUser['type'] == 'phone' ? [['phone', 'like', '%' . substr($sessionUser['phone'], -9) . '%']] : ['email' => $sessionUser['email']];
                $getuser = CoiUsers::query()->where('id', $userid)->update([
                    'conflict' => '1',
                ]);
                $buttonClicked = request()->input('proceedbtn');
                // dd($buttonClicked);
                if ($buttonClicked === 'proceed') {
                    return redirect()->route('coe.page', $userid);
                } else {
                    return redirect()->route('completed-coi')->with('success', 'Thanks for successfully submitting your CoI Form.');
                }
            }
        } else {

            $sessionUser = session()->get('user');
            $clause = $sessionUser['type'] == 'phone' ? [['phone', 'like', '%' . substr($sessionUser['phone'], -9) . '%']] : ['email' => $sessionUser['email']];
            $getuser = CoiUsers::query()->where('id', $userid)->update([
                'status' => 'Pending',
            ]);

            $user->log('Saved COI For Later');

            Log::channel('coi')->info($user->name . " saved the following request for later : " . json_encode($request->all()));
            return redirect()->route('saveforlater')->with('success', 'Form Successfully Saved For Later');
        }
    }

    public function storeCoe(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'agreed' => 'nullable|boolean',
            'coi_user_id' => 'required|unique:coe_forms',
        ],
            [
                'coi_user_id.unique' => 'You have already submitted this record.',
            ]);

        if ($validator->fails()) {
            return response()->json([
                'code' => 401,
                'status' => 'error',
                'message' => 'validation error',
                'data' => $validator->errors(),
            ]);
        }
        $currentYear = Carbon::now()->year;

        $sessionUser = session()->get('user');
        $userid = $sessionUser['userid'];

        $user = CoiUsers::where('id', $userid)->first();

        // dd($user);


        // DB::select("SELECT email FROM `coi_users` WHERE dept IS NOT NULL AND deleted_at IS NULL AND coi_status IS NULL AND status IS NULL AND YEAR(created_at) = $current_year");

        $userPending = CoiUsers::where('id', $userid)
            ->whereNotNull('dept')
            ->whereNull('deleted_at')
            ->whereNull('coi_status')
            ->whereNull('status')
            ->whereYear('created_at', $currentYear)->first();


        $coe = new CoeForm();
        $coe->agreed = $request->input('agreed');
        $coe->coi_user_id = $request->input('coi_user_id');


        $show_modal = false;

        if ($userPending) {
            $show_modal = true;
        }

        // dd($show_modal);

        $coe->save();
        $user->log('Completed COE');
        Log::channel('coi')->info($user->name . " Completed COE : " . json_encode($request->all()));
        if ($user->status == 'Completed' || $user->status == 'Updated' || $user->status == 'UpdatedFromLastYear') {
            if ($user->email !== null) {
                $data = [
                    'name' => $user->name,
                    'conflict' => 'yes',
                    'email' => $user->email,
                    'dept' => $user->dept,
                    'division' => $user->division,
                    'created' => date('d M, Y g:i a', strtotime($user->updated_at))
                ];
                // AdminCOICompletionJob::dispatch($data);
                $this->sendmail('SCANCOM PLC (MTN Ghana) Conflict of Interest Policy & Code of Ethics', $user->email, "Hello " . $user->name . ",\\nThank you for signing off on the Code of Ethics and submitting your Conflict of Interest Declarations for this year.\\n\\n Thanks,\\nMTN CoI-CoE 2023");
                // COICompletionJob::dispatch($data);
            }
            //////////////////////////
            if ($user->phone !== null) {
                $number = $user->phone;

                // dd($number);
                $source = 'MTN CoI-CoE';
                $message = "Hello " . $user->name . ',' . urlencode('\r\nThank you for signing off on the MTN Code Of Ethics.
                To complete the process, kindly proceed to submit your Conflict of Interest declaration for this year.');
                //
                $smsname = env('SMS_NAME');
                $smspass = env('SMS_PASSWORD');

                $url = "https://test.mtnmessenger.com/api/sms?username=" . $smsname . "&password=" . $smspass . "&source=$source&destination=" . $number . "&message=" . $message;

                $client = new GuzzleClient();

                $request = $client->request('GET', $url, [
                    'http_errors' => false,
                ]);
                $response = json_decode($request->getBody()->getContents(), true);
                Log::channel('coi')->info('sending conflict sms to ' . $user->phone . ' response from sms is ' . $response['message']);
            }
        }


        return response()->json([
            'code' => 200,
            'status' => 'success',
            'message' => 'successfully submitted ',
            'data' => 'success',
            'show_my_modal' => $show_modal
        ]);

    }




    public function storeCoeOld(Request $request)
    {
        // dd($request->all());
        $validated = $request->validate([
            'agreed' => 'nullable|boolean',
            'coi_user_id' => 'required|unique:coe_forms',
        ], [
            'coi_user_id.unique' => 'You have already submitted this record.',
        ]);
        $sessionUser = session()->get('user');
        $userid = $sessionUser['userid'];

        $user = CoiUsers::where('id', $userid)->first();

        $coe = new CoeForm();
        $coe->agreed = $request->input('agreed');
        $coe->coi_user_id = $request->input('coi_user_id');

        $coe->save();

        if ($user->status == 'Completed' || $user->status == 'Updated' || $user->status == 'UpdatedFromLastYear') {
            if ($user->email !== null) {
                $data = [
                    'name' => $user->name,
                    'conflict' => 'yes',
                    'email' => $user->email,
                    'dept' => $user->dept,
                    'division' => $user->division,
                    'created' => date('d M, Y g:i a', strtotime($user->updated_at))
                ];
                // AdminCOICompletionJob::dispatch($data);
                $this->sendmail('SCANCOM PLC (MTN Ghana) Conflict of Interest Policy & Code of Ethics', $user->email, "Hello " . $user->name . ",\\nThank you for signing off on the Code of Ethics and submitting your Conflict of Interest Declarations for this year.\\n\\n Thanks,\\nMTN CoI-CoE 2023");
                // COICompletionJob::dispatch($data);
            }
            //////////////////////////
            if ($user->phone !== null) {
                $number = $user->phone;
                $source = 'MTN CoI-CoE';
                $message = "Hello " . $user->name . ',' . urlencode('\r\nThank you for signing off on the MTN Code Of Ethics.
                To complete the process, kindly proceed to submit your Conflict of Interest declaration for this year.');
                //
                $smsname = env('SMS_NAME');
                $smspass = env('SMS_PASSWORD');

                $url = "https://test.mtnmessenger.com/api/sms?username=" . $smsname . "&password=" . $smspass . "&source=$source&destination=" . $number . "&message=" . $message;

                $client = new GuzzleClient();

                $request = $client->request('GET', $url, [
                    'http_errors' => false,
                ]);
                $response = json_decode($request->getBody()->getContents(), true);
                Log::channel('coi')->info('sending conflict sms to ' . $user->phone . ' response from sms is ' . $response['message']);
            }
        }

        $responseData = [
            'success' => true,
            'message' => 'Form submitted successfully!',
            'user' => $user, // You can include additional user data if needed
            // Add other data to include in the response...
        ];

        // return response()->json($responseData);
        $buttonClicked = request()->input('proceedbtn');
        if ($buttonClicked == 'proceed') {
            return redirect()->route('landing-page-modal', $userid);
        } else {
            return redirect()->route('landing.page');
        }
    }

}
