dbfdg
middleware(
[
'auth',
'XSS',
]
);
}
public function index()
{
if(\Auth::user()->can('manage client'))
{
$user = \Auth::user();
$clients = User::where('created_by', '=', $user->creatorId())->where('type', '=', 'client')->get();
return view('clients.index', compact('clients'));
}
else
{
return redirect()->back()->with('error', __('Permission Denied.'));
}
}
public function create(Request $request)
{
if(\Auth::user()->can('create client'))
{
if($request->ajax)
{
return view('clients.createAjax');
}
else
{
$customFields = CustomField::where('module', '=', 'client')->get();
return view('clients.create', compact('customFields'));
}
}
else
{
return response()->json(['error' => __('Permission Denied.')], 401);
}
}
public function store(Request $request)
{
if(\Auth::user()->can('create client'))
{
$default_language = DB::table('settings')->select('value')->where('name', 'default_language')->where('created_by', '=', \Auth::user()->creatorId())->first();
$user = \Auth::user();
$validator = \Validator::make(
$request->all(), [
'name' => 'required',
'email' => 'required|email|unique:users',
]
);
if($validator->fails())
{
$messages = $validator->getMessageBag();
if($request->ajax)
{
return response()->json(['error' => $messages->first()], 401);
}
else
{
return redirect()->back()->with('error', $messages->first());
}
}
$enableLogin = 0;
if(!empty($request->password_switch) && $request->password_switch == 'on')
{
$enableLogin = 1;
$validator = \Validator::make(
$request->all(), ['password' => 'required|min:6']
);
if($validator->fails())
{
return redirect()->back()->with('error', $validator->errors()->first());
}
}
$userpassword = $request->input('password');
$objCustomer = \Auth::user();
$creator = User::find($objCustomer->creatorId());
$total_client = User::where('created_by', '=', \Auth::user()->creatorId())->where('type','client')->count();
$plan = Plan::find($creator->plan);
if($total_client < $plan->max_clients || $plan->max_clients == -1)
{
$role = Role::findByName('client');
$client = User::create(
[
'name' => $request->name,
'email' => $request->email,
'job_title' => $request->job_title,
'password' => !empty($userpassword) ? \Hash::make($userpassword) : null,
'type' => 'client',
'lang' => !empty($default_language) ? $default_language->value : 'en',
'created_by' => $user->creatorId(),
'email_verified_at' => date('Y-m-d H:i:s'),
'is_enable_login' => $enableLogin,
]
);
//Send Email
$setings = Utility::settings();
if($setings['new_client'] == 1)
{
$role_r = Role::findByName('client');
$client->assignRole($role_r);
$client->password = $request->password;
$clientArr = [
'client_name' => $client->name,
'client_email' => $client->email,
'client_password' => $client->password,
];
$resp = Utility::sendEmailTemplate('new_client', [$client->email], $clientArr);
return redirect()->route('clients.index')->with('success', __('Client successfully added.') . ((!empty($resp) && $resp['is_success'] == false && !empty($resp['error'])) ? '
' . $resp['error'] . '' : ''));
}
return redirect()->route('clients.index')->with('success', __('Client successfully created.'));
}
else
{
return redirect()->back()->with('error', __('Your user limit is over, Please upgrade plan.'));
}
}
else
{
if($request->ajax)
{
return response()->json(['error' => __('Permission Denied.')], 401);
}
else
{
return redirect()->back()->with('error', __('Permission Denied.'));
}
}
}
public function show(User $client)
{
$usr = Auth::user();
if(!empty($client) && $usr->id == $client->creatorId() && $client->id != $usr->id && $client->type == 'client')
{
// For Estimations
$estimations = $client->clientEstimations()->orderByDesc('id')->get();
$curr_month = $client->clientEstimations()->whereMonth('issue_date', '=', date('m'))->get();
$curr_week = $client->clientEstimations()->whereBetween(
'issue_date', [
\Carbon\Carbon::now()->startOfWeek(),
\Carbon\Carbon::now()->endOfWeek(),
]
)->get();
$last_30days = $client->clientEstimations()->whereDate('issue_date', '>', \Carbon\Carbon::now()->subDays(30))->get();
// Estimation Summary
$cnt_estimation = [];
$cnt_estimation['total'] = Estimation::getEstimationSummary($estimations);
$cnt_estimation['this_month'] = Estimation::getEstimationSummary($curr_month);
$cnt_estimation['this_week'] = Estimation::getEstimationSummary($curr_week);
$cnt_estimation['last_30days'] = Estimation::getEstimationSummary($last_30days);
$cnt_estimation['cnt_total'] = $estimations->count();
$cnt_estimation['cnt_this_month'] = $curr_month->count();
$cnt_estimation['cnt_this_week'] = $curr_week->count();
$cnt_estimation['cnt_last_30days'] = $last_30days->count();
// For Contracts
$contracts = $client->clientContracts()->orderByDesc('id')->get();
$curr_month = $client->clientContracts()->whereMonth('start_date', '=', date('m'))->get();
$curr_week = $client->clientContracts()->whereBetween(
'start_date', [
\Carbon\Carbon::now()->startOfWeek(),
\Carbon\Carbon::now()->endOfWeek(),
]
)->get();
$last_30days = $client->clientContracts()->whereDate('start_date', '>', \Carbon\Carbon::now()->subDays(30))->get();
// Contracts Summary
$cnt_contract = [];
$cnt_contract['total'] = Contract::getContractSummary($contracts);
$cnt_contract['this_month'] = Contract::getContractSummary($curr_month);
$cnt_contract['this_week'] = Contract::getContractSummary($curr_week);
$cnt_contract['last_30days'] = Contract::getContractSummary($last_30days);
$cnt_contract['cnt_total'] = $contracts->count();
$cnt_contract['cnt_this_month'] = $curr_month->count();
$cnt_contract['cnt_this_week'] = $curr_week->count();
$cnt_contract['cnt_last_30days'] = $last_30days->count();
return view('clients.show', compact('client', 'estimations', 'cnt_estimation', 'contracts', 'cnt_contract'));
}
else
{
return redirect()->back()->with('error', __('Permission Denied.'));
}
}
public function edit(User $client)
{
if(\Auth::user()->can('edit client'))
{
$user = \Auth::user();
if($client->created_by == $user->creatorId())
{
$client->customField = CustomField::getData($client, 'client');
$customFields = CustomField::where('module', '=', 'client')->get();
return view('clients.edit', compact('client', 'customFields'));
}
else
{
return response()->json(['error' => __('Invalid Client.')], 401);
}
}
else
{
return response()->json(['error' => __('Permission Denied.')], 401);
}
}
public function update(User $client, Request $request)
{
if(\Auth::user()->can('edit client'))
{
$user = \Auth::user();
if($client->created_by == $user->creatorId())
{
$validation = [
'name' => 'required',
'email' => 'required|email|unique:users,email,' . $client->id,
];
$post = [];
$post['name'] = $request->name;
if(!empty($request->password))
{
$validation['password'] = 'required';
$post['password'] = Hash::make($request->password);
}
$validator = \Validator::make($request->all(), $validation);
if($validator->fails())
{
$messages = $validator->getMessageBag();
return redirect()->back()->with('error', $messages->first());
}
$post['email'] = $request->email;
$client->update($post);
CustomField::saveData($client, $request->customField);
return redirect()->back()->with('success', __('Client Updated Successfully!'));
}
else
{
return redirect()->back()->with('error', __('Invalid Client.'));
}
}
else
{
return redirect()->back()->with('error', __('Permission Denied.'));
}
}
public function destroy(User $client)
{
$user = \Auth::user();
if($client->created_by == $user->creatorId())
{
$estimation = Estimation::where('client_id', '=', $client->id)->first();
if(empty($estimation))
{
/* ClientDeal::where('client_id', '=', $client->id)->delete();
ClientPermission::where('client_id', '=', $client->id)->delete();*/
$client->delete();
return redirect()->back()->with('success', __('Client Deleted Successfully!'));
}
else
{
return redirect()->back()->with('error', __('This client has assigned some estimation.'));
}
}
else
{
return redirect()->back()->with('error', __('Invalid Client.'));
}
}
public function clientPassword($id)
{
$eId = \Crypt::decrypt($id);
$user = User::find($eId);
$client = User::where('created_by', '=', $user->creatorId())->where('type', '=', 'client')->first();
return view('clients.reset', compact('user', 'client'));
}
public function clientPasswordReset(Request $request, $id)
{
$validator = \Validator::make(
$request->all(), [
'password' => 'required|confirmed|same:password_confirmation',
]
);
if($validator->fails())
{
$messages = $validator->getMessageBag();
return redirect()->back()->with('error', $messages->first());
}
$user = User::where('id', $id)->first();
$user->forceFill([
'password' => Hash::make($request->password),
])->save();
return redirect()->route('clients.index')->with(
'success', 'Client Password successfully updated.'
);
}
}