<?php

namespace App;

class CollectionManger
{

    public static function assignCollectionAdvisor($id){

        $ConsumerApplicationElement = ConsumerApplicationElement::where('application_id', $id)->first(['collection_advisor']);
        if (isset($ConsumerApplicationElement->collection_advisor) && $ConsumerApplicationElement->collection_advisor == 0) {
            $consumerApplication = ConsumerApplication::where('id', $id)->first(['permanent_address_pincode']);
            if (isset($consumerApplication->permanent_address_pincode) && !empty($consumerApplication->permanent_address_pincode)) {
                $zoneId = \DB::table("zones")->where('pincodes', 'like', '%' . $consumerApplication->permanent_address_pincode . '%')->first(['id']);
                if (isset($zoneId->id)) {
                    $zoneData = User::whereRaw("FIND_IN_SET($zoneId->id,zones)")->get(['id','user_type']);

                    $assignedData = [];
                    foreach ($zoneData as $zoneItem) {
                        if (isset($zoneItem->id)) {
                            $is_zone_required = UserPermissions::where('user_type_id', $zoneItem->user_type)->where('permissions', 'LIKE', '%Zone_Level_Restriction|-20%')->first(['id']);
                            if (isset($is_zone_required->id)) {
                                $_consumerApplicationElement = ConsumerApplicationElement::where('collection_advisor', $zoneItem->id)->count();
                                $assignedData[$zoneItem->id] = $_consumerApplicationElement;
                            }
                        }
                    }

                    if ($assignedData) {

                        asort($assignedData);

                        $collection_advisor = array_keys($assignedData)[0];
                        ConsumerApplicationElement::where('application_id', $id)->update(['collection_advisor' => $collection_advisor]);
                    }
                }
            }
        }
    }
}
