⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.19
Server IP:
178.33.27.10
Server:
Linux cpanel.dev-unit.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
Server Software:
Apache/2.4.57 (Unix) OpenSSL/1.0.2k-fips
PHP Version:
8.2.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
id
/
crm.dev-unit.com
/
app
/
Http
/
Controllers
/
View File Name :
EstimateController.php
<?php namespace App\Http\Controllers; use App\Http\Requests\CreateEstimateRequest; use App\Http\Requests\UpdateEstimateRequest; use App\Models\Estimate; use App\Models\Setting; use App\Models\Task; use App\Repositories\EstimateRepository; use Barryvdh\DomPDF\Facade as PDF; use Exception; use Flash; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\View\Factory; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\View\View; class EstimateController extends AppBaseController { /** @var EstimateRepository */ private $estimateRepository; public function __construct(EstimateRepository $estimateRepo) { $this->estimateRepository = $estimateRepo; } /** * Display a listing of the Estimate. * * @return Factory|View */ public function index() { $statusArr = Estimate::STATUS; return view('estimates.index', compact('statusArr')); } /** * Show the form for creating a new Estimate. * * @param null $customerId * @return Factory|View */ public function create($customerId = null) { $data = $this->estimateRepository->getSyncList(); $settings = Setting::pluck('value', 'key'); return view('estimates.create', compact('data', 'customerId', 'settings')); } /** * Store a newly created Estimate in storage. * * @param CreateEstimateRequest $request * @return JsonResponse */ public function store(CreateEstimateRequest $request) { try { DB::beginTransaction(); $input = $request->all(); if (array_sum($input['quantity']) > 9999999) { return $this->sendError(__('messages.common.quantity_is_not_greater_than')); } $estimate = $this->estimateRepository->store($input); DB::commit(); Flash::success(__('messages.estimate.estimate_saved_successfully')); return $this->sendResponse($estimate, __('messages.estimate.estimate_saved_successfully')); } catch (Exception $e) { DB::rollBack(); return $this->sendError($e->getMessage()); } } /** * Display the specified Estimate. * * @param Estimate $estimate * @return Factory|View */ public function show(Estimate $estimate) { $estimate = $this->estimateRepository->getSyncForEstimateDetail($estimate->id); $status = Task::STATUS; $priorities = Task::PRIORITY; $groupName = (request('group') == null) ? 'estimate_details' : (request('group')); return view("estimates.views.$groupName", compact('estimate', 'status', 'priorities', 'groupName')); } /** * Show the form for editing the specified Estimate. * * @param Estimate $estimate * @return Application|Factory|\Illuminate\Contracts\View\View|RedirectResponse */ public function edit(Estimate $estimate) { $estimate = Estimate::with('salesItems.taxes')->findOrFail($estimate->id); if ($estimate->status == Estimate::STATUS_EXPIRED || $estimate->status == Estimate::STATUS_DECLINED) { return redirect()->back(); } $data = $this->estimateRepository->getSyncList(); $addresses = []; foreach ($estimate->estimateAddresses as $index => $address) { $addresses[$index] = $address; } return view('estimates.edit', compact('data', 'estimate', 'addresses')); } /** * Update the specified Estimate in storage. * * @param Estimate $estimate * @param UpdateEstimateRequest $request * @return JsonResponse */ public function update(Estimate $estimate, UpdateEstimateRequest $request) { try { DB::beginTransaction(); $input = $request->all(); if (array_sum($input['quantity']) > 9999999) { return $this->sendError(__('messages.common.quantity_is_not_greater_than')); } $estimate = $this->estimateRepository->update($input, $estimate); DB::commit(); Flash::success(__('messages.estimate.estimate_updated_successfully')); return $this->sendResponse($estimate, __('messages.estimate.estimate_updated_successfully')); } catch (Exception $e) { DB::rollBack(); return $this->sendError($e->getMessage()); } } /** * Remove the specified Estimate from storage. * * @param Estimate $estimate * @return JsonResponse */ public function destroy(Estimate $estimate) { try { DB::beginTransaction(); $this->estimateRepository->deleteEstimate($estimate); DB::commit(); return $this->sendSuccess('Estimate deleted successfully.'); } catch (Exception $e) { DB::rollBack(); return $this->sendError($e->getMessage()); } } /** * @param Estimate $estimate * @param Request $request * @return mixed */ public function changeStatus(Estimate $estimate, Request $request) { $this->estimateRepository->changeEstimateStatus($estimate->id, $request->get('status')); return $this->sendSuccess(__('messages.estimate.estimate_status_updated_successfully')); } /** * @param Estimate $estimate * @return Factory|View */ public function viewAsCustomer(Estimate $estimate) { $estimate = $this->estimateRepository->getSyncForEstimateDetail($estimate->id); $totalPaid = 0; $settings = Setting::pluck('value', 'key')->toArray(); return view('estimates.view_as_customer', compact('estimate', 'totalPaid', 'settings')); } /** * @param Estimate $estimate * @return mixed */ public function convertToPdf(Estimate $estimate) { $estimate = $this->estimateRepository->getSyncForEstimateDetail($estimate->id); $totalPaid = 0; $settings = Setting::pluck('value', 'key')->toArray(); $pdf = PDF::loadView('estimates.estimate_pdf', compact(['estimate', 'totalPaid', 'settings'])); return $pdf->download(__('messages.estimate.estimate_prefix').$estimate->estimate_number.'.pdf'); } /** * @param Estimate $estimate * @return JsonResponse */ public function convertToInvoice(Estimate $estimate) { $invoice = $this->estimateRepository->convertToInvoice($estimate); return $this->sendResponse($invoice, __('messages.estimate.convert_estimate_to_invoice')); } /** * @param Request $request * @return mixed */ public function getCustomerAddress(Request $request) { $address = getAddressOfCustomer($request->customer_id); if (! empty($address[0])) { $address[0]->country = $address[0]->country != null ? $address[0]->addressCountry->name : 'null'; } if (! empty($address[1])) { $address[1]->country = $address[1]->country != null ? $address[1]->addressCountry->name : 'null'; } return $this->sendResponse($address, 'Address retrieved successfully'); } }