<?php
namespace App\Http\Controllers;
use Illuminate\Support\Collection;
use Validator;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\Helper\MailHelper as MailHelper;
use Auth;
use App\Models\User;
use App\Models\Settings\Organisation;
use App\Models\Settings\Department;
use App\Models\Settings\Section;
use App\Models\Settings\Roles;
use App\Models\Settings\Permissions;
use App\Models\Settings\RolePermission;
use App\Models\Settings\UserRoles;
use App\Models\Settings\MenuSettings;
use App\Models\Settings\MenuRolePermission;
use App\Models\Settings\Configuration;
use App\Models\Settings\CancelConfiguration;
use App\Models\Settings\State;
use App\Models\Settings\HolidayMaster;
use App\Models\Settings\WeeklyOffMaster;
use App\Models\Facility\Facility;
use App\Models\Facility\ShowTimings;
use App\Models\Facility\Layout;
use App\Models\Facility\Seats;
use App\Models\Facility\Rates;
use App\Models\Sales\Invoice;
use App\Models\Sales\Ticket;
use Request as req;

class SettingsController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */

    /////organisation /////
    public function organisation()
    {
        $page_title = 'Organisation';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;

        $organisations = Organisation::with('statename')->get();
        $states = State::all();
        return view('Admin/Settings/organisation', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','organisations','states'));
    }
    public function organisation_post(Request $request)
    {
        $messsages = array(
            'organisation_name.required'=>'Please enter organisation name',
            );
        $rules = array(
            'organisation_name'=>'required|max:500',
            );
        Validator::make($request->all(), $rules,$messsages)->validate();
        $insert_id="";
        $organisation_name=$request->organisation_name;
        $remarks = $request->remarks;
        $short_code = $request->short_code;
        $address1 = $request->address1;
        $address2 = $request->address2;
        $city_name = $request->city_name;
        $state_name = $request->state_name;
        $pincode = $request->pincode;
        $phone_number = $request->phone_number;
        $email_id = $request->email_id;
        $website_address =$request->website_address;

        $id = Auth::user()->id;
        $organisation_count = Organisation::where('organisation_name',$organisation_name)->where('email_id',$email_id)->count();
        if($organisation_count==0)
        {
                $insert_id = Organisation::create([
                    'organisation_name' => $organisation_name,
                    'remarks' => $remarks,
                    'short_code' => $short_code,
                    'address1' => $address1,
                    'address2' => $address2,
                    'city' => $city_name,
                    'state' => $state_name,
                    'pincode' => $pincode,
                    'phone_number' => $phone_number,
                    'email_id' => $email_id,
                    'website_address' => $website_address,
                ]);
        }
        if($insert_id)
        {
            return redirect()->back()->with('success', 'Success! Organisation has been added');
        }
        else
        {
            return redirect()->back()->with('error', 'Failed! Organisation already exist');
        }

    }
    public function show_organisation($id)
    {
        $page_title = 'Organisation';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;

        $organisations = Organisation::where('id',$id)->with('statename')->first();
        $states = State::all();
        return view('Admin/Settings/show_organisation', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','organisations','states'));
    }
    public function show_organisation_post(Request $request)
    {
        $messsages = array(
            'organisation_name.required'=>'Please enter organisation name',
            );
        $rules = array(
            'organisation_name'=>'required|max:500',
            );
        Validator::make($request->all(), $rules,$messsages)->validate();
        $insert_id="";
        $organisation_name=$request->organisation_name;
        $remarks = $request->remarks;
        $organisation_id = $request->organisation_id;
        $short_code = $request->short_code;
        $address1 = $request->address1;
        $address2 = $request->address2;
        $city_name = $request->city_name;
        $state_name = $request->state_name;
        $pincode = $request->pincode;
        $phone_number = $request->phone_number;
        $email_id = $request->email_id;
        $website_address = $request->website_address;
        $id = Auth::user()->id;
        $upd_flg = 0;
        $organisations = Organisation::where('id',$organisation_id)->first();
        if(isset($organisations))
        {
            $organisations->organisation_name=$organisation_name;
            $organisations->remarks=$remarks;
            $organisations->short_code=$short_code;
            $organisations->address1=$address1;
            $organisations->address2=$address2;
            $organisations->city=$city_name;
            $organisations->state=$state_name;
            $organisations->pincode=$pincode;
            $organisations->phone_number=$phone_number;
            $organisations->email_id=$email_id;
            $organisations->website_address = $website_address;
            $organisations->save();
            $upd_flg = 1;
        }
        if($upd_flg)
        {
            return redirect('organisation')->with('success', 'Success! Organisation has been updated');
        }
        else
        {
            return redirect('organisation')->with('error', 'updation failed!');
        }

    }
    public function delete_organisation(Request $request)
    {
        $department_count = 0;
        $orgid = $request->orgid;
        $section_count = Section::where('organisation_id',$orgid)->count();
        if($section_count==0)
        {
            $content_type_count = Department::where('organisation_id',$orgid)->count();
            if($department_count==0)
            {
                $organisations_delete=Organisation::where('id',$orgid)->delete();
                return 1;
            }
        }
        else
        {
            return 0;
        }
    }
    ///////////////////

    /////department /////
    public function department()
    {
        $page_title = 'Department';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;
        $organisations = Organisation::all();
        $departments = Department::with('organisation')->get();
        return view('Admin/Settings/department', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','organisations','departments'));
    }
    public function department_post(Request $request)
    {
        $messsages = array(
            'department_name.required'=>'Please enter department name',
            );
        $rules = array(
            'department_name'=>'required|max:250',
            );
        Validator::make($request->all(), $rules,$messsages)->validate();
        $insert_id="";
        $organisation_id = $request->organisation_id;
        $department_name=$request->department_name;
        $remarks = $request->remarks;
        $id = Auth::user()->id;
        $department_count = Department::where('department_name',$department_name)->where('organisation_id',$organisation_id)->count();
        if($department_count==0)
        {
                $insert_id = Department::create([
                    'organisation_id' => $organisation_id,
                    'department_name' => $department_name,
                    'remarks' => $remarks,
                ]);
        }
        if($insert_id)
        {
            return redirect()->back()->with('success', 'Success! Department has been added');
        }
        else
        {
            return redirect()->back()->with('error', 'Failed! Department already exist in the selected organisation');
        }
    }
    public function show_department($id)
    {
        $page_title = 'Department';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;
        $departments = Department::where('id',$id)->with('organisation')->first();
        return view('Admin/Settings/show_department', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','departments'));
    }
    public function show_department_post(Request $request)
    {
        $messsages = array(
            'department_name.required'=>'Please enter department name',
            );
        $rules = array(
            'department_name'=>'required|max:250',
            );
        Validator::make($request->all(), $rules,$messsages)->validate();
        $insert_id="";
        $department_name=$request->department_name;
        $remarks = $request->remarks;
        $department_id = $request->department_id;
        $id = Auth::user()->id;
        $upd_flg = 0;
        $departments = Department::where('id',$department_id)->first();
        if(isset($departments))
        {
            $departments->department_name=$department_name;
            $departments->remarks=$remarks;
            $departments->save();
            $upd_flg = 1;
        }
        if($upd_flg)
        {
            return redirect('department')->with('success', 'Success! Department has been updated');
        }
        else
        {
            return redirect('department')->with('error', 'Failed! Department already exist');
        }

        return redirect('department');
    }
    public function delete_department(Request $request)
    {
        $dept_id = $request->dept_id;
        $section_count = Section::where('department_id',$dept_id)->count();
        if($section_count==0)
        {
                $dept_delete=Department::where('id',$dept_id)->delete();
                return 1;
            
        }
        else
        {
            return 0;
        }
    }
    /////////////////////////////////////////////////////////

    /////section /////
    public function section()
    {
        $page_title = 'Section';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;
        $organisations = Organisation::all();
        $sections = Section::with('organisation','department')->get();
        return view('Admin/Settings/section', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','organisations','sections'));
    }
    public function get_department($organisation_id)
    {
        $departments=Department::where('organisation_id',$organisation_id)->get();
        return $departments->pluck('department_name', 'id');
    }
    public function section_post(Request $request)
    {
        $messsages = array(
            'section_name.required'=>'Please enter section name',
            );
        $rules = array(
            'section_name'=>'required|max:250',
            );
        Validator::make($request->all(), $rules,$messsages)->validate();
        $insert_id="";
        $organisation_id = $request->organisation_id;
        $department_id = $request->department_id;
        $section_name=$request->section_name;
        $remarks = $request->remarks;
        $id = Auth::user()->id;
        $section_count = Section::where('section_name',$section_name)->where('department_id',$department_id)->where('organisation_id',$organisation_id)->count();
        if($section_count==0)
        {
                $insert_id = Section::create([
                    'organisation_id' => $organisation_id,
                    'department_id' => $department_id,
                    'section_name' => $section_name,
                    'remarks' => $remarks,
                ]);
        }
        if($insert_id)
        {
            return redirect()->back()->with('success', 'Success! Section has been added');
        }
        else
        {
            return redirect()->back()->with('error', 'Failed! Section already exist in the selected department in the organisation');
        }
    }
    public function show_section($id)
    {
        $page_title = 'Section';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;

        $sections = Section::where('id',$id)->with('organisation','department')->first();
        return view('Admin/Settings/show_section', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','sections'));
    }
    public function show_section_post(Request $request)
    {
        $messsages = array(
            'section_name.required'=>'Please enter section name',
            );
        $rules = array(
            'section_name'=>'required|max:250',
            );
        Validator::make($request->all(), $rules,$messsages)->validate();
        $insert_id="";
        $section_name=$request->section_name;
        $remarks = $request->remarks;
        $section_id = $request->section_id;
        $id = Auth::user()->id;
        $upd_flg = 0;
        $sections = Section::where('id',$section_id)->first();
        if(isset($sections))
        {
            $sections->section_name=$section_name;
            $sections->remarks=$remarks;
            $sections->save();
            $upd_flg = 1;
        }
        if($upd_flg)
        {
            return redirect('section')->with('success', 'Success! Section has been updated');
        }
        else
        {
            return redirect('section')->with('error', 'Failed! Section already exist');
        }

        return redirect('section');
    }
    public function delete_section(Request $request)
    {
        $section_id = $request->section_id;
        $dept_delete=Section::where('id',$section_id)->delete();
        if($dept_delete)
        {                
            return 1;
        }
        else
        {
            return 0;
        }
    }
    /////////////////////////////////

    /////role /////
    public function roles_creation()
    {
        $page_title = 'Roles';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;

        $roles = Roles::all();
        return view('Admin/Settings//roles_creation', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','roles'));
    }
    public function roles_creation_post(Request $request)
    {
        $messsages = array(
            'name.required'=>'Please enter name',
            );
        $rules = array(
            'name'=>'required|max:250',
            );
        Validator::make($request->all(), $rules,$messsages)->validate();
        $insert_id="";
        $name=$request->name;
        $guard_name = $request->guard_name;
        $level = $request->level;
        $id = Auth::user()->id;
        $role_count = Roles::where('name',$name)->count();
        if($role_count==0)
        {
                $insert_id = Roles::create([
                    'name' => $name,
                    'guard_name' => $guard_name,
                    'level' => $level,
                    'status' => 1,
                ]);
        }
        if($insert_id)
        {
            return redirect()->back()->with('success', 'Success! Role has been created');
        }
        else
        {
            return redirect()->back()->with('error', 'Failed! Role already exist');
        }

        return redirect()->back();
    }
    public function show_role($id)
    {
        $page_title = 'Roles';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;
        $roles = Roles::where('id',$id)->first();
        return view('Admin/Settings/show_role', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','roles'));
    }
    public function show_role_post(Request $request)
    {
        $messsages = array(
            'name.required'=>'Please enter name',
            );
        $rules = array(
            'name'=>'required|max:250',
            );
        Validator::make($request->all(), $rules,$messsages)->validate();
        $insert_id="";
        $name=$request->name;
        $guard_name = $request->guard_name;
        $role_id = $request->role_id;
        $level = $request->level;
        $status = $request->status;
        $id = Auth::user()->id;
        $upd_flg = 0;
        $roles = Roles::where('id',$role_id)->first();
        if(isset($roles))
        {
            $roles->name=$name;
            $roles->guard_name=$guard_name;
            $roles->status = $status;
            $roles->level = $level;
            $roles->save();
            $upd_flg = 1;
        }
        if($upd_flg)
        {
            return redirect('roles_creation')->with('success', 'Success! Role has been updated');
        }
        else
        {
            return redirect('roles_creation')->with('error', 'Failed! Role already exist');
        }
    }
    public function delete_roles(Request $request)
    {
        $roleid = $request->roleid;
        $role_permission_count = RolePermission::where('role_id',$roleid)->count();
        if($role_permission_count==0)
        {
            $user_role_count = UserRoles::where('role_id',$roleid)->count();
            if($user_role_count==0)
            {
                $roles = Roles::where('id',$roleid)->first();
                if(isset($roles))
                {
                    $roles->status = 0;
                    $roles->save();
                }
                $roles_delete=Roles::where('id',$roleid)->delete();
                return 1;
            }
        }
        else
        {
            return 0;
        }
    }
    ///////////////////

    ////permission//////////////
    public function permission_creation()
    {
        $page_title = 'Permission';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;
        $permissions = Permissions::all();
        return view('Admin/Settings/permission_creation', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','permissions'));
    }
    public function permission_creation_post(Request $request)
    {
        $messsages = array(
            'name.required'=>'Please enter name',
            );
        $rules = array(
            'name'=>'required|max:191',
            );
        Validator::make($request->all(), $rules,$messsages)->validate();
        $insert_id="";
        $name=$request->name;
        $guard_name = $request->guard_name;
        $id = Auth::user()->id;
        $permission_count = Permissions::where('name',$name)->count();
        if($permission_count==0)
        {
                $insert_id = Permissions::create([
                    'name' => $name,
                    'guard_name' => $guard_name,
                    'status' => 1,
                ]);
        }
        if($insert_id)
        {
            return redirect()->back()->with('success', 'Success! Permission has been added');
        }
        else
        {
            return redirect()->back()->with('error', 'Failed! Permission already exist');
        }
    }
    public function show_permission($id)
    {
        $page_title = 'Permission';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;
        $permissions = Permissions::where('id',$id)->first();
        return view('Admin/Settings/show_permission', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','permissions'));
    }
    public function show_permission_post(Request $request)
    {
        $messsages = array(
            'name.required'=>'Please enter name',
            );
        $rules = array(
            'name'=>'required|max:250',
            );
        Validator::make($request->all(), $rules,$messsages)->validate();
        $insert_id="";
        $name=$request->name;
        $guard_name = $request->guard_name;
        $permission_id = $request->permission_id;
        $status = $request->status;
        $id = Auth::user()->id;
        $upd_flg = 0;
        $permissions = Permissions::where('id',$permission_id)->first();
        if(isset($permissions))
        {
            $permissions->name=$name;
            $permissions->guard_name=$guard_name;
            $permissions->status = $status;
            $permissions->save();
            $upd_flg = 1;
        }
        if($upd_flg)
        {
            return redirect('permission_creation')->with('success', 'Success! Permission has been updated');
        }
        else
        {
            return redirect('permission_creation')->with('error', 'Failed! Permission already exist');
        }
    }
    public function delete_permission(Request $request)
    {
        $permission_id = $request->permission_id;
        $role_permission_count = RolePermission::where('permission_id',$permission_id)->count();
        if($role_permission_count==0)
        {
            $permissions = Permissions::where('id',$permission_id)->first();
            if(isset($permissions))
            {
                $permissions->status = 0;
                $permissions->save();
            }
            $permission_delete=Permissions::where('id',$permission_id)->delete();
            return 1;         
        }
        else
        {
            return 0;
        }
    }
    ///////////////////////////

    ///role permission mapping/////////////////
    public function role_permission_mapping()
    {
        $page_title = 'Role Permission Mapping';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;
        $roles = Roles::where('status',1)->get();
        $permissions = Permissions::where('status',1)->get();
        return view('Admin/Settings/role_permission_mapping', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','roles','permissions'));
    }
    public function role_permission_mapping_post(Request $request)
    {
        $insert_role_permission_id="";
        $role_id = $request->role_id;
        $id = Auth::user()->id;
        $permissions = $request->permissions;
        foreach($permissions as $permission)
        {
            $role_permission_count = RolePermission::where('role_id',$role_id)->where('permission_id',$permission)->where('status',1)->count();
            if($role_permission_count==0)
            {
                $insert_role_permission_id = RolePermission::create([
                    'role_id' => $role_id,
                    'permission_id' => $permission,
                    'status' => 1,
                ]);
            }
        }
        
        if($insert_role_permission_id) 
        {
            return redirect()->back()->with('success', 'Success! Permission has been added to Role');
        } 
        else
        {
            return redirect()->back()->with('error', 'Failed!');
        }
    }
    public function get_permission_data(Request $request)
    {
        $role_id = $request->role_id;
        $div_value ='<table class="table table-hover table-bordered table-striped datatable" width="100%">
                    <thead>
                    <tr>
                      <th>Slno</th>
                      <th>Permission</th>
                      <th>Actions</th>
                    </tr>';
        $n=0;
        $role_permission = RolePermission::where('role_id',$role_id)->with('permission')->get();
        foreach($role_permission as $role_permissions)
        {
            $n++;
            $permission_name = $role_permissions->permission->name;
            $div_value.='<tr>
                              <td>'.$n.'</td>
                              <td>'.$permission_name.'</td>
                              <td><a href="#" onclick="confirmDeleteRolePermissions('.$role_permissions->id.')"><span style="color:red;"><i class="fa fa-btn fa-minus-circle"></i></span></a> 
                              </td>
                        </tr>';
        }
        return $div_value;
    }
    public function delete_role_permission(Request $request)
    {
        $role_permission_id = $request->role_permission_id;
        $role_permission_delete=RolePermission::where('id',$role_permission_id)->delete();
        return 1;         
    }
    /////////////////////////////////////////

    ///menu role permission mapping/////////////////
    public function menu_role_permission()
    {
        $page_title = 'Menu Role Permission';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;
        $roles = Roles::where('status',1)->get();
        $menus = MenuSettings::where('menu_order_number','!=',NULL)->get();
        return view('Admin/Settings/menu_role_permission', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','roles','menus'));
    }
    public function menu_role_permission_post(Request $request)
    {
        $insert_role_permission_id="";
        $role_id = $request->role_id;
        $id = Auth::user()->id;
        $menus = $request->menus;
        foreach($menus as $menu)
        {
            $menu_role_permission_count = MenuRolePermission::where('role_id',$role_id)->where('menu_id',$menu)->where('status',1)->count();
            if($menu_role_permission_count==0)
            {
                $insert_role_permission_id = MenuRolePermission::create([
                    'role_id' => $role_id,
                    'menu_id' => $menu,
                    'status' => 1,
                ]);
            }
        }
        
        if($insert_role_permission_id)  
        {
            return redirect()->back()->with('success', 'Success! Menu has been added to Role');
        }
        else
        {
            return redirect()->back()->with('error', 'Failed!');
        }
    }
    public function get_menu_role_permission_data(Request $request)
    {
        $role_id = $request->role_id;
        $div_value ='<table class="table table-hover table-bordered table-striped datatable" width="100%">
                    <thead>
                    <tr>
                      <th>Slno</th>
                      <th>Menu Name</th>
                      <th>Actions</th>
                    </tr>';
        $n=0;
        $menu_role_permissions = MenuRolePermission::where('role_id',$role_id)->with('menu')->get();
        foreach($menu_role_permissions as $menu_role_permission)
        {
            $n++;
            $menu_name = $menu_role_permission->menu->menu_name;
            $div_value.='<tr>
                              <td>'.$n.'</td>
                              <td>'.$menu_name.'</td>
                              <td><a href="#" onclick="confirmDeleteMenuRolePermissions('.$menu_role_permission->id.')"><span style="color:red;"><i class="fa fa-btn fa-minus-circle"></i></span></a> 
                              </td>
                        </tr>';
        }
        return $div_value;
    }
    public function delete_menu_role_permission(Request $request)
    {
        $menu_role_permission_id = $request->menu_role_permission_id;
        $menu_roles = MenuRolePermission::where('id',$menu_role_permission_id)->first();
        if(isset($menu_roles))
        {
            $menu_roles->status = 0;
            $menu_roles->save();
        }
        $menu_role_permission_delete=MenuRolePermission::where('id',$menu_role_permission_id)->delete();
        return 1;         
    }
    /////////////////////////////////////////

    /////holiday master /////
    public function holiday_master()
    {
        $page_title = 'Holiday Master';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;
        $organisations = Organisation::all();
        $holiday_masters = HolidayMaster::with('organisation','facility')->get();
        $weeklyoff_masters = WeeklyOffMaster::with('organisation','facility')->get();
        return view('Admin/Settings/holiday_master', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','organisations','holiday_masters','weeklyoff_masters'));
    }
    public function getfacility($organisation_id)
    {
            $facilities=Facility::where('organisation_id',$organisation_id)->get();
            return $facilities->pluck('facility_name', 'id');
    }
    public function holiday_master_post(Request $request)
    {
        $insert_id="";
        $organisation_id = $request->organisation_id;
        $facility_id = $request->facility_id;
        $holiday_date=$request->holiday_date;
        $holiday=$request->holiday;
        $active_flag=$request->active_flag;
        $weeklyoffday=$request->weeklyoffday;
        $id = Auth::user()->id;
        if($holiday=="Holiday")
        {
            $insert_id = HolidayMaster::create([
                'organisation_id' => $organisation_id,
                'facility_id' => $facility_id,
                'holiday_date' => $holiday_date,
                'active_flag' => 1,
            ]);
        }
        if($holiday=="WeeklyOff")
        {
            $insert_id = WeeklyOffMaster::create([
                'organisation_id' => $organisation_id,
                'facility_id' => $facility_id,
                'weekly_off_day' => $weeklyoffday,
                'active_flag' => 1,
            ]);
        }
        if($insert_id)
        {
            return redirect()->back()->with('success', 'Success! Holiday Date/Weekly Off Day has been added');
        }
    }

    public function show_holiday_master($id)
    {
        $page_title = 'Holiday Master';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;
        $organisations = Organisation::all();
        $facility_id= "";
        $facilities = "";
        $holiday_masters = HolidayMaster::where('id',$id)->with('organisation','facility')->first();
        if(isset($holiday_masters))
        {
            $organisation_id = $holiday_masters->organisation_id;
            $facility_id = $holiday_masters->facility_id;
             $facilities = Facility::where('organisation_id',$organisation_id)->get();
        }
        
        return view('Admin/Settings/show_holiday_master', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','organisations','holiday_masters','facilities','facility_id'));
    }
    public function show_holiday_master_post(Request $request)
    {
        $insert_id="";
        $organisation_id = $request->organisation_id;
        $facility_id = $request->facility_id;
        $holiday_date=$request->holiday_date;
        $holiday=$request->holiday;
        $active_flag=$request->active_flag;
        if(!$active_flag)
        {
            $active_flag = 0;
        }
        $holiday_id = $request->holiday_id;
        $id = Auth::user()->id;
        $holidays = HolidayMaster::where('id',$holiday_id)->first();
        if(isset($holidays))
        {
            $holidays->organisation_id=$organisation_id;
            $holidays->facility_id=$facility_id;
            $holidays->holiday_date = $holiday_date;
            $holidays->active_flag = $active_flag;
            $holidays->save();
            $upd_flg = 1;
        }
        return redirect('holiday_master');
    }
    
    public function show_weeklyoff($id)
    {
        $page_title = 'WeeklyOFf Master';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;
        $organisations = Organisation::all();
        $facility_id= "";
        $facilities = "";
        $weeklyoff_masters = WeeklyOffMaster::where('id',$id)->with('organisation','facility')->first();
        if(isset($weeklyoff_masters))
        {
            $organisation_id = $weeklyoff_masters->organisation_id;
            $facility_id = $weeklyoff_masters->facility_id;
            $facilities = Facility::where('organisation_id',$organisation_id)->get();
        }
        return view('Admin/Settings/show_weeklyoff', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','organisations','weeklyoff_masters','facilities'));
    }
    public function show_weeklyoff_post(Request $request)
    {
        $insert_id="";
        $organisation_id = $request->organisation_id;
        $facility_id = $request->facility_id;
        $weeklyoffday=$request->weeklyoffday;
        $holiday=$request->holiday;
        $active_flag=$request->active_flag;
        $holiday_id = $request->holiday_id;
        $active_flag=$request->active_flag;
        if(!$active_flag)
        {
            $active_flag = 0;
        }
        $id = Auth::user()->id;
        $holidays = WeeklyOffMaster::where('id',$holiday_id)->first();
        if(isset($holidays))
        {
            $holidays->organisation_id=$organisation_id;
            $holidays->facility_id=$facility_id;
            $holidays->weekly_off_day = $weeklyoffday;
            $holidays->active_flag = $active_flag;
            $holidays->save();
            $upd_flg = 1;
        }
        return redirect('holiday_master');
    }
    /////////////////////////////////////////////////

    /////configuration /////
    public function configuration_settings()
    {
        $page_title = 'Configuration Settings';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;
        $configurations = Configuration::all();
        return view('Admin/Settings/configuration_settings', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','configurations'));
    }
    public function configuration_settings_post(Request $request)
    {
        $insert_id="";
        $ticket_time_out=$request->ticket_time_out;
        $pre_ticket_book_time = $request->pre_ticket_book_time;
        $reports_mailto=$request->reports_mailto;
        $reports_time=$request->reports_time;
        $children_staff_rate =$request->children_staff_rate;
        $ticket_booking_max_days = $request->ticket_booking_max_days;
        $refund_initiate_time = $request->refund_initiate_time;
        $differently_abled_percentage = $request->differently_abled_percentage;
        $packaged_user_percentage = $request->packaged_user_percentage;
        $id = Auth::user()->id;
        $configuration_delete = Configuration::orderBy('id','desc')->delete();
        $insert_id = Configuration::create([
            'ticket_time_out' => $ticket_time_out,
            'pre_ticket_book_time' => $pre_ticket_book_time,
            'reports_mailto' => $reports_mailto,
            'reports_time' => $reports_time,
            'children_staff_rate' => $children_staff_rate,
            'ticket_booking_max_days' => $ticket_booking_max_days,
            'refund_initiate_time' => $refund_initiate_time,
            'differently_abled_percentage' => $differently_abled_percentage,
            'packaged_user_percentage' => $packaged_user_percentage,
        ]);        
        if($insert_id)
        {
            return redirect()->back()->with('success', 'Success! Configuration Settings has been added');
        }
        else
        {
            return redirect()->back()->with('error', 'Failed!');
        }
    }
    public function show_configuration_settings($id)
    {
        $page_title = 'Configuration Settings';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;

        $configurations = Configuration::where('id',$id)->first();
        return view('Admin/Settings/show_configuration_settings', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','configurations'));
    }
    public function show_configuration_settings_post(Request $request)
    {
        $insert_id="";
        $ticket_time_out=$request->ticket_time_out;
        $pre_ticket_book_time = $request->pre_ticket_book_time;
        $configuration_id = $request->configuration_id;
        $reports_mailto=$request->reports_mailto;
        $reports_time=$request->reports_time;
        $children_staff_rate =$request->children_staff_rate;
        $ticket_booking_max_days =$request->ticket_booking_max_days;
        $refund_initiate_time = $request->refund_initiate_time;
        $differently_abled_percentage = $request->differently_abled_percentage;
        $packaged_user_percentage = $request->packaged_user_percentage;
        $id = Auth::user()->id;
        $upd_flg = 0;
        $configurations = Configuration::where('id',$configuration_id)->first();
        if(isset($configurations))
        {
            $configurations->ticket_time_out=$ticket_time_out;
            $configurations->pre_ticket_book_time=$pre_ticket_book_time;
            $configurations->reports_mailto=$reports_mailto;
            $configurations->reports_time=$reports_time;
            $configurations->children_staff_rate = $children_staff_rate;
            $configurations->ticket_booking_max_days = $ticket_booking_max_days;
            $configurations->differently_abled_percentage = $differently_abled_percentage;
            $configurations->packaged_user_percentage = $packaged_user_percentage;
            $configurations->save();
            $upd_flg = 1;
        }
        if($upd_flg)
        {
            return redirect('configuration_settings')->with('success', 'Success! Configuration has been updated');
        }
        else
        {
            return redirect('configuration_settings')->with('error', 'Failed!');
        }
    }

    ///cancel configuration settings/////////////////
    public function cancel_configuration_settings()
    {
        $page_title = 'Cancel Configuration Settings';
        $page_description = 'Some description for the page';
        $logo = "images/logo.png";
        $logoText = "images/logo-text.png";
        $active="active";
        $event_class="schedule-event";
        $button_class="btn-primary";
        $action = __FUNCTION__;
        $cancel_configurations = CancelConfiguration::all();
        return view('Admin/Settings/cancel_configuration_settings', compact('page_title','page_description','action','logo','logoText','active','event_class','button_class','cancel_configurations'));
    }
    public function cancel_configuration_settings_post(Request $request)
    {
        $insert_id = "";
        $cancellation_before_hours = $request->cancellation_before_hours;
        $id = Auth::user()->id;
        $refund = $request->refund;
        $cancel_count = CancelConfiguration::where('cancellation_before_hours',$cancellation_before_hours)->where('refund',$refund)->where('status',1)->count();
        if($cancel_count==0)
        {
            $insert_id = CancelConfiguration::create([
                'cancellation_before_hours' => $cancellation_before_hours,
                'refund' => $refund,
                'status' => 1,
            ]);
        }
        
        if($insert_id) 
        {
            return redirect()->back()->with('success', 'Success! CancelConfiguration has been added');
        } 
        else
        {
            return redirect()->back()->with('error', 'Failed!');
        }
    }
    public function delete_cancel_configuration_settings(Request $request)
    {
        $cancel_id = $request->cancel_configuration_id;
        $cancels = CancelConfiguration::where('id',$cancel_id)->first();
        if(isset($cancels))
        {
            $cancels->status = 0;
            $cancels->save();
        }
        $cancels_delete=CancelConfiguration::where('id',$cancel_id)->delete();
        return 1;         
    }
    
}
