public function actionSaveGlobalAddiSer() { $loggedId = Yii::app()->session['loggedId']; $extraServices = AdditionalServicePrice::model()->findAll(array('condition' => 'service_id=:service_id', 'params' => array(':service_id' => $loggedId))); foreach ($extraServices as $extra) { foreach ($_REQUEST['AdditionalServicePrice'] as $key => $value) { if ($extra->additional_service_id == $key) { $extra->price = $value; $extra->save(fasle); } } } echo "success"; die; //echo "<pre>";print_r($_REQUEST);die; }
public function actionCompareQuotes() { $ses = Yii::app()->session['CleaningDetail']; $newAr = array(); $userDetail = array(); $companyServiceSum = array(); $sumCompanyAdnlser = array(); $sumadminAdnlser = array(); $sumArrayRatingAvg = array(); $sums = array(); $total = 0; //$values=$_REQUEST; //Yii::app()->session['CleaningReqst'] = $values; $requestCleaningPage = Yii::app()->session['CleaningReqst']; // echo "<pre>";print_r($requestCleaningPage);die; $serTypeId = Yii::app()->session['ServiceTypeId']; // echo "<pre>";print_r($serTypeId);die; // to keep the values filled on cleaning page if go back on previous page from comapre quotes page //$cleaninServices=Yii::app()->session['requestfrmcleaning']; // echo "<pre>";print_r($cleaninServices);die; $zip = $ses['CleaningTime']['PostCode']; $cleaningDate = $ses['CleaningTime']['CleaningDate']; $time = $ses['CleaningTime']['time']; // code to calculate the postcodes within radius $detailCleaning = $_REQUEST['Cleaning']; if (key_exists('Property', $_REQUEST['Cleaning'])) { $property = $_REQUEST['Cleaning']['Property']; } else { $property = ''; } $baths = $_REQUEST['Cleaning']['Bathrooms']; $beds = $_REQUEST['Cleaning']['Bedrooms']; // get the customer lat and long from where we want to calculate other postcodes $recUk = UkPostcodes::model()->findByPk($zip); $r = 3959; //earth radius in miles $d = 5.6; //$d=5.6*60*1.1515; $c = count($recUk); if ($c > 0) { $lat1 = $recUk->latitude; $lon1 = $recUk->longitude; $nlat1 = deg2rad($lat1); $nlon1 = deg2rad($lon1); $latN = rad2deg(asin(sin(deg2rad($lat1)) * cos($d / $r) + cos(deg2rad($lat1)) * sin($d / $r) * cos(deg2rad(0)))); $latS = rad2deg(asin(sin(deg2rad($lat1)) * cos($d / $r) + cos(deg2rad($lat1)) * sin($d / $r) * cos(deg2rad(180)))); $lonE = rad2deg(deg2rad($lon1) + atan2(sin(deg2rad(90)) * sin($d / $r) * cos(deg2rad($lat1)), cos($d / $r) - sin(deg2rad($lat1)) * sin(deg2rad($latN)))); $lonW = rad2deg(deg2rad($lon1) + atan2(sin(deg2rad(270)) * sin($d / $r) * cos(deg2rad($lat1)), cos($d / $r) - sin(deg2rad($lat1)) * sin(deg2rad($latN)))); $query = "SELECT * from ccobs_service_user WHERE (lat <= {$latN} AND lat >= {$latS} AND longitude <= {$lonE} AND longitude >= {$lonW}) AND (lat != {$lat1} AND longitude != {$lon1}) AND city != ' ' ORDER BY lat, longitude "; $dataReader = Yii::app()->db->createCommand($query)->query(); $res = $dataReader->readAll(); //echo "<pre>";print_r($res); /*calculate price here*/ if (!empty($res)) { foreach ($res as $userIds) { $comp[] = $userIds['company_name']; $id = $userIds['id']; //$finalRes=array_combine($comp,$id); $userDetail[] = ServiceUser::model()->with('priceAdmins')->findAll(array('condition' => ' service_id=:serId AND service_type_id=:sertype', 'params' => array(':serId' => $userIds['id'], ':sertype' => $serTypeId))); // $additionalService[] = AdditionalServicePrice::model()->with('additionalService')->findAll(array('condition' => 'service_id=:serId', 'params' => array(':serId' => $userIds['id']))); } //die; //echo "<pre>";print_r($additionalService); die; /*loop for additional service starts here*/ foreach ($additionalService as $adnlService) { foreach ($adnlService as $service) { // echo "<pre>";print_r($service); $service_id = $service->service_id; $service_name = $service->additionalService['service_name']; $price = $service->price; $adnlarr = array(array($service_id => array($service_name => $price))); foreach ($adnlarr[0] as $id => $val) { foreach ($val as $serv => $servVal) { $newAr[$id][$serv] = $servVal; if (key_exists($serv, $_REQUEST['Additional'])) { $newAr[$id][$serv] = $servVal * $_REQUEST['Additional'][$serv]; } } } } } foreach ($res as $i => $noOfUsers) { $noUsrId[] = $noOfUsers['id']; //$compNam[]=$noOfUsers['company_name']; $compNam[] = $noOfUsers['company_name'] . "+" . $noOfUsers['id']; $latitude[] = $noOfUsers['lat']; $longitude[] = $noOfUsers['longitude']; $nlatitude = deg2rad($noOfUsers['lat']); $nlongitude = deg2rad($noOfUsers['longitude']); $delta_lat = $nlatitude - $nlat1; $delta_lon = $nlongitude - $nlon1; $temp = pow(sin($delta_lat / 2.0), 2) + cos($nlatitude) * cos($lat1) * pow(sin($delta_lon / 2.0), 2); $EARTH_RADIUS = 3956; $distance[] = $EARTH_RADIUS * 2 * atan2(sqrt($temp), sqrt(1 - $temp)); $compName = array_combine($distance, $compNam); //$compName=array_combine($distance); } //echo "<pre>";print_r($compName);die; /* calculate the new price for updated fields here*/ //echo $serTypeId;die; foreach ($res as $nearbycomp) { $serviceTypePrice = PriceAdmin::model()->findAll(array('condition' => 'service_id=:service_id AND service_type_id=:service_type_id', 'params' => array(':service_id' => $nearbycomp['id'], ':service_type_id' => $serTypeId))); foreach ($serviceTypePrice as $serP) { $array[$serP['service_id']] = array('Bedrooms' => $serP['bedroom'], 'Bathrooms' => $serP['bathroom'], 'LivingRoom' => $serP['living_room'], 'KitchenStaircases' => $serP['kitchen_staircases'], 'CarpetsInteriorWindows' => $serP['carpets_interior_windows'], 'Property' => $serP['property'], 'Desk' => $serP['desk'], 'Cupboards' => $serP['cupboards'], 'Kitchen' => $serP['kitchen'], 'Staircases' => $serP['staircases'], 'Elevator' => $serP['elevator']); } $providerAdnlPrice = ProviderAdditionalprices::model()->findAll(array('condition' => 'service_id=:service_id AND service_type_id=:service_type_id', 'params' => array(':service_id' => $nearbycomp['id'], ':service_type_id' => $serTypeId))); foreach ($providerAdnlPrice as $servicePro) { $getIdSerTyAdnlPrice[$servicePro['service_id']][$servicePro['servicetype_additional_id']] = $servicePro['provider_adnlprice']; } //echo "<pre>";print_r($providerAdnlPrice); } //die; //echo "<pre>";print_r($array);die; //price calculation for service types starts here if (!empty($_REQUEST['Cleaning'])) { foreach ($array as $companyId => $values) { foreach ($_REQUEST['Cleaning'] as $service => $number) { $serviceVal = $values[$service]; if (key_exists($companyId, $companyServiceSum)) { $companyServiceSum[$companyId] += $number * $serviceVal; } } } } else { //echo "fsfs"; // echo "<pre>";print_r($requestCleaningPage); //echo "<pre>";print_r($array);die; foreach ($array as $companyId => $values) { foreach ($requestCleaningPage['Cleaning'] as $service => $number) { $serviceVal = $values[$service]; $companyServiceSum[$companyId] += $number * $serviceVal; } } } //price calculation for service types ends here //echo "<pre>";print_r($_REQUEST); //echo "<pre>";print_r($getIdSerTyAdnlPrice); //echo "<pre>";print_r($companyServiceSum); //price calculation for additionl service having price added by company if (!empty($getIdSerTyAdnlPrice)) { foreach ($getIdSerTyAdnlPrice as $cmpnyId => $priceCompAdnl) { //$companyId[]=$cmpnyId; if (!empty($_REQUEST['Additional'])) { foreach ($_REQUEST['Additional'] as $key => $value) { $adnlvalues = $priceCompAdnl[$key]; //echo "<pre>";print_r($key); if (key_exists($cmpnyId, $sumCompanyAdnlser)) { $sumCompanyAdnlser[$cmpnyId] += $value * $adnlvalues; } } } else { foreach ($requestCleaningPage['Additional'] as $key => $value) { $adnlvalues = $priceCompAdnl[$key]; //echo "<pre>";print_r($key); $sumCompanyAdnlser[$cmpnyId] += $value * $adnlvalues; } } } } //echo "<pre>";print_r($sumCompanyAdnlser); //price calculation for additional service having price added by company $serTypel = ServicetypeAdditionalservices::model()->findAll(array('condition' => 'service_type_id=:service_type_id', 'params' => array(':service_type_id' => $serTypeId))); foreach ($res as $nearbycomp) { foreach ($serTypel as $priceAdnlAdmin) { //if($nearbycomp['id']!=) $admnAdnlPrice[$nearbycomp['id']][$priceAdnlAdmin['id']] = $priceAdnlAdmin['additional_service_price']; } } // echo $companyId;die; //echo "<pre>";print_r($admnAdnlPrice);die; //echo "<pre>";print_r($serTypel);die; foreach ($admnAdnlPrice as $Id => $priceAdminAdnl) { //$companyId[]=$cmpnyId; if (!empty($_REQUEST['Additional'])) { foreach ($_REQUEST['Additional'] as $sky => $v) { $adminadnlvalues = $priceAdminAdnl[$sky]; //echo "<pre>";print_r($key); if (key_exists($Id, $sumadminAdnlser)) { $sumadminAdnlser[$Id] += $v * $adminadnlvalues; } } } else { foreach ($requestCleaningPage['Additional'] as $sky => $v) { $adminadnlvalues = $priceAdminAdnl[$sky]; //echo "<pre>";print_r($key); $sumadminAdnlser[$Id] += $v * $adminadnlvalues; } } } //echo "<pre>";print_r($sumadminAdnlser);die; if (!empty($sumCompanyAdnlser)) { $finalAdnlvalues = array_replace($sumadminAdnlser, $sumCompanyAdnlser); } // code to sum the service types and additional service if (!empty($finalAdnlvalues)) { foreach (array_keys($companyServiceSum + $finalAdnlvalues) as $key) { $sums[$key] = (isset($companyServiceSum[$key]) ? $companyServiceSum[$key] : 0) + (isset($finalAdnlvalues[$key]) ? $finalAdnlvalues[$key] : 0); } } //echo "<pre>";print_r($sums); //get the price for per mile $dist = DistanceCoverage::model()->findAll(); foreach ($dist as $dkey => $dprice) { $distprice[$dprice['service_id']] = $dprice['price_per_mile']; } if (!empty($sums)) { $total = array(); foreach (array_keys($sums + $distprice) as $k) { $total[$k] = (isset($sums[$k]) ? $sums[$k] : 0) + (isset($distprice[$k]) ? $distprice[$k] : 0); } } //echo "<pre>";print_r($total);die; // code to get the rating foreach ($compName as $ratingIds) { $serIds = explode('+', $ratingIds); $rateIds[] = $serIds['1']; //echo "<pre>";print_r($rateIds); } //die; foreach ($rateIds as $ratingId) { //echo "<pre>";print_r($ratingId);findColumn $ratingsreview[$ratingId] = ServiceReview::model()->findAll(array("select" => "rating", 'condition' => 'service_id=:service_id', 'params' => array(':service_id' => $ratingId))); } $res12 = array_combine($rateIds, $ratingsreview); //echo "<pre>";print_r($res12); foreach ($res12 as $k1 => $sub) { foreach ($sub as $id => $value) { if (key_exists($k1, $sumArrayRatingAvg)) { $sumArrayRatingAvg[$k1] += $value['rating']; } } if (count($res12[$k1]) && key_exists($k1, $sumArrayRatingAvg)) { $sumArrayRatingAvg[$k1] /= count($res12[$k1]); } } //echo "<pre>";print_r($sumArrayRatingAvg);die; /*foreach ($myArray as $k=>$subArray) { foreach ($subArray as $id=>$value) { $sumArray[$id]+=$value; } }*/ //echo "<pre>";print_r($res12);die; /*foreach($eachMonth as $month => $values) { echo $month.' : '.$abc[$month] / count($values); }*/ //echo "<pre>";print_r($ratingsreview);die; //echo "<pre>";print_r($companyServiceSum); //echo "<pre>";print_r($finalAdnlvalues); // echo "<pre>";print_r($withinrange); //echo "<pre>";print_r($sums);die; /*calculate the price for updated fields ends here*/ } } // code ends here to calculate the distance between postcodes $arr = $_REQUEST; //echo "<pre>";print_r($arr);//die; if (!empty($arr['Additional'])) { foreach ($arr['Additional'] as $k => $a) { $adnlnames = ServicetypeAdditionalservices::model()->findAll(array('condition' => 'id=:id', 'params' => array(':id' => $k))); foreach ($adnlnames as $n) { $arr1[$k] = $n['additional_service_name']; } } // foreach to get the adnl service name foreach ($arr['Additional'] as $origKey => $value) { // New key that we will insert into $newArray with $newKey = $arr1[$origKey]; $newArrayAdnl[$newKey] = $value; } } //echo "<pre>";print_r($newArray);die; Yii::app()->session['detail'] = $arr; $faq = Faq::model()->findAll(array('condition' => 'status=1')); //echo "<pre>";print_r($faq);die; $links = CmsPages::model()->findAll(); Yii::app()->params['MyArray'] = $links; if (isset($res) && !empty($res)) { $this->render('comparequotes', array('additionalPrice' => $newAr, 'userDetail' => $userDetail, 'faq' => $faq, 'values' => $newArrayAdnl, 'CompanyName' => $compName, 'property' => $property, 'baths' => $baths, 'beds' => $beds, 'sums' => $total, 'detailCleaning' => $detailCleaning, 'sumArrayRatingAvg' => $sumArrayRatingAvg, 'requestCleaningPage' => $requestCleaningPage)); } else { $this->render('comparequotes', array('additionalPrice' => $newAr, 'userDetail' => $userDetail, 'faq' => $faq, 'values' => $newArrayAdnl, 'property' => $property, 'baths' => $baths, 'beds' => $beds, 'sums' => $total, 'detailCleaning' => $detailCleaning, 'sumArrayRatingAvg' => $sumArrayRatingAvg, 'requestCleaningPage' => $requestCleaningPage)); } /* $res=ServiceUser::model()->findAll(array('condition'=>'zipcode =:scode', 'params'=>array( ':scode'=>$zip, ), )); $faq=Faq::model()->findAll(array('condition'=>'status=1')); $this->render('comparequotes',array('faq'=>$faq,'values'=>$arr,'CompanyName'=>$compName));*/ }
public function actionProviderEdit($id) { $model = new ServiceUser(); $detail = ServiceUser::model()->with('additionalServicePrices')->findByPk(array('id' => $id)); // echo "<pre>";print_r($detail);die; $additionalService = AdditionalServices::model()->findAll(); //echo "<pre>";print_r($additionalService);die; /*foreach($detail->priceAdmins as $i=>$d) { echo "<pre>";print_r($d); } die;*/ if (isset($_POST['ServiceUser'])) { //echo "<pre>";print_r($_REQUEST);die; $model->attributes = $_POST['ServiceUser']; $rnd = rand(0, 9999); $uploadedFile = CUploadedFile::getInstance($model, 'company_logo'); $fileName = "{$rnd}-{$uploadedFile}"; // random number + file name //echo "<pre>";print_r($_FILES);die; if ($model->validate()) { $rec = ServiceUser::model()->with('additionalServicePrices')->findByPk(array('id' => $id)); //echo "<pre>";print_r($_REQUEST);die; $cname = $_REQUEST['ServiceUser']['company_name']; $city = $_REQUEST['ServiceUser']['city']; $zip = $_REQUEST['ServiceUser']['zipcode']; $rec->company_name = $cname; $rec->city = $city; $rec->zipcode = $zip; if (is_uploaded_file($_FILES['ServiceUser']['tmp_name']['company_logo'])) { $rec->company_logo = $fileName; } /*code to save the details for price in db starts here*/ foreach ($rec->priceAdmins as $editPrice) { //echo "<pre>";print_r($editPrice); $editPrice->bedroom = $_REQUEST['PriceAdmin'][$editPrice->service_type_id][0]; $editPrice->bathroom = $_REQUEST['PriceAdmin'][$editPrice->service_type_id][1]; if (!empty($_REQUEST['PriceAdmin'][$editPrice->service_type_id][2]) || !empty($_REQUEST['PriceAdmin'][$editPrice->service_type_id][3])) { $editPrice->property = $_REQUEST['PriceAdmin'][$editPrice->service_type_id][2]; $editPrice->desk = $_REQUEST['PriceAdmin'][$editPrice->service_type_id][3]; } $editPrice->save(); } //die; if (empty($rec->additionalServicePrices)) { foreach ($additionalService as $i => $price) { $mod = new AdditionalServicePrice(); $date = date('Y-m-d'); $mod->date = $date; $mod->additional_service_id = $price->id; $mod->price = $_REQUEST['PriceAditional'][$price->service_name]; $mod->service_id = $id; $mod->save(false); } } //die; foreach ($rec->additionalServicePrices as $editPrice) { //echo "<pre>";print_r($editPrice); $serName = $editPrice->additionalService['service_name']; $editPrice->price = $_REQUEST['PriceAditional'][$serName]; $editPrice->save(); } //die; /*code to save the details for price in db ends here*/ if ($rec->save()) { if (is_uploaded_file($_FILES['ServiceUser']['tmp_name']['company_logo'])) { $uploadedFile->saveAs(Yii::app()->basePath . '/../CompanyLogo/' . $fileName); } $this->redirect(array('providerdetails')); } } else { $errors = $model->getErrors(); //var_dump($errors); } } $this->render('provideredit', array('companyDetail' => $detail, 'model' => $model, 'additionalService' => $additionalService)); }