public function store(CreateInvoiceRequest $request) { $user_id = Session::get('user_id'); $user = User::where('id', $user_id)->first(); $invoice = $user->invoice()->create($request->all()); $user_balance = $user->balance; if ($user->balance != 0) { session()->flash('flash_message', 'Your invoice has been created successfully! The amount minus user balance is: ' . ($request->amount - $user->balance)); $user->balance = 0; if ($user->save()) { $discount_invoice = new App\Invoice(); $discount_invoice->name = 'Paid from your balance for ' . $request->name; $discount_invoice->amount = $user_balance * -1; $discount_invoice->user()->associate($user); $discount_invoice->save(); } } else { session()->flash('flash_message', 'Your invoice has been created successfully!'); } $first_root_id = $user->root_id; if ($first_root_id !== null) { $first_root = User::where('id', $first_root_id)->first(); $commission_amount = $request->amount * 0.1; $commission = new App\Commission(); $commission->user()->associate($first_root); $commission->invoice()->associate($invoice); $commission->amount = $commission_amount; $commission->save(); $first_root->balance += $commission_amount; $first_root->save(); if ($first_root->root_id !== null) { $second_root = User::where('id', $first_root->root_id)->first(); $commission_amount = $request->amount * 0.05; $commission = new App\Commission(); $commission->invoice()->associate($invoice); $commission->user()->associate($second_root); $commission->amount = $commission_amount; $commission->save(); $second_root->balance += $commission_amount; $second_root->save(); if ($second_root->root_id !== null) { $third_root = User::where('id', $second_root->root_id)->first(); $commission_amount = $request->amount * 0.02; $commission = new App\Commission(); $commission->invoice()->associate($invoice); $commission->user()->associate($third_root); $commission->amount = $commission_amount; $commission->save(); $third_root->balance += $commission_amount; $third_root->save(); } } } $invoices = Invoice::latest()->get()->take(5); return view('admin', compact('invoices')); }
/** * Store a newly created resource in storage. * * @return Response */ public function store(CreateInvoiceRequest $request) { $data = $request->input(); $data['documents'] = $request->file('documents'); $action = Input::get('action'); $entityType = Input::get('entityType'); $invoice = $this->invoiceService->save($data); $entityType = $invoice->getEntityType(); $message = trans("texts.created_{$entityType}"); $input = $request->input(); $clientPublicId = isset($input['client']['public_id']) ? $input['client']['public_id'] : false; if ($clientPublicId == '-1') { $message = $message . ' ' . trans('texts.and_created_client'); } Session::flash('message', $message); if ($action == 'email') { $this->emailInvoice($invoice, Input::get('pdfupload')); } return url($invoice->getRoute()); }
/** * Store a newly created resource in storage. * * @return Response */ public function store(CreateInvoiceRequest $request) { $data = $request->input(); $data['documents'] = $request->file('documents'); $action = Input::get('action'); $entityType = Input::get('entityType'); $invoice = $this->invoiceService->save($data); $entityType = $invoice->getEntityType(); $message = trans("texts.created_{$entityType}"); // check if we created a new client with the invoice // TODO: replace with HistoryListener $input = $request->input(); $clientPublicId = isset($input['client']['public_id']) ? $input['client']['public_id'] : false; if ($clientPublicId == '-1') { $message = $message . ' ' . trans('texts.and_created_client'); $trackUrl = URL::to('clients/' . $invoice->client->public_id); Utils::trackViewed($invoice->client->getDisplayName(), ENTITY_CLIENT, $trackUrl); } Session::flash('message', $message); if ($action == 'email') { return $this->emailInvoice($invoice, Input::get('pdfupload')); } return redirect()->to($invoice->getRoute()); }