Example #1
0
 /**
  * Generate an address for a location
  * @param $location
  * @return string
  */
 private function generateAddress($location)
 {
     $locationName = $location->locationKeyCode;
     $locationId = $location->id;
     $location = $this->location->findOrFail($locationId);
     $levelId = $location->level_id;
     $level = $this->level_building->findOrFail($levelId);
     $levelName = $level->levelName;
     $building_id = $level->building_id;
     $building = $this->building->findOrFail($building_id);
     $buildingName = $building->buildingKeyCode;
     $street_id = $building->street_id;
     $street = $this->street->findOrFail($street_id);
     $streetName = $street->streetKeyCode;
     $agent_id = $street->agent_id;
     $this->agent_id = $agent_id;
     //$agent = $this->agent->findOrFail($agent_id);
     $agentName = \App\Agent::where('user_id', '=', $agent_id)->first()->agentName;
     return $buildingName . $levelName . $locationName . "-" . $streetName . " ( " . $agentName . " ) ";
 }
 public function product_search(Request $request)
 {
     $this->setMetadata('Tìm kiếm tin đăng');
     $product_type_id = $request->input('product_type');
     $province_id = $request->input('province');
     $district_id = $request->input('district');
     $ward_id = $request->input('ward');
     $street_id = $request->input('street');
     $price_range_id = $request->input('price');
     $area_range_id = $request->input('area');
     $incense_type_id = $request->input('incense');
     $limit = Config::findByKey('rows_per_page_product')->first()->value;
     $searchDescription = "";
     $product_type = null;
     $province = null;
     $district = null;
     $ward = null;
     $street = null;
     $query = Product::query();
     try {
         if (isset($product_type_id) && $product_type_id != "") {
             $query->where('product_type_id', $product_type_id);
             $product_type = product_type::findOrFail($product_type_id);
             $searchDescription .= $product_type->name;
         }
         if (isset($province_id) && $province_id != "") {
             $query->where('province_id', $province_id);
             $province = Province::findOrFail($province_id);
             $searchDescription .= ", " . $province->name;
         }
         if (isset($district_id) && $district_id != "") {
             $query->where('district_id', $district_id);
             $district = District::findOrFail($district_id);
             $searchDescription .= ", " . $district->name;
         }
         if (isset($ward_id) && $ward_id != "") {
             $query->where('ward_id', $ward_id);
             $ward = Ward::findOrFail($ward_id);
             $searchDescription .= ", " . $ward->name;
         }
         if (isset($street_id) && $street_id != "") {
             $query->where('street_id', $street_id);
             $street = Street::findOrFail($street_id);
             $searchDescription .= ", " . $street->name;
         }
     } catch (Exception $e) {
     }
     $products = $query->paginate($limit);
     $product_types = Product_type::where('active', 1)->orderBy('priority')->orderBy('created_at', 'desc')->get();
     $hcmProvince = Province::findByKey('ho-chi-minh')->first();
     // dd($hcmProvince->id);
     $districtProduct = District::where('province_id', '=', $hcmProvince->id)->where('is_publish', 1)->orderBy('priority')->orderBy('created_at', 'desc')->get();
     return view('frontend.sites1.product_search', ['products' => $products, 'product_types' => $product_types, 'districtProduct' => $districtProduct, 'searchDescription' => $searchDescription]);
 }
 public function saveAddress(Request $request, $territoryId = null, $addressId = null)
 {
     if (!$this->hasAccess($request)) {
         return Response()->json(['error' => 'Access denied.'], 500);
     }
     if (empty($territoryId)) {
         return ['error' => 'Territory not found', 'message' => 'Territory not found'];
     }
     if (Gate::denies('update-addresses')) {
         return Response()->json(['error' => 'Method not allowed'], 403);
     }
     if (!empty($addressId)) {
         try {
             $newAddress = $this->unTransform($request->all(), 'address');
             $address = Address::findOrFail($addressId);
             $street = Street::findOrFail($address->street_id)->first();
             // if(!$street->is_apt_building)
             // $newAddress['lat'] = 0;
             $data = $address->update($newAddress);
         } catch (Exception $e) {
             $data = ['error' => 'Address not updated', 'message' => $e->getMessage()];
         }
     } else {
         // dd($request->all());
         // dd($this->unTransform($request->all(), 'address'));
         try {
             // return ['data' => ['street_street' => empty($request->input('street_street')), 'all' => $request->all()]];
             $transformedData = $this->unTransform($request->all(), 'address');
             if (!empty($request->input('street_street'))) {
                 $transformedData['street'] = [['street' => $request->input('street_street'), 'isAptBuilding' => $request->input('street_isAptBuilding')]];
             }
             // return ['data' => $transformedData];
             $territory = Territory::findOrFail($territoryId);
             if (!empty($transformedData['street'])) {
                 $street = Street::where('street', $transformedData['street'][0]['street'])->first();
                 if (empty($street)) {
                     $street = Street::create($transformedData['street'][0]);
                 }
                 // $addressWithStreet = ($address && $street) ? $address->street()->associate($street) : $address;
                 $transformedData['street_id'] = $street ? $street->id : null;
             }
             $address = Address::where(['address' => $transformedData['address'], 'street_id' => $transformedData['street_id'], 'apt' => !empty($transformedData['apt']) ? $transformedData['apt'] : ''])->first();
             // Address alredy exist?
             if (!empty($address)) {
                 // If inactive, make it active
                 // dd($address);
                 if ($address['inactive']) {
                     $address['inactive'] = 0;
                     $data = $address->update(['inactive', $address['inactive']]);
                 }
                 // If in another territory?
                 if ($territoryId != $address->territory_id) {
                     $territoryBelongs = Territory::findOrFail($address->territory_id);
                     // Error: "This address belongs to territory number []"
                     return Response()->json(['error' => 'This address belongs to territory ' . $territoryBelongs->number . '. Please contact Admin about moving this address.', 'data' => ''], 202);
                 } else {
                     return Response()->json(['error' => 'This address already exists in this territory.', 'data' => ''], 202);
                 }
             } else {
                 $address = !empty($territory) ? $territory->addresses()->create($transformedData) : null;
             }
             $data = $address && !empty($transformedData['notes']) ? $address->notes()->create($transformedData['notes'][0]) : $address;
         } catch (Exception $e) {
             $data = ['error' => 'Address not added', 'message' => $e->getMessage()];
             // {"error":"SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '200-23' for key 'addresses_address_street_id_unique' (SQL: insert into `addresses` (`name`, `address`, `street_id`, `territory_id`, `updated_at`, `created_at`) values (Jean Marc, 200, 23, 34, 2016-01-14 18:36:49, 2016-01-14 18:36:49))"}
         }
     }
     return ['data' => $data];
 }