dbfdg can('manage contract')) { if(\Auth::user()->type=='company') { $contracts = Contract::where('created_by', '=', \Auth::user()->creatorId())->with(['clients','projects','types'])->get(); $curr_month = Contract::where('created_by', '=', \Auth::user()->creatorId())->whereMonth('start_date', '=', date('m'))->get(); $curr_week = Contract::where('created_by', '=', \Auth::user()->creatorId())->whereBetween( 'start_date', [ \Carbon\Carbon::now()->startOfWeek(), \Carbon\Carbon::now()->endOfWeek(), ] )->get(); $last_30days = Contract::where('created_by', '=', \Auth::user()->creatorId())->whereDate('start_date', '>', \Carbon\Carbon::now()->subDays(30))->get(); // Contracts Summary $cnt_contract = []; $cnt_contract['total'] = \App\Models\Contract::getContractSummary($contracts); $cnt_contract['this_month'] = \App\Models\Contract::getContractSummary($curr_month); $cnt_contract['this_week'] = \App\Models\Contract::getContractSummary($curr_week); $cnt_contract['last_30days'] = \App\Models\Contract::getContractSummary($last_30days); return view('contract.index', compact('contracts', 'cnt_contract')); } elseif(\Auth::user()->type=='client') { $contracts = Contract::where('client_name', '=', \Auth::user()->id)->with(['types'])->get(); $curr_month = Contract::where('client_name', '=', \Auth::user()->id)->whereMonth('start_date', '=', date('m'))->get(); $curr_week = Contract::where('client_name', '=', \Auth::user()->id)->whereBetween( 'start_date', [ \Carbon\Carbon::now()->startOfWeek(), \Carbon\Carbon::now()->endOfWeek(), ] )->get(); $last_30days = Contract::where('client_name', '=', \Auth::user()->creatorId())->whereDate('start_date', '>', \Carbon\Carbon::now()->subDays(30))->get(); // Contracts Summary $cnt_contract = []; $cnt_contract['total'] = \App\Models\Contract::getContractSummary($contracts); $cnt_contract['this_month'] = \App\Models\Contract::getContractSummary($curr_month); $cnt_contract['this_week'] = \App\Models\Contract::getContractSummary($curr_week); $cnt_contract['last_30days'] = \App\Models\Contract::getContractSummary($last_30days); return view('contract.index', compact('contracts', 'cnt_contract')); } $contracts = Contract::where('created_by', '=', \Auth::user()->creatorId())->with(['clients','projects','types'])->get(); return view('contract.index', compact('contracts')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function create() { $contractTypes = ContractType::where('created_by', '=', \Auth::user()->creatorId())->get()->pluck('name', 'id'); $clients = User::where('type', 'client')->where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); $clients->prepend(__('Select Client'),0); $project = Project::where('created_by', '=', \Auth::user()->creatorId())->get()->pluck('project_name', 'id'); return view('contract.create', compact('contractTypes', 'clients','project')); } public function store(Request $request) { if(\Auth::user()->can('create contract')) { $rules = [ 'client_name' => 'required', 'subject' => 'required', 'type' => 'required', 'value' => 'required', 'start_date' => 'required', 'end_date' => 'required', ]; $validator = \Validator::make($request->all(), $rules); if($validator->fails()) { $messages = $validator->getMessageBag(); return redirect()->route('contract.index')->with('error', $messages->first()); } $contract = new Contract(); $contract->client_name = $request->client_name; $contract->subject = $request->subject; $contract->project_id =$request->project_id; $contract->type = $request->type; $contract->value = $request->value; $contract->start_date = $request->start_date; $contract->end_date = $request->end_date; $contract->description = $request->description; $contract->created_by = \Auth::user()->creatorId(); $contract->save(); //Send Email $setings = Utility::settings(); if($setings['new_contract'] == 1) { $client = \App\Models\User::find($request->client_name); $contractArr = [ 'contract_subject' => $request->subject, 'contract_client' => $client->name, 'contract_value' => \Auth::user()->priceFormat($request->value), 'contract_start_date' => \Auth::user()->dateFormat($request->start_date), 'contract_end_date' => \Auth::user()->dateFormat($request->end_date), 'contract_description' => $request->description, ]; // Send Email $resp = Utility::sendEmailTemplate('new_contract', [$client->id => $client->email], $contractArr); } //For Notification $setting = Utility::settings(\Auth::user()->creatorId()); $client = \App\Models\User::find($request->client_name); $contractNotificationArr = [ 'contract_subject' => $request->subject, 'contract_client' => $client->name, 'contract_value' => \Auth::user()->priceFormat($request->value), 'contract_start_date' => \Auth::user()->dateFormat($request->start_date), 'contract_end_date' =>\Auth::user()->dateFormat($request->end_date), 'user_name' => \Auth::user()->name, ]; //Slack Notification if(isset($setting['contract_notification']) && $setting['contract_notification'] ==1) { Utility::send_slack_msg('new_contract', $contractNotificationArr); } //Telegram Notification if(isset($setting['telegram_contract_notification']) && $setting['telegram_contract_notification'] ==1) { Utility::send_telegram_msg('new_contract', $contractNotificationArr); } //webhook $module ='New Contract'; $webhook= Utility::webhookSetting($module); if($webhook) { $parameter = json_encode($contract); $status = Utility::WebhookCall($webhook['url'],$parameter,$webhook['method']); if($status == true) { return redirect()->back()->with('success', __('Contract successfully created!') .((!empty ($resp) && $resp['is_success'] == false && !empty($resp['error'])) ? '
' . $resp['error'] . '' : '')); } else { return redirect()->back()->with('error', __('Webhook call failed.')); } } return redirect()->back()->with('success', __('Contract successfully created!') .((!empty ($resp) && $resp['is_success'] == false && !empty($resp['error'])) ? '
' . $resp['error'] . '' : '')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function show($id) { if(\Auth::user()->can('show contract')) { $contract =Contract::find($id); if($contract->created_by == \Auth::user()->creatorId()) { $client = $contract->client; return view('contract.show', compact('contract', 'client')); } else { return redirect()->back()->with('error', __('Permission Denied.')); } } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function edit(Contract $contract) { $contractTypes = ContractType::where('created_by', '=', \Auth::user()->creatorId())->get()->pluck('name', 'id'); $clients = User::where('type', 'client')->where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id'); $project = Project::where('created_by', '=', \Auth::user()->creatorId())->get()->pluck('project_name','id'); return view('contract.edit', compact('contractTypes', 'clients', 'contract','project')); } public function update(Request $request, Contract $contract) { if(\Auth::user()->can('edit contract')) { $rules = [ 'client_name' => 'required', 'subject' => 'required', 'type' => 'required', 'value' => 'required', 'start_date' => 'required', 'end_date' => 'required', ]; $validator = \Validator::make($request->all(), $rules); if($validator->fails()) { $messages = $validator->getMessageBag(); return redirect()->route('contract.index')->with('error', $messages->first()); } $contract->client_name = $request->client_name; $contract->subject = $request->subject; $contract->project_id =$request->project_id; $contract->type = $request->type; $contract->value = $request->value; $contract->start_date = $request->start_date; $contract->end_date = $request->end_date; $contract->description = $request->description; $contract->save(); return redirect()->route('contract.index')->with('success', __('Contract successfully updated.')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function destroy(Contract $contract) { if(\Auth::user()->can('delete contract')) { $contract->delete(); return redirect()->route('contract.index')->with('success', __('Contract successfully deleted.')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function description($id) { $contract = Contract::find($id); return view('contract.description', compact('contract')); } public function grid() { if(\Auth::user()->type == 'company' || \Auth::user()->type == 'client') { if(\Auth::user()->type == 'company') { $contracts = Contract::where('created_by', '=', \Auth::user()->creatorId())->get(); } else { $contracts = Contract::where('client_name', '=', \Auth::user()->id)->get(); } /* $defualtView = new UserDefualtView(); $defualtView->route = \Request::route()->getName(); $defualtView->module = 'contract'; $defualtView->view = 'grid'; User::userDefualtView($defualtView);*/ return view('contract.grid', compact('contracts')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } // public function fileUpload($id, Request $request) // { // if(\Auth::user()->type == 'company' || \Auth::user()->type == 'client' ) // { // $contract = Contract::find($id); // $request->validate(['file' => 'required']); // //storage limit // $image_size = $request->file('file')->getSize(); // $result = Utility::updateStorageLimit(\Auth::user()->creatorId(), $image_size); // if($result==1) // { // $files = $id . $request->file->getClientOriginalName(); // $file = Contract_attachment::create( // [ // 'contract_id' => $request->contract_id, // 'user_id' => \Auth::user()->id, // 'files' => $files, // ] // ); // $request->file->storeAs('contract_attechment', $files); // $dir = 'contract_attechment/'; // $files = $request->file->getClientOriginalName(); // $path = Utility::upload_file($request,'file',$files,$dir,[]); // if($path['flag'] == 1){ // $file = $path['url']; // } // else{ // return redirect()->back()->with('error', __($path['msg'])); // } // $return = []; // $return['is_success'] = true; // $return['download'] = route( // 'contracts.file.download', [ // $contract->id, // $file->id, // ] // ); // $return['delete'] = route( // 'contracts.file.delete', [ // $contract->id, // $file->id, // ] // ); // }else{ // $return = []; // $return['is_success'] = true; // $return['status'] =1; // $return['success_msg'] = ((isset($result) && $result!=1) ? '
' . $result . '' : ''); // } // return response()->json($return); // } // else // { // return response()->json( // [ // 'is_success' => false, // 'error' => __('Permission Denied.'), // ], 401 // ); // } // } public function fileUpload($id, Request $request) { if (\Auth::user()->type == 'company' || \Auth::user()->type == 'client') { $contract = Contract::find($id); $request->validate(['file' => 'required']); $file_path = 'contract_attechment/' . $contract->file; $image_size = $request->file('file')->getSize(); $result = Utility::updateStorageLimit(\Auth::user()->creatorId(), $image_size); if ($result == 1) { Utility::changeStorageLimit(\Auth::user()->creatorId(), $file_path); $files = $id . $request->file->getClientOriginalName(); $dir = 'contract_attechment/'; // $files = $request->file->getClientOriginalName(); $path = Utility::upload_file($request, 'file', $files, $dir, []); if ($path['flag'] == 1) { $file = $path['url']; } else { return redirect()->back()->with('error', __($path['msg'])); } // $request->file->storeAs('contract_attechment', $files); $file = Contract_attachment::create( [ 'contract_id' => $request->contract_id, 'user_id' => \Auth::user()->id, 'files' => $files, ] ); } $return = []; $return['is_success'] = true; $return['download'] = route( 'contracts.file.download', [ $contract->id, $file->id, ] ); $return['delete'] = route( 'contracts.file.delete', [ $contract->id, $file->id, ] ); return response()->json($return); } else { return response()->json( [ 'is_success' => false, 'error' => __('Permission Denied.'), ], 401 ); } } public function fileDownload($id, $file_id) { $contract =Contract::find($id); if(\Auth::user()->type == 'company') { $file = Contract_attachment::find($file_id); if($file) { $file_path = storage_path('contract_attechment/' . $file->files); return \Response::download( $file_path, $file->files, [ 'Content-Length: ' . filesize($file_path), ] ); } else { return redirect()->back()->with('error', __('File is not exist.')); } } else { return redirect()->back()->with('error', __('Permission Denied.')); } } public function fileDelete($id, $file_id) { $contract = Contract::find($id); $file = Contract_attachment::find($file_id); if($file) { $path = storage_path('contract_attechment/' . $file->files); if(file_exists($path)) { \File::delete($path); } $file->delete(); return redirect()->back()->with('success', __('contract file successfully deleted.')); } else { return response()->json( [ 'is_success' => false, 'error' => __('File is not exist.'), ], 200 ); } } public function contract_status_edit(Request $request, $id) { // dd($request->all()); $contract = Contract::find($id); $contract->status = $request->status; $contract->save(); } public function commentStore(Request $request ,$id) { $contract = new ContractComment(); $contract->comment = $request->comment; $contract->contract_id = $request->id; $contract->user_id = \Auth::user()->id; $contract->save(); // dd($contract); return redirect()->back()->with('success', __('comments successfully created!') . ((isset($smtp_error)) ? '
' . $smtp_error . '' : ''))->with('status', 'comments'); } // public function contract_descriptionStore($id, Request $request) // { // if(\Auth::user()->type == 'company') // { // $contract =Contract::find($id); // $contract->contract_description = $request->contract_description; // $contract->save(); // return redirect()->back()->with('success', __('Contact Description successfully saved.')); // // } // else // { // return redirect()->back()->with('error', __('Permission denied')); // // } // } public function contract_descriptionStore($id, Request $request) { if(\Auth::user()->type == 'company') { $contract =Contract::find($id); if($contract->created_by == \Auth::user()->creatorId()) { $contract->contract_description = $request->contract_description; $contract->save(); return response()->json( [ 'is_success' => true, 'success' => __('Contract description successfully saved!'), ], 200 ); } else { return response()->json( [ 'is_success' => false, 'error' => __('Permission Denied.'), ], 401 ); } } else { return response()->json( [ 'is_success' => false, 'error' => __('Permission Denied.'), ], 401 ); } } public function commentDestroy( $id) { $contract = ContractComment::find($id); $contract->delete(); return redirect()->back()->with('success', __('Comment successfully deleted!')); } public function noteStore($id, Request $request) { $contract = Contract::find($id); $notes = new ContractNotes(); $notes->contract_id = $contract->id; $notes->notes = $request->notes; $notes->user_id = \Auth::user()->id; $notes->save(); return redirect()->back()->with('success', __('Note successfully saved.')); } public function noteDestroy($id) { $contract = ContractNotes::find($id); $contract->delete(); return redirect()->back()->with('success', __('Note successfully deleted!')); } public function clientwiseproject($id) { $projects = Project::where('client_id', $id)->get(); $users=[]; foreach($projects as $key => $value ) { $users[]=[ 'id' => $value->id, 'name' => $value->project_name, ]; } // dd($users); return \Response::json($users); } public function printContract($id) { $contract = Contract::findOrFail($id); $settings = Utility::settings(); // $client = $contract->clients->first(); //Set your logo $logo = asset(Storage::url('uploads/logo/')); $company_logo = Utility::getValByName('company_logo'); $img = asset($logo . '/' . (isset($company_logo) && !empty($company_logo) ? $company_logo : 'logo-dark.png')); if($contract) { $color = '#' . $settings['invoice_color']; $font_color = Utility::getFontColor($color); return view('contract.preview' , compact('contract', 'color', 'img','settings','font_color')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function copycontract($id) { $contract = Contract::find($id); $clients = User::where('type', '=', 'Client')->get()->pluck('name', 'id'); $contractTypes = ContractType::where('created_by', '=', \Auth::user()->creatorId())->get()->pluck('name', 'id'); $project = Project::where('created_by', '=', \Auth::user()->creatorId())->get()->pluck('title','id'); $date = $contract->start_date . ' to ' . $contract->end_date; $contract->setAttribute('date', $date); return view('contract.copy', compact('contract','contractTypes','clients','project')); } public function copycontractstore(Request $request) { if(\Auth::user()->type == 'company') { $rules = [ 'client' => 'required', 'subject' => 'required', 'project_id' => 'required', 'type' => 'required', 'value' => 'required', 'status'=>'Pending', 'start_date' => 'required', 'end_date' => 'required', ]; $validator = \Validator::make($request->all(), $rules); if($validator->fails()) { $messages = $validator->getMessageBag(); return redirect()->route('contract.index')->with('error', $messages->first()); } // $date = explode(' to ', $request->date); $contract = new Contract(); $contract->client_name = $request->client; $contract->subject = $request->subject; $contract->project_id = implode(',',$request->project_id); $contract->type = $request->type; $contract->value = $request->value; $contract->start_date = $request->start_date; $contract->end_date = $request->end_date; $contract->description = $request->description; $contract->created_by = \Auth::user()->creatorId(); $contract->save(); //Send Email $setings = Utility::settings(); if($setings['new_contract'] == 1) { $client = \App\Models\User::find($request->client); $contractArr = [ 'contract_subject' => $request->subject, 'contract_client' => $client->name, 'contract_value' => \Auth::user()->priceFormat($request->value), 'contract_start_date' => \Auth::user()->dateFormat($request->start_date), 'contract_end_date' => \Auth::user()->dateFormat($request->end_date), 'contract_description' => $request->description, ]; // Send Email $resp = Utility::sendEmailTemplate('new_contract', [$client->id => $client->email], $contractArr); return redirect()->route('contract.index')->with('success', __('Contract successfully created.') . (($resp['is_success'] == false && !empty($resp['error'])) ? '
' . $resp['error'] . '' : '')); } //Slack Notification $setting = Utility::settings(\Auth::user()->creatorId()); if(isset($setting['contract_notification']) && $setting['contract_notification'] ==1){ $msg = $request->subject .' '.__("created by").' ' .\Auth::user()->name.'.'; Utility::send_slack_msg($msg); } //Telegram Notification $setting = Utility::settings(\Auth::user()->creatorId()); if(isset($setting['telegram_contract_notification']) && $setting['telegram_contract_notification'] ==1){ $msg = $request->subject .' '.__("created by").' ' .\Auth::user()->name.'.'; Utility::send_telegram_msg($msg); } return redirect()->route('contract.index')->with('success', __('Contract successfully created.')); } else { return redirect()->back()->with('error', __('Permission denied.')); } } public function sendmailContract($id,Request $request) { $contract = Contract::find($id); $contractArr = [ 'contract_id' => $contract->id, ]; $setings = Utility::settings(); if ($setings['new_contract'] == 1) { $client = User::find($contract->client_name); $estArr = [ 'email' => $client->email, 'contract_subject' => $contract->subject, 'contract_client' => $client->name, 'contract_start_date' => $contract->start_date, 'contract_end_date' => $contract->end_date, ]; $resp = Utility::sendEmailTemplate('new_contract', [$client->id => $client->email], $estArr); return redirect()->route('contract.show', $contract->id)->with('success', __('Email Send successfully!') . (($resp['is_success'] == false && !empty($resp['error'])) ? '
' . $resp['error'] . '' : '')); } } public function signature($id) { $contract = Contract::find($id); return view('contract.signature', compact('contract')); } public function signatureStore(Request $request) { $contract = Contract::find($request->contract_id); if(\Auth::user()->type == 'company'){ $contract->company_signature = $request->company_signature; } if(\Auth::user()->type == 'client'){ $contract->client_signature = $request->client_signature; } $contract->save(); return response()->json( [ 'Success' => true, 'message' => __('Contract Signed successfully'), ], 200 ); } public function pdffromcontract($contract_id) { $id = \Illuminate\Support\Facades\Crypt::decrypt($contract_id); $contract = Contract::findOrFail($id); return view('contract.template', compact('contract')); } }