/** * Add a postal address. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\RedirectResponse */ public function postPostalAddress(Request $request) { $this->validates($request->all(), ['name' => 'required', 'street1' => 'required', 'city' => 'required', 'county' => 'required', 'postcode' => 'required', 'country' => 'required']); $pa = new PostalAddress(); $pa->name = $request->input('name'); $pa->street1 = $request->input('street1'); $pa->street2 = $request->input('street2'); $pa->city = $request->input('city'); $pa->county = $request->input('county'); $pa->postcode = $request->input('postcode'); $pa->country = $this->country($request->input('country'))['alpha2']; $pa->added = time(); $pa->user()->associate(Auth::user()); $pa->save(); return redirect('/account/postal-addresses')->withStatus('Postal address added.'); }
/** * Apply a collection address to a purchase. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\RedirectResponse */ public function postCollectionAddress(Request $request) { $purchase = Purchase::findOrFail($request->input('purchase_id')); if ($purchase->item->seller->userId != Auth::user()->userId) { return redirect('/inventory/sold')->withErrors(["You are not the seller of this item."]); } if ($purchase->deliveryOption) { return redirect('/inventory/sold')->withErrors(["This item is not due to be collected."]); } if ($purchase->hasAddress()) { return redirect('/inventory/sold')->withErrors(["You have already provided a collection address for this item."]); } if ($request->input('postal_address') == 'add') { $postal_address = new PostalAddress(); $postal_address->name = $request->input('name'); $postal_address->street1 = $request->input('street1'); $postal_address->street2 = $request->input('street2'); $postal_address->city = $request->input('city'); $postal_address->county = $request->input('county'); $postal_address->country = $request->input('country'); $postal_address->postcode = $request->input('postcode'); $postal_address->user()->associate(Auth::user()); if (!Iso3166::exists($request->input('country'))) { return redirect()->back()->withErrors(['country' => 'Please select a valid country.']); } if ($request->input('remember')) { $postal_address->save(); } } elseif (!($postal_address = PostalAddress::find($request->input('postal_address')))) { return redirect()->back()->withErrors(['postal_address' => 'Please select a valid postal address.']); } elseif ($postal_address->user != Auth::user()) { return redirect()->back()->withErrors(['postal_address' => 'You can only select your own postal addresses.']); } $purchase->useAddress($postal_address); $purchase->save(); $purchase->buyer->sendEmail('Your item is ready for collection', 'emails.item.collection', ['item_name' => $purchase->item->name, 'seller_name' => $purchase->name, 'seller_street1' => $purchase->street1, 'seller_street2' => $purchase->street2, 'seller_city' => $purchase->city, 'seller_county' => $purchase->county, 'seller_postcode' => $purchase->postcode, 'seller_country' => Iso3166::get($purchase->country)->name]); return redirect('/inventory/sold')->withStatus("Your collection address has been saved and sent to the buyer."); }