SkillGroupController.php 8.33 KB
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Models\SkillGroup;
use App\Models\User;
use Auth;
use Input;
use Config;
use Session;
use DB;


class SkillGroupController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */

    public function __construct()
    {
      $this->middleware('auth');
      $this->middleware('module_access');
    }


    public function index()
    {
        $data['skill_group']= SkillGroup::select("*")->get();
        return view("layout.module.skillgroup.index", $data);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $allusers=User::select('username')->where('status','=','Active')->get();

        foreach($allusers as $alluser)
        {          
            $username[] = $alluser->username;
        }
        if(isset($username))$data['username'] = $username;
        return view("layout.module.skillgroup.create", $data);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $action = Input::get("action");

        if($action == 'isExists'){
            $plan = Input::get("skillgroup");
            
            $exists=SkillGroup::where("group_name","=",$plan)->first();

            if($exists){
                return "true";
            }else{
                return "false";
            }
        }

        if($action == 'createSkillGroup'){
            $plan = Input::get("skillgroup");
            $userList = Input::get("username");
            $skillgroup = SkillGroup::create([
                'group_name' => $plan,
                'created_at' => date("Y-m-d H:i:s"),
                'updated_at' => date("Y-m-d H:i:s"),
                'users_list' => ",".$userList
            ]);

            return;
        }

        if($action == 'updateSkillgroup'){
         $skillId = Input::get("SkillId");
         $groupname= Input::get("skillgroup");
         $user_selected = Input::get("selected");
         $hrmsdata['clientsownerlist'] = array();
         $old_user_selected=DB::table('skill_group')->select('users_list','clients')->where('id',$skillId)->first();
         $old_usersArray=explode(",", $old_user_selected->users_list);
         $old_userscleints=explode(",",$old_user_selected->clients);
         if($user_selected!='null'){
            $user_selectedArray = explode(",", ",".$user_selected);
        }else{
            $user_selectedArray = array();
        }
        $removed_userArray=array_diff($old_usersArray, $user_selectedArray);
        $added_userArray=array_diff($user_selectedArray, $old_usersArray);
            /*print_r($added_userArray);
            exit();*/
            if($added_userArray){
                foreach($added_userArray as $added_user){
                    $newUserClients=DB::table('skill_group')->select('clients','users_list')->where('group_name','=',$groupname)->where('clients','!=','')->first();
                    /*print_r($added_user);
                    exit();*/
                    if($newUserClients){

                        $client_list = explode(",",$newUserClients->clients);
                        foreach ($client_list as $clientValue) {
                            /*echo $clientValue;
                            exit();*/
                            $usercampaign=User::where('username','=',$added_user)->first();
                            /*print_r($usercampaign->clients);
                            exit();*/
                            if($usercampaign->clients!=''){
                               $userCampArr=explode(",", $usercampaign->clients);
                                if(in_array($clientValue, $userCampArr)){
                                    continue;
                                }
                            }   
                            $data=json_decode($usercampaign->data,true);
                            if(isset($data['hrmsdata']))
                            {

                                $hrmsdata=unserialize($data['hrmsdata']);
                                if($usercampaign->clients==$hrmsdata['clientsownerlist']){
                                    $campaignList =$usercampaign->clients."".$clientValue;

                                }else{

                                    $campaignList = $hrmsdata['clientsownerlist']."".$clientValue;

                                }
                                $hrmsdata['clientsownerlist'] = $campaignList;

                                $data['hrmsdata']=serialize($hrmsdata);

                            }else
                            {

                                $campaignList =$usercampaign->clients."".$clientValue;
                                $hrmsdata['clientsownerlist'] = $campaignList;
                                $data['hrmsdata']=serialize($hrmsdata);

                            }
                            $data=json_encode($data);

                            $usercampaign->updated_at=date("Y-m-d H:i:s");
                            $usercampaign->clients=$campaignList;
                            $usercampaign->data=$data;
                            $usercampaign->save();
                        }
                    }
                }
            }
            
            if($removed_userArray){
                foreach($removed_userArray as $removed_user){
                    $remainingGroupUsers=DB::table('skill_group')->select('clients','users_list','group_name')->where('group_name','!=',$groupname)->where('clients','!=','')->get();
                    $total_clients=array();
                    if(isset($remainingGroupUsers)){
                        foreach($remainingGroupUsers as $remainingUsers){
                            $arryRemaining=explode(",",$remainingUsers->users_list);
                    //$total_clients=array();
                            if(in_array($removed_user, $arryRemaining)){
                        //get the clients
                        //ToDo
                                $total_clients=explode(",",$remainingGroupUsers->clients);
                            }

                        }
                
                        $cleints=array_diff($total_clients,$old_userscleints);
                

                $usercampaign1=User::where('username','=',$removed_user)->first();
                $data=json_decode($usercampaign1->data,true);
                    //$clients=$usercampaign->clients;

                $clientsValue=implode(",", $cleints);
                $hrmsdata['clientsownerlist'] = $clientsValue;
                $data['hrmsdata']=serialize($hrmsdata);
                $data=json_encode($data);
                $usercampaign1->updated_at=date("Y-m-d H:i:s");
                $usercampaign1->clients=$clientsValue;
                $usercampaign1->data=$data;
                $usercampaign1->save();   

            }
        }
    }
    $skillgroup = SkillGroup::where('id', $skillId)
    ->update([
        'group_name' => $groupname,
        'users_list' => ",".$user_selected,
        'updated_at' => date("Y-m-d H:i:s")
    ]);
    return;

}
}

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $data['skillgroup']=SkillGroup::where('id','=',$id)->first();
        //$userlist=SkillGroup::select('users_list')->where('id','=',$id)->first();
        $userlist=$data['skillgroup']->users_list;
        

        return view("layout.module.skillgroup.edit", $data);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}