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;
 }
Example #2
0
 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));*/
 }
Example #3
0
 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));
 }