/**
  * Delete a postal address.
  *
  * @param \Illuminate\Http\Request $request
  * @return \Illuminate\Http\RedirectResponse
  */
 public function postDeletePostalAddress(Request $request)
 {
     $pa = PostalAddress::findOrFail($request->input('postal_address_id'));
     if ($pa->user->userId != Auth::user()->userId) {
         return redirect('/account/postal-addresses')->withErrors(["You can only delete your own postal addresses."]);
     }
     if ($pa->purchases()->count()) {
         return redirect('/account/postal-addresses')->withErrors(["You cannot delete postal addresses that are associated with purchases."]);
     }
     $pa->delete();
     return redirect('/account/postal-addresses')->withStatus('Postal address deleted.');
 }
 /**
  * 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.");
 }